面试复盘 | 京东正式批1、2面复盘
一面 21/9/17 电话面 70min
- 自我介绍
- 项目相关
- Java中面向对象三大特性
- 重载和重写的区别
- 接口和抽象类的区别
- switch里能用String做参数吗
- ==和equals
- 垃圾回收(从运行时数据区讲垃圾回收的对象是谁,别的为什么不用gc,怎么判断是垃圾,gc roots有哪些,finalize(),垃圾回收方法,分代理论,CMS,G1)
- 设计模式(能记得多少都说,大概举个例子)
- String,StringBuffer,StringBuilder
- 有哪几种线程池
- HashMap的实现原理(从源码的角度讲1.7和1.8,1.7什么情况会死循环,1.8的优化说的详细一些,包括putVal()和resize(),举例说明什么情况下扩容后在原位置,什么情况下在原位置+旧桶的个数)
- 线程和进程
- 网络IO模型,阻塞和同步
- OSI七层模型
- TCP和UDP
- TCP协议怎么保证可靠性(①TCP头部的seq | ack | ACK | 校验和 ②三次握手、四次挥手 ③超时重传:数据包丢失 | 确认包丢失 ④拥塞控制 ⑤流量控制)
- 索引是什么,你知道什么索引(B+树索引、hash索引、全文索引)
- 在哪些列上建索引
- 数据库的事务是什么,每个特性是怎么保证的
- mysql隔离级别,脏读 | 不可重复读 | 幻读
- 解决不可重复读的原理(gap lock | next key lock)
- 内连接、左连接、右连接
- 口述一个sql语句
- Redis的数据类型(String、List、Set、Zset、Hash、Hyperloglog、Bitmap等)
- 口述算法:
①lc #104 求二叉树的高度
②lc #136 出现一次的数字(其他都出现了两次,位运算,异或)
③lc #137 出现一次的数字II(其他都出现了三次)
- 投了几家公司了
- 反问:京东零售?技术平台部
问的时间比较长,基础知识覆盖的比较广,大概第二天约的下一面,大师中间隔了个中秋,最后约了26号。(我记得中间约过一次22号的,但是选完了时间没给发邮件,也没接到电话,难道是幻约面)
二面 2021/9/26 JoyMeeting没开摄像头(相当于电话面) 42min
(出了点问题没录上音,不知道是否与JoyMeeting有关,只能凭记忆大概写点儿...)
- 自我介绍
- 项目相关(这里问了十来分钟)
- redis作为缓存可能出现的问题(缓存雪崩、缓存穿透、缓存击穿、缓存和数据库数据不一致、分布式锁、分布式事务等)
- volatile关键字(从JMM对volatile的特殊规则讲到了反汇编后的"lock addl $0x0,(%esp)",详细说了改命令的作用,以及如何达到内存屏障的效果等)
- mysql的事务隔离级别及实现原理
- MVCC相关,具体说明在可重复读RR隔离级别下的情况(undo log怎么找历史版本,ReadView生成的时机,ReadView里面的内容,当前活跃事务id列表中的最值,访问版本的事务id和ReadView的具体情况分析,大于最大值 | 小于最小值 | 介于两者之间等)
- 别的不记得了,最多也就忘了一两个,问的问题并不多,每个问题都回答的稍微细了点儿
- 反问:①新人培养机制 ②什么时候出结果(面试官说他这里过了,等后面的hr面)
- 面试官主动介绍了一下部门是做什么的,说的比较细致(但是离麦越来越远,最后的部分没听清...)
问题不够回答来凑,确实也没问太多,都是一个问题叭叭好久,当场说过了可太省心了,不用提心吊胆等一周,希望能在国庆前约HR面别磨叽,不然放假结束就要10月中旬了