Go 学习方向

通过几次面试,来总结一些现在阶段,对于自己的职业规划的发展与思考!

​ 经历了三四次面试,收获挺大的。面试不是目的,只是一种过程,要在不断的面试中,找到适合自己发展的领域才是面试的目的!

1、现阶段发展的方向

​ 首先,Go 语言的云原生跟云中件发展是非常迅速的,而且 Go 语言社区中,讨论最多的也是云计算的发展,docker、K8S集群、普罗米修斯,都是云中件的代表,所以去学习其中设计的思想、源码的思想是非常重要的!

2、Go 面试

总结一下面试的问题:

1、数组与链表的区别(数据结构基础知识)

2、进程、线程、协程有什么区别 (操作系统的知识,加 Go 语言特有的协程)

3、Redis 与 MYSQL 熟悉吗,Redis 有哪几种数据结构,缓存过期(TTL 网络中的生存时间),Redis 一般使用在哪一些场景里面(针对热点数据进行缓存、限时数据缓存、热点权值数据进行缓存)

4、channel 有几种类型(自己回答是读、写、读写三种,不一定对,也可能chan int、string、byte)

5、控制 Goroutine 数量的几种方式(channel 控制,sync.WaitGroup 控制)

6、Go 语言调度模型:GMP 模型(hand off 机制没回答特别好)

7、Go 语言的 GC (标记清除法、三色标记法、混合写屏障机制)

8、Go GC 在什么时候会导致 GC 效率不高(STW 次数多的时候效率不高,毕竟依赖于 STW 机制)

9、TCP 的 CLOSE_WAIT 状态出现在那一步

10、slice 与 map 底层源码 (slice 底层为指针 Array 类型,Go 中的 map 是 slice + list 数组加链表,而 java 里面是最简单的是 数组, 规模达到一定程度转换为数组 + 链表或数组 + 红黑树的形式)

11、Go 语言的内存泄漏、内存逃逸问题 (内存逃逸就是栈上开辟空间存放的变量,逃逸到堆上去了,内存泄漏主要是看 OS 的环境, Linux 下使用 top/htop)

12、几道 Go 语言面试的题目:闭包传参、向空 slice append 数等

13、Go 语言如何 debug (自己回答是 采用单元测试的办法、pprof 等方式方法)

14、算法题目:三数之和,返回二维数组,二维数组内不能有重复值,即数组内元素相等

3、5 月 21 日温故而知新

1、Go 语言中协程出现了panic 的情况,有什么样的机制保证协程恢复并继续执行下去?

2、Go 语言中的调试信息使用什么查看?

3、Go 语言中的内存模型与内存回收机制

4、Go 与 Python 语言的协程对比有什么区别

5、Mysql 里面执行计划的概念(之前复盘都没有听出来这个问题,一个劲在说不知道)

6、redo-log、undo-log、bin-log 三个 log 文件的作用与区别,如何使用 redo 与 bin 两种日志去保证数据的一致性?

7、数据库出现过性能问题嘛,千万级数据量的表如何进行一个排查+ 处理

8、grom 操作数据库是如何操作的 ?

9、redis 中 AOF 与 RDB 两种快照日志主要是为了解决什么样的问题?

10、gin 框架的源码看过吗,里面路由具体的实现机制是怎样的

11、平时关注那样一些开源技术?


Go 学习方向
https://chaggle.github.io/2022/03/04/go/interview/direction/
作者
chaggle
发布于
2022年3月4日
许可协议