面试公司:山东二五六互联网科技有限公司
面试难度:较难
面试结果:未通过
面试岗位:java工程师
面试问题:
1.说下volatile关键字吧?说下JMM吧?JMM解决了什么问题?知道happend before吗?
2.说下进程、线程、协程吧?有了线程为什么要有协程?
3.说下Java中BIO和NIO吧?NIO是非阻塞的对吧?那你平时连接数据库使用的是BIO还是NIO呢?为什么不用NIO呢?
4.既然你提到了IO多路复用,那你说下Epoll的实现原理吧?什么是水平触发、什么是边缘触发?
5.说下你对事务一致性的理解?(楼主这里举了转账的例子,说一致性就是从一个正确的状态转移到另一个正确的状态比如转账总和不变。面试官说那么A一开始有500,B有500,A给B转账500块,现在A有1000,B有0,此时总金额也是1000,这是一致性吗?)
6.那你说下怎么保证原子性?持久性是怎么保证的?知道WriteAHeadLog吗?知道DoubleWriteBuffer吗?
7.说下TCP的三次握手吧。三次握手的阶段对应Java网络编程的哪个流程?服务器端的Accpet对应哪个流程?
8.说下你对CAS的理解吧!



