字节后端面经(已OC)
第一次在牛客发面经,发面经攒人品,希望能够帮助到有需要的牛友,不足之处请各位牛爷爷海涵
bg
某邮本硕,已有一段小厂实习+一段大厂实习,都是后端开发
一面
- 自我介绍
- 让介绍实习项目,开始吟唱。因为实习期间做的业务比较复杂,概念多,短时间内确实很难理清,面试官直接说他没怎么搞懂,但是不妨碍从项目引出八股~
- 你的业务中使用分布式锁的原因是什么?
- 如何解决redis分布式锁的单点故障问题?
- 除了redis的分布式锁,你还知道其他哪些分布式锁的实现?
- zookeeper实现分布式锁的原理?
- 你在xx(大厂)用到了RocketMQ,在xx(小厂)用到了kafka,那你说下两者的区别?
- 你说在消费者端实现了幂等性,如何实现的?
- 发生重复消息的场景是什么?
- redis持久化机制?
- 手撕:LRU
- 手撕完了让讲解代码,鼠鼠用的循环双链表+哈希表实现,面试官问必须用循环双链表吗,可以只用双链表吗,鼠鼠有点懵没get到意思,胡言乱语说循环双链表在O(1)时间复杂度能定位到尾巴,面试官说双链表+tail指针也行啊,鼠鼠立马表示赞同
- 反问环节
二面
- 自我介绍
- 你在xx实习期间,遇到过最大困难是什么?让结合业务背景+解决方案+用到的技术进行回答,讲解了比较久
- 看你实习期间用到的东西很多,那你redis和MQ哪个比较熟?鼠鼠选的MQ
- 又让说kafka和rocketmq区别,鼠鼠从应用场景、核心概念、架构上吟唱了一遍
- 手撕:线程安全的单例模式
- 针对手撕代码提问
- 为什么使用private修饰构造器?
- 除了private,还有哪些修饰符?
- 为什么getInstance()方法要写成static的?不写成static的会怎样?
- synchronized关键字为什么修饰方法?还能怎么用?有什么区别?
- 反问环节
三面
- 自我介绍
- 针对两段实习经历分别提问,都是业务强相关的问题
- 询问能到base意愿、到岗时间、实习时长
- 手撕:课程表
- 手撕完面试官让讲解代码,讲完后面试官说没什么问题,然后说今天就先到这,没让鼠鼠反问,吓得鼠鼠以为凉了
总结
已oc;
手撕真的很重要,字节三面技术面都会手撕,没撕出来真的会G;
LRU被考察概率是真高啊,面腾讯、饿了么、字节都考了,牛友们可千万别用个LinkedHashMap就完事了,面试时手撕肯定让书写双链表+hash表实现;
祝愿看到此面经的牛友都能面面都过,offer拿到手软Java
#牛客AI配图神器#