前两面之前已经发过贴子了,这里为了方便大家观看一起贴在这里。
原帖地址可见:
一面 二面
一面 8.19 18:45(65min)
项目
- 实习的项目重构主要是按照什么标准?
基础
操作系统
1. 进程和线程的区别?
2. 什么是临界区?
3. 进程间通信的方法?
4. 进程有哪些调度算法?
5. 什么是死锁?死锁的条件?
计算机网络
1. HTTP属于哪一层?
2. TCP和UDP处于哪一层?
3. TCP和UDP有什么运用场景?有哪些区别?
4. TCP为什么需要三次握手和四次挥手?
5. 浏览器输入网址之后发生了什么?
6. Cookie和Session的区别?
追问:分布式Session如何实现?
Java基础
1. Java的异常体系?
2. 遇见过什么Error?
答:OOM
追问:OOM你是怎么排查的?
3. 遇到过NoSuchMethodException吗?
有见过,但是没啥印象是什么场景了。。
4. Integer类有缓存吗?为什么需要缓存?
5. 我可以自己实现一个包名和类名都一样的Integer类吗?
JVM
1. JVM的类加载机制
2. 有几种类加载器?为什么要有双亲委派模型?
3. 打破双亲委派模型的例子
4. Java的锁升级机制?
追问:锁升级机制怎么实现的?可以从对象头来说
5. Java有哪些GC算法?
6. 了解过G1收集器吗?
追问:四个步骤中哪些步骤会STW?
7. Java的内存区域
Java数据结构
1. HashMap底层实现
2. HashMap扩容时发生死循环是什么情况?
3. ConcurrentHashMap底层
追问:ConcurrentHashMap扩容机制
4. LinkedHashMap了解过吗?用于解决什么问题?
5. ArrayList和LinkedList的区别?
逻辑题
40亿个不重复、未排序的unsigned int,给一个x,有2G内存,如果判断x是否在这40亿个数之中?
算法题
LeetCode 88 合并两个有序数组
二面 8.23 15:30 (50min)
项目
主要问的实习项目的整体作用,以及过程中遇到的难点
基础
Java并发
1. ConcurrentHashMap和HashMap的区别?
2. ConcurrentHashMap锁的粒度?
3. Java与并发相关的关键字?
谈了一下synchronized,主要说了一下锁升级。
4. 同步方法和同步代码块?
追问:一般更推荐用哪种?
计算机网络
1. 得到网页的IP地址之后是如何建立连接的?
MySQL
1. 索引设计的原则
追问:给一个简单的SQL,问如何设计索引。
追问:两个用=判断的可以变换顺序吗?
2. 脏读、幻读是如何解决的?
追问:next-key lock的上锁区间是如何确定的?
这块问的比较细,追问了挺多关于锁的细节的,具体有点记不起了。
Redis
1. Redis是单线程还是多线程?单线程为什么依然快?
2. Redis的多路复用是如何保证读写的顺序正确?
3. Redis实现分布式锁
计组
1. 从磁盘I/O的大致过程?
算法
LeetCode 2 两数相加
逻辑题
1. 要吃一颗A药一颗B药,两种药看起来一样,现在手上有一粒A两粒B,怎样吃才能不浪费?
再取出一片A药,这样手上就有2片A+2片B,每片吃一半,只掉的就恰好是1粒A+1粒B。
2. 1000瓶液体,1瓶有毒,一小时毒发,需要多少只老鼠才能一小时试出哪瓶有毒?
用十进制给1000瓶液体标号,之后用每只老鼠表示二进制的一个位,最后死掉的老鼠代表的位数组成的十进制数,即为有毒液体的编号。
三面 8.26 13:00 (60min)
面试官上来先介绍了一下团队具体的业务场景,然后我这边也简单自我介绍完就开始做算法题。
算法题
1. 求二叉树的高度
2. 求二叉树距离最远的两个节点的距离
3. 求二叉树距离最远的两个点
算法题结束之后就是简单聊了一下实习项目,然后问了一些有点像HR面的问题。
比如说:
- 遇到的压力最大的事情是什么?
- 平时怎么缓解压力?
- 怎么学习新技术?
- 目前拿了哪些offer?
后续时间线
8.30 约HR面
8.31 HR面
9.5 意向书
全部评论
(15) 回帖