上海景行智合安全技术Java实习面经(接offer了,实在面不动了)

某互联网公司 · Java开发工程师 · 一面 · 山东 · 2026-06

《面试题目》

  1. 8投递
  2. 8约一面
  3. 8一面面试
  4. 8约二面
  5. 8二面面试
  6. 一面:22min,面完秒约二面
  7. 自我介绍
  8. 讲一下Agent项目
  9. 用友的实习项目挑两个个人产出讲一讲
  10. 实习产出我看你写了用线程池并行查询,能详细说一下你怎么设计的并行方案吗,线程池的参数你是怎么设计的,并行化的过程中有没有遇到哪些挑战
  11. 实习产出我看你写了用lua脚本和Redission分布式锁他们分别解决了什么问题,为什么不能只用一种呢
  12. 实习产出用到了TTL,那ThreadLocal和tableThreadLocal和TransmitterThreadLocal有什么区别,为什么在异步线程下前两者会失效
  13. Synchronized和Reentrantlock区别
  14. 线程池的拒绝策略有哪些
  15. 索引失效有哪些
  16. 如何解决慢查询问题
  17. Spring @Transactional 事务注解失效有哪些场景
  18. 反问:岗位业务
  19. 反问:几轮面试
  20. 反问:面试评价
  21. 面试官主动说了薪资待遇和其他一些基本信息(一天200,包住,早九晚六,双休)
  22. 最快什么时候入职
  23. 二面:13min,忘录音了,凭记忆说了
  24. 自我介绍
  25. 你学Java是以什么方式学的,学了多长时间
  26. 你自学项目总共学了多长时间
  27. 你班多少人,你觉得你在你们班能排第几(就想起来这些,然后还有一些非技术问题)
  28. 集合种类有哪些,他们各自适配的具体业务场景有哪些
  29. 事务注解通常放到哪层,为什么
  30. 讲一个你认为你在实习或者写项目遇到的难点
  31. 你认为你是有着什么样特性的人
  32. 反问:有三面吗

《参考解析》

  1. MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。

  2. Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。

  3. Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。

  4. Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。