6.17 广州某小厂面经
《面试题目》
- 整体没有考八股,要求共享屏幕看你的项目和项目拷打,整体面下来对你的生产实战和运维能力,对代码的熟悉程度要求高,缺乏生产实践相关经验的面起来会特别吃力(主播面的依托,还是太菜了[牛泪])
- 💻面试岗位:java实习生
❓面试问题:
3. Vue 生命周期钩子是什么?
4. 为什么异步处理采用RcoketMQ?看一下消费者和生产者的处理代码,介绍一下处理流程?
5. 为什么要做这个项目,要解决什么问题,自己开发的的还是和跟着敲的?看一下你写的部分,介绍一下你做了什么?
6. 限流的操作,为什么采用令牌桶,不使用漏桶,二者的区别是什么
7. getDeclaredMethod + setAccessible(true) 这一行在生产环境里算不算违规的”暴力反射”?
8. (这里要区分是否在业务代码里面还是在AOP切面里面来说)
9. 为什么要用 @Slf4j 而不是直接 System.out.println?都能做相同的输出打印信息?日志持久化到哪里?
10. 代码逻辑有问题,没有报错堆栈,线上环境不能打断点,怎么排查,怎么看日志相关的东西?
11. 在只有一个文件夹的情况下,你会怎么使用AI从0到1开发一个项目,脱离”单文件、单功能”场景后,怎么用 AI 管理复杂度。
12. AI的skill了解吗,你自己有没有写过skill,介绍一下
13. 大型项目下怎么使用AI来辅助开发,不同的模块怎么开发?
14. openclaw有了解过吗,有没有自己去使用过开源的那个openclaw,hermes了解是什么吗?
🙌面试感想:
几个提醒的点: 15. 对于本地的项目在运行前,一定要把生产环境先搭建好,主包这里把一些中间件放在WSL的docker容器里面,但是之前关闭了虚拟化机制,导致虚拟机无法启动,项目演示无法成功演示,不要学习主包的人机操作,一定要保证项目能够正常运行,并且能够演示起来 16. 网上找的项目(不管是github还是买的项目),一定要自己新创建一个仓库,重新初始化一遍git相关的东西,面试官会问起你编写的代码部分,然后看到你的git日志没有自己的分支和对应的代码修改提交记录,会很扣面试官的印象分,基本上就认为你在瞎编的了,面试基本上挂了(不要学习主播的人机操作[牛泪]) 17. 对于项目的运作流程和核心逻辑一定要吃透,对代码的熟悉程度要高
《参考解析》
-
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(嵌套事务)等。
-
JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。
-
消息队列:消息队列解决异步解耦、流量削峰。消息可靠性:生产者confirm确认;Broker持久化;消费者手动ACK。幂等性:消费端通过唯一ID+Redis或DB乐观锁实现。顺序消息:同一业务Key路由到同一分区/Queue,单线程消费。消息积压:扩消费者+增加分区+临时跳过非关键消息。