一直想发的,但因为一面面了 1h47min 让我整理面经就整理了好几天
小黑盒面试官有个特点,你要是没回答到他的点上,他就会打断你,会一直深挖
整个面试压力爆大,过程中大脑宕机重启宕机重启
一面
- 自我介绍
- 介绍下 GMP 是什么东西?
- 如果在早期的 GM 模型中,我们直接给每个 M 分配一个本地队列和上下文资源,不也能解决全局锁冲突的问题吗?为什么非得在 G 和 M 之间,再凭空造出一个 P 的抽象层呢?
- M 没法窃取吗?为什么非要 P?
- 如果 M 阻塞掉,P 会怎么处理?
- 怎么动态知道 M 会阻塞,并提前退回 P?
- M 被解绑后,它还有 P 吗?新接手的 M 是哪来的?
- 如果所有的 M 都进行了系统调用,程序会停止吗?存在这种情况吗?
- 在单核容器环境下( Docker/K8S CPU limit=1, GOMAXPROCS=1),一个纯 CPU 的死循环协程会不会导致整个 Go 程序的调度器瘫痪?
- 协程跟线程比有什么优势?
- 协程和系统线程在“上下文切换”时的真正开销差异到底在哪?
- 同一进程内的系统线程切换,会不会切换页表?
- 既然协程和线程切换都会换数据,凭什么说协程对 CPU 缓存破坏小?
- 操作系统难道就不会尽量让线程固定在一个 CPU 上跑吗?
- 进入内核态到底慢在哪?
- 说下GC的原理
- 怎么保证并发标记安全的?
- 是不是程序里每一次指针写入/赋值,都会执行写屏障操作?
- 如果每次指针赋值都要走一遍写屏障,开销难道不大吗?凭什么说它开销小?
- 如果我申请一块内存的话,那这个操作系统层面会发生什么?这个你了解吗?
- 这个 mmap 是申请内存的时候会去调用这个函数吗?
- 如果操作系统的话,他去调用这个mmap的话,他会它在底层又发生什么?
- 那就是说他不分配物理内存的话,也就是说我实际上可以去申请一个远超过物理内存一个内存并去使用它会怎么样?
- 触发 OOM 时,操作系统具体会做什么事?
- 释放内存它是是 OOM 的时候做的吗?(陷阱题)
- OOM 是怎么选择被 kill 的进程?
- 触发 OOM 的进程和最终被内核杀掉的进程,可以是不同的进程吗?
- 乐观锁与悲观锁在秒杀中的实际应用,乐观锁不加行锁吗?如果加,为什么还叫乐观锁?
- 乐观锁依赖 MVCC 吗?如果我把数据库隔离级别调成“读未提交”,关闭 MVCC,你的乐观锁还会生效吗?
- MVCC 的底层原理是什么
- 可串行化是怎么废掉 MVCC 的?串行化级别下,还会生成 ReadView 和 Undo Log 吗?
- MVCC + 临键锁为什么不能等同于可串行化?
- 到底有什么数据一致性问题,是“MVCC + 临键锁”解决不了,必须靠“可串行化”才能解决的?请举个具体场景。
- 问实习经历
- 实习期间有没有和 mt 某件事看法有冲突的,怎么解决的?
- 你怎么使用 AI 的?
- 各种AI工具使用下来有什么区别
- 那 AI 给的代码不是你的预期那怎么办?
三天后约了二面
二面
- 自我介绍
- 你觉得你在两个公司实习有什么收获吗?
- 那你做的这些需求当中,你觉得哪些是对你来说有挑战性比较大的?
- 三数之和的解题思路,时间复杂度多少,为什么?
- 还有其他方法吗?(哈希和DP)
- 为什么排序和双指针是最优的?
- 为什么两数之和的时间复杂度是 O(n)?
- 那我问一下这个题目,有一种解法是k log k的,你觉得这个比 n2 差还是好?
- 个人优缺点
- 为什么投我公司?
- 反问:对我感觉如何(数学不够扎实)贵公司以后会做游戏吗?(会往那方面发展)感觉贵公司的面试难度比大厂还高了(因为我们要招精英)哥,我们还会再见面吗?(笑了)
小黑盒的二面问题我看了之前的面经,二面就问这些问题,本来已经提前准备了,但CTO会根据你的说辞再深挖😀
听到二面对我的评价,整个人都凉了一大截不奢望小黑盒给我过了
小黑盒能发展的这么好也是有原因的,这面试强度,我真的燃尽了
全部评论
(2) 回帖