博睿数据-社招-Java一面
2023.03.14晚 面的好舒服,整体聊天都比较愉快,也算是面的比较全吧,考察了全方面技能点,双方交流都是有来有回的。挂了电话没一会就约了二面时间
[TOC]
🔥1. 数据结构和算法
1. 知道的数据结构:B+树,B树,红黑树,然后讲了各自的优缺点 2. 知道的算法:讲了下快排和时间空间复杂度(我说空间复杂度是O(1),其实应该是O(log(n)),牛客原题:https://www.nowcoder.com/questionTerminal/ce696aeb0c804e0bb9950d66890e31ee?) 3. 双端队列的特点和描述下用指针插入一个结点:左右都可插入弹出。然后就是结点next指向插入结点
🔥2. Java
1. HashMap底层原理:jdk1.8之后,数组链表红黑树,计算hashcode扰动函数和与运算到数组坐标后,以尾插法插入,然后数组>64和链表>8转变为红黑树(老八股文了) 2. 线程池创建方式:不晓得(Executor和ThreadPoolExecutor创建方式。感觉这里表现不好,明明不知道还卡顿,结结巴巴的耽误双方时间) 3. Jvm内存结构:pc,虚拟机栈,本地方法栈,堆(新生代(eden, survivor),老年代),方法区。 4. 线程共享和单独的区域:栈和pc是线程独享,堆是方法区是共享,然后堆中也有TLAB是线程独享。 5. String存储和名字定义: 1. 存储:jdk1.8之后,直接定义就是在堆中的字符串常量池常量就有,new就是堆中新开辟空间。 2. 代码中定义同包同名的String类是不可用的,定义不同包但是同名的String类是可用的。
🔥3. 排查能力
1. 你排查OOM思路:结合业务从先告警开始,结合日志从内存泄漏,内存分析分别谈起,然后谈dump对象内存结构,jprofile分析,结合代码定位到位置,分析解决问题,上线部署监控。(感觉自己答得还是有点像在背书,还是要自然点) 2. 生产CPU告警的流程:基本都是由大量线程导致的,分析流程还是和上面OOM差不多,就是加个火焰图分析,这里面试官感觉想听的是top,jstack命令这些,我用了个arthas直接带过了。
🔥4. 软性要求
- 觉得自己性格怎么样:阳光,随和
- 觉得公司什么最重要:归属感和项目的含金量
- 反问