百度2023暑期实习Java面经(已OC)
4.4 一面
Java
- 对象分配,一般new出的对象都在堆上,什么时候会在栈上分配
- 标量跟聚合量这两个的定义
多线程
- JVM给对象分配内存时,会有多线程并发问题,怎么解决内存分配过程中的线程安全性
- 抛开JVM分配内存的这个动作,JAVA里如何保证线程安全,你知道有哪些机制吗
- synchronized和reentrantlock区别是什么
- CAS缺点
- 在主线程new一个异步线程,异步线程出现异常,主线程怎么能catch到这些异常
- 如果我不想用future.get,我不想阻塞主线程,那还有方法吗
设计模式
- 装饰模式,它跟代理模式有什么区别
算法题
- 实现LRU,要求get和put的时间复杂度是O(1),用什么数据结构,思路
- 双向链表+hashmap,Java:LinkedHashMap
- 链表里的节点:key,value,previous,next
4.7 二面
多线程
- 怎么用多线程,在什么场景使用,中间遇到什么问题,怎么处理的
- 多线程数据同步有什么方法
- 线程池有什么,有什么区别
- 线程池参数
- 阻塞队列满了之后,线程池怎么处理
MySQL
- 事务概念
- 索引失效的场景
- 讲了联合索引
- 那单个索引呢
Redis
- 缓存雪崩,击穿,穿透分别是什么,怎么避免
- Redis实现分布式锁
计算机网络
- TCP与UDP协议的区别,以及应用场景,展开问了很多。
算法题:
- 怎么检测链表成环?如果不成环的话,边界条件是什么,怎么就结束了?
4.11三面
Java
- 常见的垃圾收集器,
- G1 特点
- 程序内存溢出,排查方法是什么
- 多线程编程,怎么控制线程的执行顺序
- 锁机制,什么是悲观锁,实现方式是什么
- Java锁对synchronized的优化过程
- 泛型
MySQL
- 索引的原理
- 联合索引,什么时候失效
- 怎么看有没有走索引
- 用java怎么操作数据库,怎么实现事务,代码怎么写
场景题
- 一个非常大的文件,多行,每行有多个字符串。怎么找出出现频率最高的字符串,以及出现次数。只用一台机器,内存有限。
- 实现一个平台,收集大量的日志,怎么实现收集、存储、检索;存储方式就意味着检索方式。
4.14 收到测评邮件和hr电话
4.18 收到正式邮件
#百度信息集散地#