字节后端暑期记录
Timeline
4.11 一面
4.16 二面
一面(1h)
- 拷打实习,深挖了很多细节,比如为什么这么设计,当时做技术方案的时候考虑了哪些方面,当时的QPS是多少,用户流量是多少,整体链路耗时怎么观察的,第三方服务接入时考虑了哪些因素,goroutine池的配置当时是做了哪些考量
- Golang相关:
- Golang知道哪些并发模式,你觉得哪个更好,为什么
- 在使用channel的时候有哪些需要考虑和注意的地方
- 操作系统:
- 进程和线程的区别
- 线程里有哪些字段(被问住了,说的非常不好,扯了点TCB,然后又扯了goroutine中的字段,类比到线程中)
- 计算机网络(复盘的时候觉得这块回答的非常不好,面试官的问题都比较泛,自己没能很好的把各个知识点都串起来,有点想到啥说啥,很多其实自己知道但都没表达好):
- TCP和UDP的区别,各自的优劣势
- 什么场景你觉得用TCP更好,什么场景用UDP更好
- 为什么TCP更可靠
- TCP拥塞控制
- 问了一个很神奇的问题,10亿个int64在内存中存储,至少需要多少内存。觉得没那么简单,但自己又不确定,一直和面试官说内存对齐等等,最后心虚地回答了至少8*100000000个字节的内存。面试完一搜感觉就是这么简单(?
- 算法:输入一个非递减数组和一个target,找到target第一次和最后一次出现的位置,若没有则返回[-1, -1]。
- 问了下常规问题,最快什么时候入职,能实习多久
- 反问:
- 业务
- 后续面试安排
二面(50min)
氛围较轻松,全程0八股,主要从实习出发问问题,记录下几个印象深刻的问题
- 如果让你设计一个用户权限系统,需要维护缓存和数据库的一致性,你会怎么设计?(因为是权限系统,数据需要保证强实时性,从保证强实时性出发,以常规旁路缓存为基础做了一些修改,面试官很满意。)
- 前段时间支付宝出了一个线上bug,给不该打折的用户打了折,如果你在业务上遇到这种线上bug,你的排查和补救的思路是什么。(说了前期做好链路追踪和埋点,出了问题能快速定位并补偿,面试官补充说还应该观察服务投放的用户量是否符合预期等等做一些服务熔断操作,如quota配额)
- 展开聊了下redis哈希表的底层和设计,为什么原子,什么业务场景适合用redis的哈希表
最后一道算法题:k个一组反转链表