阿里实习Java面经
淘宝某部门面经, 可能有个别问题忘了,估计还有两面(不算HR)
一面
- JMM模型,Java类加载的原理
- Java运行时,什么时候会触发GC
- 数据库设计三范式
- Java Web相关(不会😥)
- 讲解常见设计模式,之后又专门问装饰器模式
- HashMap, HashTable区别,HashMap的优化
- 项目相关(Spark, Partition)
- 手写代码:实现Java中的线程安全阻塞队列
- 手写代码:leetcode 1247(想了挺长时间。。。)
二面
二面主要问项目,没写代码……
- 介绍项目,数据流向,项目选型
- Spark运行原理
- Spark和Hadoop的区别
- Spark的数据倾斜,以及解决办法
- 项目优化,什么问题,如何解决
- 项目GC调优,老年代垃圾收集器
- Linux命令:查看进程,删除过期文件
- Java的序列化
- 介绍Java NIO, Netty
- 搜索引擎原理,输入key之后的后台搜索过程
- 非技术话题(运动,英语)
三面
P9大佬面,各种进阶问题,一面代码题写的可以,二三面就不写代码了
- 聊项目,Spark优化 (聊了挺久)
- kafka在项目中的作用
- Netty实现了什么功能,内存原理,DirectBuf:说了Java NIO, Netty的架构,但是问的不是这个。又说了Netty封装的一些功能(时间处理,处理NIO BUG, 编解码器,错误处理…)。面试官又问Netty内存方面的东西,答ByteBuf池化,类似于操作系统伙伴系统的内存分配。又问DirectBuf, 答零拷贝,直接在操作系统分配内存。
- Java虚拟机的双亲委派模型,如何打破: 要挂就挂在这个问题,这个问题我竟然理解错了重点
- Java序列化,如何不让某个成员序列化:transient关键字
- OOM定位与解决(项目中遇到过):日志->jconsole->jmap->jvisuavm
- 数据库B+索引
- 搜索引擎倒排索引和数据库索引的区别 (没答好,二面面试官问的简单,三面想深入,只了解皮毛)
- 深度学习算法相关,剪枝的目的和原理(实验室组会听过论文,无奈对算法不感兴趣,说了目的,原理没说);梯度如何计算
- 未来发展,实习时间
交叉面
隔了快两个月的交叉面(进系统前面了三面,进系统时选了另一个部门,最终还是转回来了)。
- 介绍项目 (半个小时)
- RPC框架,远程服务端异常,客户端怎么处理
- 问问题,建议学习Spring框架