恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝
面试部门 / 岗位:北京 支付部门 / 后台开发
一面(9.7)
-
自我介绍
-
实习项目、背景、需求介绍
-
InnoDB优点
-
MyISAM索引底层是什么结构
-
B树和B+树区别
-
为什么选择B+树不选择B树
-
MySQL如何支持事务
-
undo log如何保证原子性
-
MySQL隔离级别、存在的问题
-
MySQL如何解决脏读、不可重复读、幻读
-
如何解决脏读?(读已提交)MySQL如何判断事务有没有提交?事务A中对id=1进行修改,不提交;事务B中读取id=1的数据,如何判断这个数据有没有被提交?
-
InnoDB可重复读是否存在幻读问题
-
如果对记录修改,是否会读到修改的值?
算法题
LeetCode:8. 字符串转换整数
-
HashMap和HashTable区别
-
HashTable如何实现线程安全(给每个方法加synchronized,put时只能有一个线程获取到锁)
-
其他线程如何知道已经有线程在put(Mark word)
-
Mark word是什么
-
synchronized的锁优化
-
出于什么目的写博客;什么时间写博客
-
反问
-
其他offer
二面(9.9)
-
自我介绍
-
项目问题
-
实习有什么体感
-
假设有1,2,3,4,5,6,7,8,9,10 在B+树中存储,是什么样子
-
为什么1和2之间是链表
-
MySQL有哪些索引
-
为什么会有覆盖索引
-
table 有a b c d四列,(b c d) 联合索引,selct c,d from table where c = 1会使用这个联合索引吗?不会,最左匹配
-
为什么覆盖索引存在最左匹配原则
-
select c,d from table where b = 1 and d = 2会走索引吗?我:行。面试官:这个可以行,也可以不行…分情况,MySQL中有一些优化,比如ICP,就会将索引下推(我没懂…)
算法题
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
-
HashMap底层数据结构是什么
-
HashMap先不考虑红黑树,手写一个底层数据结构,存储key value
-
Java 线程的状态;time-waiting时间到了,进入什么;调用sleep()进入什么状态?time_waiting,那这个time_waiting状态会释放锁吗?不会;锁等待是什么状态?blocked
-
wait() notify() 以及线程状态转换
-
Java线程状态和操作系统线程有什么不同?Java线程的 runable=ready+running,操作系统线程分为 running和 ready,并不是合在一起的
-
为什么Java把这两个状态放在一起?
-
反问
三面(9.13)
-
自我介绍
-
JVM内存结构
-
堆如何分代
-
为什么要分代
-
回收算法
-
回收算法有哪些具体实现?垃圾回收器
-
TCP三次握手
-
TCP 四次挥手
-
为什么建立三次、断开是四次
-
四次挥手套接字的状态转移
-
输入url的流程
-
http的request、response的具体格式
-
你们的服务是如何部署的?SpringBoot中的Tomcat
-
LRU 如何实现?在哪用过
-
LRU put get 时复
算法题
100G文件,每行是一个长整数,总行数为N
主机内存1G
结果:输出最大的K个数 (K << N)
这道题千万别被100G迷惑,想着分文件之类的…
维护大小为k的最小堆,如果当前元素大于堆顶元素,入堆。这样,堆中始终存储的是到当前为止,最大的k个数。
大小为k的最小堆会一直存在内存中,因为K << N,所以不考虑内存不够的情况
- 反问
结果
2021.9.15 HR面
2021.9.22 意向书
反馈
整体面试感受非常好,面试官很谦和,答得不对或者不会给提示。
祝你好运,加油!