面试问题总结(一)Golang

Python034

面试问题总结(一)Golang,第1张

使用go语言的好处: go语言的设计是务实的, go在针对并发上进行了优化, 并且支持大规模高并发, 又由于单一的码格式, 相比于其他语言更具有可读性, 在垃圾回收上比java和Python更有效, 因为他是和程序同时执行的.

1. 进程, 线程, 协程的区别, 协程的优势

2. 讲一下GMP模型(重点)

3. Go的GC, 混合写屏障(重点)

4. go的Slice和数组的区别, slice的扩容原理(重点)

5. 讲一下channel,实现原理(重点)

6. 讲一下Go的Map的实现原理, 是否线程安全, 如何实现安全(重点)

7. new 和 make 的区别

8. 说一下内存逃逸

9. 函数传指针和传值有什么区别

10. goroutine之间的通信方式

11. 测试是怎么做的(单元测试, 压力测试)

12. 堆和栈的区别

于此之外还有读写锁,即

给⼀个 nil channel 发送数据,造成永远阻塞

从⼀个 nil channel 接收数据,造成永远阻塞

给⼀个已经关闭的 channel 发送数据,引起 panic

从⼀个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回⼀个零值

⽆缓冲的channel是同步的,⽽有缓冲的channel是⾮同步的