Golang Interview Questions part II
2018年9月15日
09-14 面试总结
面试题
公司1
- 介绍项目,项目的一些细节问题
- 定时任务处理设计
- 对k8s的理解
- golang一些基础知识
- mysql 的联合索引的使用情况
- Golang 锁知道的有哪些(互斥锁,读写锁)
- Golang 遍历map无序为啥无序。
- goroutine 什么时候会触发调度
- channel阻塞的时候
- 写入磁盘的时候
- 从网络读写数据的时候
- runtime GoSched 方法
- Lock 临界区的时候
select 和 epoll 的区别
- 支持的fd的数量不同
- 等等
MySQL 数据库隔离级别
- 未提交读 脏读
- 提交读
- 可重复读 幻读
- 串行化
MySQL 如何解决的幻读
- 用的间隙锁(啥是间隙锁)
Golang make vs new
lock 和 atomic 那个快
- atomic 因为是硬件级别的
Goroutine 的调度, M 的最大个数(1万)
- G M P 结构
公司2
- 介绍项目
- 请求调用方式
- golang slice 和 数组的区别
- LRU 如何实现
- nginx 是否了解
- websocket 是否了解
- 对Linux的了解
- 对NSQ的理解
NSQ 同步数据异常处理,超时控制
- 异常处理用defer, 每个goroutine一个defer
超时控制用channel
1
2
3
4
5select {
case <-ch:
case <-time.After(5 * time.Second):
return
}
- 用两个栈实现一个队列
- 二叉查找树的时间复杂度 O(logn)