2027届实习AI后端开发一面-百度
面试题目
- 项目拷打
- 大模型和AI的使用广度
- java线程安全的集合
- concurrenthashmap的锁粒度
- cas存在的问题
- 解决哈希冲突的办法
- 最新的jdk版本的功能
- 分代垃圾回收器的工作原理
- 垃圾回收如何判断对象是可以被回收的
- 能作为gc roots的对象是什么
- java线程池的参数
- 线程池的拒绝策略
- redis分布式锁的实现
- 如何防止分布式锁死锁
- redis可重入锁
- redis常用数据结构和场景
- 常用设计模式和设计模式的好处
参考解析
- ConcurrentHashMap锁粒度:JDK 1.7采用分段锁(Segment),JDK 1.8及之后采用CAS+Synchronized,锁粒度精确到数组的头节点,提升并发性能。
- CAS问题:主要有ABA问题(通过版本号解决)、自旋时间过长消耗CPU资源、只能保证单一共享变量的原子性。
- GC Roots对象:通常包括虚拟机栈中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象、本地方法栈中JNI引用的对象。
- Redis分布式锁死锁预防:必须设置过期时间(TTL),防止客户端崩溃导致锁无法释放;使用Lua脚本保证加锁与设置过期时间的原子性。
- Redis可重入锁:通常基于Hash数据结构实现,Key为锁名,Field为线程标识,Value为重入计数器,获取锁时计数+1,释放时计数-1。