golang基础知识面试点

114 阅读1分钟

- 介绍下Go语言的GMP模型

1、什么是GPM模型,有什么作用

- golang通过goroutine(携程)来实现高并发,GPM是Golang实现携程的调度策略,是Go实现Goroutine的设计模型,
- 包括三个组成部分Goroutine(调度器程)、、Machin(线程) 、Processor(处理器)
     G:表示goroutine,每个goroutine都有自己的栈空间,定时器,初始化的栈空间
     M:抽象为内核线程,记录系统内核线程栈信息,从P上获得Goroutine执行
     P:调度器,负责维护一个本地的goroutine队列

2、GPM模型的前身GM模型

- go语言早期的版本中,携程的实现模型还是GM模型,

3、为什么要从GM模型升级到GPM模型

- 对GO语言的channl使用要注意什么

  • channl管道用来做并发时携程间通信

- Go中数组和slice的区别

  • 数组是固定长度的,初始化时需要定义长度,slice的长度是动态扩展
  • 数组是地址传递,slice是值传递

- Go中new() 和 make 有什么区别

- Go中Map的底层实现

- Go的内存管理