一、一面技术面:
1、solr全文索引;
2、写一个二分查找;
3、HashMap数据结构(JDK1.8为红黑树->并未看1.8的源码)问的很细,最后会问桶下面只能有链表实现吗?就是想问1.8的实现;
4、MySQL优化和索引;
5、spring的DI,IOC、AOP;
6、mybatis相关;
7、redis数据结构,持久化,最后问了一个分布式锁(我用redis实现:设置锁,设置超时时间,出现异常->超时自动释放锁);
8、synchronized和lock的区别,和内存实现,乐观锁和悲观锁;
9、线程相关;线程的实现,各种状态等;线程池的问题没有答上来;
10、volatile关键字只能保证可见性和有序性,原子性要用到synchronized加锁;
11、jvm相关:jvm内存结构,String a=new String("abc")->内存实现;类加载过程,各个属性都在哪?
12、通过jvm引出异常,error和exception,聊各种异常->怎么实现的异常,怎么处理
13、Linux查看进程等;ps aux|grep java 看进程;jstack 1523 > 1523.log将tump文件输出到日志文件中;
总结:感觉答得最不好的是jvm这块,后续会加强.
提点:技术就是那些技术,但是不要为了面试而面试,多去看一看底层原理怎么实现的有了自己的理解