科大讯飞一面、贝壳面经一、二面
科大讯飞一面:
自我介绍
网络协议:
DNS域名服务器单次程耗时50ms,客户端到服务端耗时10ms,后端逻辑1s,共计耗时多少?(后端1s+IP获取100ms+TCP30ms+信息往返20ms,提到RST等知识点,不知正确与否)
HTTPS过程(TCP三次握手后,客户端发送加密协议等信息通知服务端,服务端制造证书和公钥发送给客户端,客户端公钥加密私钥发送给服务端)
HTTP1.0和2.0区别(长连接,多路复用,请求方法增加,请求头压缩等等,本来是问2.0和3.0,我说只知道1.0和2.0的,就问这个了)
JVM:
如何辨别内存泄漏和内存溢出(先说明概念,通过USS判断是否内存泄漏,引出CMS和G1,提到了CMS的清理过程、G1的分区结构和性价比列表)
分析进程CPU占用飙升的原因(谈了谈JAVA对象头的结构和虚拟机栈,判断可能是其他进程修改了引用信息,不知对错)
JUC:
只记得谈了线程池
Redis:
介绍了RedLock和8种数据结构
Mysql:
好像谈了索引,完全记不得了
写了两道SQL语句,主要是group by、count和子查询
你的职业规划
你要通过哪些方面的学习成为技术专家
期望薪资
贝壳一面:
自我介绍
谈谈hashmap
红黑树转换条件除了冲突元素超过8以外,还有什么条件?(当时不知道,条件是数组长度大于64)
为什么数组长度是2的幂次(回答了位运算和底层二进制,面试官补充说还有rehash)
又谈了谈concurrentHashMap,问了size方法的底层实现(就说了加锁)
Mysql索引,三层索引最多的数据量(不知道,面试官说是1kw左右,根据缓存量2M除以索引长度11字节计算,但我算起来是20W)
Redis为什么快(只答了内存操作,无并发,面试官补充数据结构和NIO)
惰性删除机制(忘了,问如果是自己如何设计,答fork线程维护,面试官纠正随机抽取)
kafka为什么快(回答牺牲可靠性,纠正:顺序读写,批量文件和zeroCopy技术)
kafka为什么不可靠(谈了kafka的发送策略和主从复制,补充:生产能力超过消费能力,producer消息只存缓存)
一道算法题,环链表识别和长度计算
快慢指针法(当时忘了怎么用双指针返回长度,强行用hashmap写出来了)
面完20分钟通知1小时后二面
二面:
自我介绍
谈谈hashmap,put和get方法的实现(简单说了说)
说说了hashmap的rehash(做原有元素的高低位判断,引申到了redis的渐进式rehash)
jmm模型(CPU、高速缓存和内存;堆内存和直接内存)
你还知道哪些集合类(ArrayList,LinkedList,HashSet,HashTable)
mysql索引类型(hash和B+树),绘画B+树的索引结构
口述索引查找过程,为什么不用B树(程序预读原理和叶子节点链表)
一道sql语句(用了group by,面试官补充了having)
两个有序数组的原地合并(双指针)
offer和其他面试的情况
总结:
科大讯飞的面试官不问原理喜欢问实际案例,答的时候要尽量延申,就算不会也要说相关的原理知识,看重网络协议知识
贝壳一面面试官有些问题答得不全会帮你补充,问的很细,让我知道了以前面试的时候有多少加分点没答出来
二面面试官是团队负责人比较看重沟通能力和代码编程的性格,当时我今天第四面,人已经麻了,表现的不是很好,希望能过!