golang面试题整理

1、go的调度

2、go struct能不能比较

因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型

3、go defer(for defer),先进后出,后进先出

func b() {fori :=0; i <4; i++ {        defer fmt.Print(i)    }}

4、select可以用于什么,常用语gorotine的完美退出

golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作

5、context包的用途

Context通常被译作上下文,它是一个比较抽象的概念,其本质,是【上下上下】存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine

6、client如何实现长连接

server是设置超时时间,for循环遍历的

7、主协程如何等其余协程完再操作

使用channel进行通信,context,select

8、slice,len,cap,共享,扩容

append函数,因为slice底层数据结构是,由数组、len、cap组成,所以,在使用append扩容时,会查看数组后面有没有连续内存快,有就在后面添加,没有就重新生成一个大的素组

9、map如何顺序读取

map不能顺序读取,是因为他是无序的,想要有序读取,首先的解决的问题就是,把key变为有序,所以可以把key放入切片,对切片进行排序,遍历切片,通过key取值。

10、实现set

type inter interface{}typeSetstruct {    m map[inter]bool    sync.RWMutex} func New() *Set{return&Set{m: map[inter]bool{},    }}func (s *Set) Add(item inter) {    s.Lock()    defer s.Unlock()    s.m[item] =true}

11、实现消息队列(多生产者,多消费者)

使用切片加锁可以实现

12、大文件排序

归并排序,分而治之,拆分为小文件,在排序

13、基本排序,哪些是稳定的

14、http get跟head

点击链接,查看更多面试试题~

你可能感兴趣的:(golang面试题整理)