【Java后端】菜鸟一面+二面
一面4.7号下午两点钟电话面,将近一个小时。
1.项目数据库做了什么优化(提到了慢查询和explain,举例子遇到过什么慢查询,最后怎么优化的),explain一般看哪几个字段;mysql表大概有多少数据量。
2.mysql索引底层数据结构聚簇索引和非聚簇索引叶子结点存的值分别是什么。
为什么用B+树而不用其他的(B树,红黑树)ICP对于聚簇索引能生效吗?
mysql事务隔离级别。
可重复读会去加什么锁,比如说查询某个字段的时候(应该是next-key lock,但是没有复习到,提到了MVCC),MVCC底层原理。
RR级别写怎么加锁,锁是锁数据还是锁索引。
间隙索引了解过吗?
3.为什么项目中用了mysql还用了hbase,如果说一条数据插入mysql成功插hbase失败怎么办?
4.分布式事务 ,有哪些常见的解决方案
5.hbase做持久化,有没有考虑过mysql分库分表。
分库分表怎么实现的(有个表很大,要分成1024份表,根据什么字段分表)。
假设已经分表了,按某个查询去查,查出来的结果希望是按照某字段有序的,那在不同表中查询出来的结果如何保证有序( union,orderby,limit),要union一千多张表呢?
6.一个链表奇数位升序,偶数位降序,如何将链表最终变成降序的。
有一个文件,80个G,每一行都是一个ip地址,在大文件中找出出现次数最多的前50个ip地址,内存最多1G。
n种硬币,比如说有面值1,5,20,25的四种硬币,每一种数量无限多,要给定一个整数,比如40,想求出最少用多少个硬币使得硬币的面值之和刚好是40。(DP)
7.TCP如何实现可靠传输的(三次握手完传输数据的过程中如何保证可靠性传输)。
四次挥手为什么要在TIME_WAIT后还要等一段时间才彻底的close掉。
8.java线程安全的机制有哪些。
JDK的lock类如何实现公平锁和非公平锁的。
线程池几个重要的参数,底层怎么实现的。
9.常见的分布式锁的实现方案有哪些
10.学校有参加过什么比赛?有没有发论文。
有主动学习或研究过什么技术吗(说到了看netty源码,RPC底层基本上都用netty,微服务)
netty现在有什么心得?如何这么高效的实现传输。
11.反问
4.13晚上九点四十多打电话要面试,当时正在玩奥德赛。。。10点开始,40分钟左右
1.你觉得你的优势是什么,项目中有哪些压力,碰到那些技术难题(一开始还以为是hr面)
2.netty看过netty细节原理么?BIO,NIO,AIO区别,100个连接创建有多少个线程?基于Nio呢?
3.tcp拆包粘包
4.netty为什么高效
5.链表的二分查找
6.一个很长的数组,比如长度几个亿,堆排快排肯定有问题,怎么更快的排序
7.找出一棵树两个节点的第一个公共祖先
8.一个递增数组,一个整数N,如何找出一个二元组,这二元组的两个值相加等于N,三元组呢?
9.mysql索引为什么不用红黑树而用b+树
10.计算机网络TIME_WAIT和CLOSE_WAIT,为什么是2MSL
11.操作系统页和段