查看原文
其他

字节三面过了!

小林coding 小林coding 2022-01-06

大家好,我是小林。

昨晚收到个读者的喜事,在秋招中,过了字节的三面,已经稳的了。
我简单跟他聊了下,他说他在备战的时候,他对于操作系统和计算机网络的学习,都深入的非常底层,不至于表面的理论知识,所以他在面试的时候,就会让面试官有很深刻的影响,屡试不爽。
三面字节的面经也整理好了,这次就先分享下面经,等过几天再分享学习路线和心得,大家期待下就好啦。

一面 1h5min

  1. 项目?缓存一致?为什么更新?本地是广播消费?消费失败怎么办(重试,还不行就数据库兜底重发,然后人工干预)?缓存预热?缓存数据有多少?能存多少?

  • 优化:拆分服务后本地缓存分批存?不同服务对应存不同本地缓存?消费失败可以不用兜底?

  1. mq的作用?幂等和防止重复?消息丢失怎么解决?

  2. get、put、post区别?哪个是幂等的? 幂等详解?

  3. http不同版本区别?要说到QUIC的握手时机不同

  4. QUCI发送过程?(很底层,包括重复发送那一块)

  5. 内存淘汰策略?缓存数据过热?数据结构?

  6. 隔离级别怎么保证可重复读?mvcc和间隙锁

  7. 索引区别?innodb解决幻读?

  8. hashmap线程不安全在哪里?1.8hash为什么高效?

  9. 锁升级?很细?可重入锁源码(status?)?公平锁非公平锁源码区别?对象头结构详细?.

  10. synchronized 和lock区别?synchronized 怎么加锁的底层?monitor对象?两个队列?非公平竞争?

  11. volatile?MESI?为什么MESI还要volatile?(语言层面volatile,lock前缀?系统层面MESI,JMM模型映射,内存屏障,总线风暴?提一下MESI优化的那两个队列所有要用内存屏障进一步保证)

  12. 算法说思路:整数数据取中位数(我说数据量不大就排序根据奇偶取中间?优化可以排序到中间就判断,不用全排序?骚操作可以放redis里?)没有刁难我

二面 1h

  1. 项目陈述?

  2. 为什么canal?canal解耦,懒加载,自带的顺序发送?为什么保证更新顺序这里不可以用mq消息版本?

  3. canal是单独节点部署的么?

  4. 可不可以不用mq?各个本地节点都载入canal?k8s sidecar挂载?

  5. mq可靠性?从发送到持久化到广播消费(定时任务(第三方控制速率) + 查库 ,优化 延迟消息 这里可以argue)

  6. 本地缓存优化?缓存预热?为什么更新?最终一致?

  7. 重复消费那里?顺便说一嘴弱校验

  8. 算法:一个数组和一个K,数组A{1,1,1,0,0,1,1,0},K=2,能让最多K个0变为1,问连续1最大是多少?滑动窗口

  9. 多嘴说了OS伪共享,秀了一下os,说Java的并发框架有用字节填充来实现Cacheline填充

    总结,项目这里漏说了分布式锁,但是这些已经说了四十分钟了,最后就做题了

三面1h15min

  1. 有没有别的offer?

  2. 成绩怎么样?为什么不考研?

  3. 说下项目?

  • 工作流怎么设计?原来是怎么样的?提供外部系统是怎样的?优化业务嵌入数据是咋样的?

  • 缓存存什么?数据结构是怎么样的?缓存大小,大小优化?怎么高可用?

  • 缓存预热是咋样的?spring启动怎么保证的?数据启动前不会被写入?

  • 分布式锁?原子性,过期时间,单点,红锁,npc

  1. 进程间通信?源码分析?管道实现?

  2. mysql怎么回滚的?

  3. redo,undo,bufferpool,宕机时候的两阶段判断

  4. 数据包发送,mac,arp,子网,路由转发,ringbuffer,数据拷贝

  5. 线程交替输出

  6. 多线程每秒1000次访问,超过则false,没超过返回true

  7. 反问:

  • canal k8s部署sidecar的看法 说综合考虑人力和业务,没有最好的方案


大家有没有发现,数据库问的不少呀,而且都是底层的原理,小林得抓大力度把图解 MySQL 搞出来!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存