字节跳动后端开发面试经验分享
📍面试公司:字节跳动
🕐面试时间: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)。
#发面经攒人品#
🕐面试时间: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
相关推荐

点赞 评论 收藏
分享