字节跳动后端开发面试经验分享

📍面试公司:字节跳动  
🕐面试时间:9月5号  
💻面试岗位:后端开发  

❓面试问题:  
**一、八股**  
1. Java中synchronized和ReentrantLock的区别?底层实现原理是什么?  
2. JVM垃圾回收算法中,G1和ZGC的适用场景和优缺点是什么?  
3. Spring Bean的生命周期是怎样的?哪些扩展点可以干预?  
4. MySQL的索引为什么使用B+树而不是B树或哈希表?  
5. Redis的缓存穿透、雪崩、击穿分别是什么?如何解决?  
6. 什么是RPC框架?Dubbo和gRPC在设计理念上的区别是什么?  
7. Kafka如何保证消息的顺序性和可靠性?  
8. 分布式ID生成方案有哪些?雪花算法的实现原理和缺陷是什么?  
9. 如何实现一个高性能的延迟任务系统?  
10. 谈谈你对Service Mesh的理解,比如Istio的工作原理。  
11. Java中ThreadLocal的原理和内存泄漏问题如何避免?  
12. 数据库分库分表后,如何解决跨库查询和分布式事务问题?  
13. 什么是最终一致性?如何通过消息队列实现?  
14. 微服务架构中,如何设计API网关的限流和熔断策略?  
15. 谈谈Java类加载机制,双亲委派模型被破坏的场景有哪些?  

**二、项目**  
1. **仿拼多多拼团项目**:  
   - 如何保证分布式环境下库存扣减的强一致性?  
   - 针对瞬时高并发流量,系统做了哪些限流或降级措施?  

2. **AI Agent项目**:  
   - 在多轮对话场景中,如何管理Agent的上下文状态?  
   - 如果Agent任务执行超时或失败,如何设计重试和补偿机制?  

**三、手撕**  
1. 力扣279.完全平方数:给定正整数n,找到若干完全平方数(如1,4,9,…)使得它们的和等于n,返回最少需要的个数。  
   - 示例:n=12,输出3(12=4+4+4);n=13,输出2(13=4+9)。  
   - 思路:动态规划,dp[i]表示和为i的最小平方数个数,状态转移方程为dp[i]=min(dp[i], dp[i-j*j]+1)。  

#发面经攒人品#  
全部评论
接offer
点赞 回复 分享
发布于 昨天 15:35 陕西

相关推荐

昨天 11:40
门头沟学院 Java
点赞 评论 收藏
分享
评论
7
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务