一份oppo后端Java社招面试经历和总结
一面(技术面)
1、自我介绍+项目经历介绍
2、重点聊了下自己最熟悉的项目,架构,组网,性能,瓶颈
3、Java常见集合的实现方式,说下常用的设计模式,并举例使用到的场景,手写懒加载线程安全的单例模式
4、Redis中的常见数据结构类型,Redis实现持久化的方式,优缺点以及使用场景
5、大数据和高可用在项目中涉及的点
6、MySQL主备同步的原理,怎么实现高可用?
7、client调用A服务,A服务依赖于B服务,在不知道B是否高可用的情况下,怎么保证A的高可用?
8、jvm的内存模型,jvm的运行时数据区,有没有jvm的线上调优经历?
9、回到项目的性能数据上,有没有仔细去调研过这个接口的时延的分布是怎么样的,按照28法则,肯定是某个方法耗时比较多,有没有针对这种场景的分析?
项目接口的性能时延是30+ms
二面(项目经理面+技术面)
1、有没有带人的经历,对于不上道的人,一般怎么带?
2、为什么你能胜任这份工作?
3、你说你优秀,你的优秀体现在项目的什么地方?
4、怎么在字符串池中查找给定的字符串?
5、B树有没有了解?MySQL索引的数据结构是什么?MySQL的数据存储机制是什么?如何处理数据中的脏页?
6、解释下分布式系统中的cap理论,怎么保证ca?
总结
1、项目经历一定要准备好,目前市面上招聘基本上要求都是高并发,大数据,高可用。所以在你的项目中有哪些体现一定要提前准备好,并适当挖坑。也就是说目前还有哪些优化点可以做但是目前没有做。
2、Java的基本功一定要扎实,不是说数据结构和算法要多么精通,但是至少Java中常见的集合的原理要知道,源码要过一遍,使用场景要了如指掌
3、Java多线程,线程池的实现,并发包下面涉及到的经典工具,AQS,CAS,两种锁的实现,常用的并发工具,阻塞队列
4、jvm的内存模型,HP原则,内存可见性;jvm类加载机制,类的加载过程;jvm的运行时数据区;Java gc的实现
5、ssm框架的实现原理
6、redis等中间件的数据结构,使用场景
7、高并发场景的常见处理手段
8、高可用系统的设计
9、分布式系统的设计,cap理论,分布式系统在实际场景中的运用;
#OPPO##Java工程师##面经#