百度AI后端开发日常实习一面面经
面试题目
- 项目拷打
- 大模型和AI的使用广度
- java线程安全的集合
- concurrenthashmap的锁粒度
- cas存在的问题
- 解决哈希冲突的办法
- 最新的jdk版本的功能
- 分代垃圾回收器的工作原理
- 垃圾回收如何判断对象是可以被回收的
- 能作为gc roots的对象是什么
- java线程池的参数
- 线程池的拒绝策略
- redis分布式锁的实现
- 如何防止分布式锁死锁
- redis可重入锁
- redis常用数据结构和场景
- 常用设计模式和设计模式的好处
- 慢查询sql的排查思路
- 常用git命令
- 算法题:螺旋矩阵
参考解析
- ConcurrentHashMap锁粒度:JDK 1.7使用分段锁(Segment),JDK 1.8及之后采用CAS + synchronized,锁定的是哈希桶的头节点,锁粒度进一步细化,并发性能更高。
- CAS存在的问题:主要有ABA问题(通过版本号解决)、只能保证一个共享变量的原子性、循环时间长开销大。
- GC Roots对象:通常包括虚拟机栈中引用的对象、本地方法栈中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象。
- Redis分布式锁防止死锁:使用 SET key value NX PX 30000 设置带过期时间的锁,确保即使业务崩溃锁也能自动释放;同时使用 Lua 脚本保证加锁释放锁的原子性。
- 慢查询SQL排查:开启慢查询日志记录、使用 EXPLAIN 分析执行计划查看索引命中情况、优化索引结构、避免全表扫描或深分页查询。