爱学习Java后端日常一面

某互联网公司 · Java开发工程师 · 一面 · 陕西 · 2026-05

《面试题目》

  1. 一、个人与基础问题
  2. 做个自我介绍
  3. 为什么学Java后端?
  4. 项目是自己做的还是跟别人?
  5. 前端技术栈知道哪些?
  6. Redis、MySQL、ES等中间件怎么部署?
  7. Git、Linux命令掌握情况?
  8. 项目能不能远程演示?
  9. 二、项目技术问题
  10. 用户表结构怎么设计?
  11. 实名认证怎么做的?对接了哪家?
  12. ES在项目里用来干嘛?存了什么?
  13. 分布式锁的本质是什么?
  14. 哪些技术可以实现分布式锁?
  15. 不用Redis怎么实现分布式锁?
  16. MySQL能不能做分布式锁?怎么做?
  17. Redis有哪些数据结构?各自用途?
  18. 看代码题:10线程count++,用volatile有什么问题?
  19. volatile关键字作用是什么?
  20. 什么是指令重排?
  21. 怎么修复count++问题,保证结果正确?
  22. 滑动窗口+Redisson怎么防止短信接口被刷?
  23. 大量不同号码一分钟各刷一次怎么防?
  24. 身份证加密存储,怎么实现模糊搜索?

《参考解析》

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