28届转转java实习凉面
《面试题目》
- 自我介绍
- hashmap底层
- concurrenthashmap为什么线程安全
- 哪些操作是cas哪些是上锁,扩容的过程
- synchronized和ReentrantLock,底层和技术选型
- mvcc的实现和事务隔离级别
- 有没有过实习
- 问ai和拷打项目,我的项目是传统项目,拷打的就是高并发下的缓存问题和安全问题,和压测结果
- 也问了ai相关的问题,我直接说的不了解
- 第一次正式的面试,每一个问题我都感觉我准备的三遍以上,但是紧张的东想一句,西想一句,回答的很没条理
- 挺伤心的,好不容易的机会,也准备了怎么久,却回答的很不好,面试前我以为我会是一回答问题就可以把所有联想到的东西一串说出来,但是现场脑子却是空空的
- 下一次面试前我要把所有问题整理成可以直接吟唱的八股文,成为面试大神[发火]
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。