深势科技 java 一面面经
《面试题目》
自我介绍
MySQL
- 讲一下 MySQL 的存储引擎。
- InnoDB 和 MyISAM 有什么区别?
- 讲一下 MVCC。
- MVCC 是为了解决幻读吗?
- 你在学习 MySQL 的过程中,觉得哪一部分比较难?
- 如果出现慢 SQL,你会从哪些方面排查?
explain里你重点看哪些字段?- 慢 SQL 一直慢和偶尔慢,处理思路有什么不同?
- 偶尔慢的 SQL 你觉得可能是什么原因?
- Java 并发 / JUC
- 你用过 JUC 下面哪些类?
- 你项目中哪里用到了线程池?
- 为什么检索场景要用异步?
- 你项目中 MCP 用来做什么?
- MCP 的主要作用是什么?
- MCP 还有哪些功能?
- MCP 有哪些实现方式?
- 你们项目用的是哪种 MCP 接入方式?
- 讲一下你项目里的三层记忆架构。
- 上下文记忆、checkpoint、长期记忆分别是什么?
- 为什么长期记忆采用“文件为本,数据库只做索引”的设计?
- 你项目里的分库分表是怎么设计的?
- 你说的自定义分片算法具体是什么?
- 分布式 ID 是自己设计的吗?
- 你用的分布式 ID 方案是什么?
- 算法 / Coding
- 零钱兑换 dp 忘了怎么写
- 换题:三数之和。
秒过约二面
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。
-
算法题解析:常用算法思路:动态规划(状态转移方程,自底向上);BFS/DFS(图遍历,BFS找最短路,DFS回溯);双指针(有序数组去重/两数之和);滑动窗口(子串/子数组问题);二分查找(有序或单调性)。时间复杂度分析:关注最坏情况和平均情况。