前言
娱乐圈有“男神收割机”“女神收割机”。同样程序员圈子也有“Offer收割机”。
想必大家都有面试的经历吧,但是你有面一个拿一个offer的经历吗。或许听起来很离谱,但是也确实有这样的事情,毕竟万事皆有可能。之前我在网上认识的一位网友,我们有一天下午聊天的时候聊到面试这块,他跟我说了他的面试经历:他面了饿了么、阿里、京东、拼多多、爱奇艺,听着好像很简单的样子,但是别人背后付出的可能是你的百倍千倍。好了废话不多说。现在我开始写面经,希望能帮助到大家!
首先,他先是去面了阿里
一面
自我介绍后,直接开始问多线程相关问题。大概问题如下:
1.为什么要使用多线程?多线程需要注意的问题。上下文开销、死锁等。
2.java内存模型、导致线程不安全的原因。
3.volatile关键字,缓存一致性、指令重排序概念。
4.synchronize关键字,java对象头、Markword概念、synchronize底层monitorenter和moniterexit指令。
5.lock语句和synchronize对比。
6.原子操作,CAS概念、相关参数。
7.乐观锁、悲观锁概念及使用场景。
8.线程池概念、实现原理等。
9.JVM锁的优化,偏向锁、轻量级锁概念及原理。
10.多线程方面回答得比较好,面试官反馈比较满意。
然后就是数据库相关的:(其实没这么多,有些是我整理的,挑了一些概率大的题目,仅参考)
1.在MySQL中ENUM的用法是什么?
2.CHAR和VARCHAR的区别?
3.为什么事务可以优化数据库?
4.Mysql的数据库引擎,区别特点
5.数据连接池采用了什么设计模式?意义是什么?
6.项目用到什么数据库?隔离级别?每个隔离级别各做了什么
7.数据库的索引?mysql不同引擎索引的区别
8..索引使用的注意事项
9..数据库挂了怎么办?除了热备份还有什么方法?
10..接上面场景题:服务器挂了,优惠券还没发怎么办?
11..数据库挂了怎么办?
12..数据库优化中,有一个关键字可以分析执行过程,知道么(explain关键字)?
13..数据库优化有什么了解?
14..索引的原理说一下吧。
15.联合索引,如果联合索引(a,b),现在查询a>0,b>0可以用到这个联合索引么?(太久没看,生疏了,答错了,答案应该是不能,只能用到a的索引,范围索引只能用到一列)
16.Mysql集群数据是怎么同步的?
17.Select,poll,epoll的区别。
还围绕了项目架构、Java基础、JVM、并发编程、中间件技术和Dubbo服务治理框架等展开。(题目不怎么记得了)
二面(问得比较深入,问题也是格外的令人头疼)
JVM方面
1.java内存模型,五个部分,程序计数器、栈、本地栈、堆、方法区。
2.每个部分的概念、特点、作用。
3.类加载的过程,加载、验证、准备、解析、初始化。每个部分详细描述。
4.加载阶段读入.class文件,class文件时二进制吗,为什么需要使用二进制的方式?
5.验证过程是防止什么问题?验证过程是怎样的?加载和验证的执行顺序?符号引用的含义?
6.准备过程的静态成员变量分配空间和设置初始值问题。
7.解析过程符号引用替代为直接引用细节相关。
8.初始化过程jvm的显式初始化相关。
9.类卸载的过程及触发条件。
10.三种类加载器,如何自定义一个类加载器&#