初创公司Java后端面经
《面试题目》
- 技术面(八股盛宴)
自我介绍&项目介绍
spring 2. spring如何实现依赖注入
依赖注入的具体流程 3. 如何把类注册为bean
bean的生命周期 4. beanfactory和factorybean的区别
如何解决循环依赖 5. 说一下spring三级缓存,说一个spring三级缓存无法解决循环依赖的场景
mysql
如何优化sql语句
索引的底层是什么
说一下b+树的特性
说一下联合索引
如何设计联合索引 6. 什么情况下会导致事务失效 7. 在事务里面加锁会导致什么问题 8. 说一下事务的隔离级别 9. 事务的底层,代理是如何实现的
说一下mvcc 10. 说一下缓存三剑客以及对应解决方法
布隆过滤器原理 11. 那么删除数据时布隆过滤器如何变化? 12. 传统布隆过滤器的缺陷以及解决方法
redis 13. 项目遇到的最大的困难和挑战 14. 为什么使用lua脚本,解决什么问题? 15. 说一下redis的数据结构和应用场景 16. 说一下redis的过期策略和内存淘汰策略
消息队列 17. 说一下你了解过的消息队列
具体架构是怎么样的
说一下交换机的类型 18. 如何保证消息的有序消费 19. 了解python&大模型&智能体吗
说一下大模型原理 20. 说一下你对智能体的了解 21. vibe coding了解吗 22. 进来后需要你做agent开发,可以接受吗 23. 业务,面试结果什么时候出 24. ------------------------分割--------------------------
leader面
初创公司画一下饼 25. 你是如何缓解工作/学习压力的 26. 本硕专业为什么不一致 27. 说一下你对金融行业的了解 28. 说一下你了解的公司他们刚开始是如何发展的 29. 实习了俩月跑路了。。。初创公司很多雷,不建议去0-20或者20-99人的公司 30. 离职竟然还要实习生签竞业协议,恶心人,而且做的东西我很不看好,估计过个一年左右发不出工资了就要倒闭了
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。
-
消息队列:消息队列解决异步解耦、流量削峰。消息可靠性:生产者confirm确认;Broker持久化;消费者手动ACK。幂等性:消费端通过唯一ID+Redis或DB乐观锁实现。顺序消息:同一业务Key路由到同一分区/Queue,单线程消费。消息积压:扩消费者+增加分区+临时跳过非关键消息。