今天下午面的美团,官网给了三个面试时间,以为是被推迟了两次,结果就按着最后一个时间去的,在路上HR打电话问我怎么还不来,我才明白要三面。

从下午三点面到晚上八点,脑子有点蒙,只记得大概的一些问题了。

一面:

1.自我介绍

2.讲项目(项目和编程没太大关系,面试官估计不是很感兴趣)

3.HashMap是怎么实现的,还有hash()和equals()方法的区别(不是很懂面试官这个问题的意思,后来他举了个例子,说是本来两个对象使用equals比较可能是相同的,但是hash值不同,这样存入哈希表中不会被覆盖而是保留两个)

4.ConcurrentHashMap和HashTable的区别

5.JVM GC算法

6.synchronized关键字和Lock的区别

7.volatile的作用,回答可见性,问我什么是可见性,什么是原子性,然后引出来原子类和CAS

8.堆排序(手撕代码)

9.使用最大堆找出最小的K个数(说思路)

一面问题基本都答出来了,但是可能觉得我项目经历太薄弱他说让我等几分钟,然后回来问我什么时候能实习,我说下个月就可以,然后他说那你再等我几分钟,过了一会回来让我等二面。

 

二面:

二面面试官比较严肃,上来先逮着我迟到的事问了一通,可能跟这个有关系,然后二面就把我问懵了。

1.问我觉得自己笔试做的怎么样,觉得客观题Java部分做的怎么样

2.问我刚刚一面都问了什么问题,我重复到synchronized和lock区别的时候他让我再讲一次,然后细致地问我tryLock()在什么场景下用,公平锁和非公平锁的区别

3.问我对Java7、8的新特性有什么了解

4.然后问了一些网络相关的知识,http的请求有哪些,应答码502和504有什么区别,DNS寻址过程

5.Java5中的LongAdder和AtomicLong的区别(没用过,我说后者有Atomic是不是保证了原子性)

6.手撕代码,两个非常大的自然数相加,结果可能会超出long的范围,问我可以怎么做到正确显示结果(我把两个自然数转化成了String,然后分别对每一位相加再考虑进位,最后用一个StringBuilder对象储存再打印,开始代码写的有点乱,让我重新写了一遍)

7.用过MySQL吗(我说增删改查和索引),然后问我什么时候用索引,索引是用什么数据结构实现的(我说B树和红黑树,不同引擎不一样,具体的想不起来了)数据库事务隔离级别

8.linux指令用过哪些(我说ps -ef grep tar mkdir cat)他问我top用过吗(没有)

9.怎么打印日志(完全不知道)

10.还是GC,如果经常出现full GC怎么定位代码哪里出了问题

11.http1.1和1.0的区别

二面只记得这些问题了,大部分都没答出来,面完了感觉就GG了。

 

三面:

本来以为二面凉了就没有三面了,美团还是很尊重人的,面试官还是给面了一次。

开始以为三面是HR面,问我的问题和技术没什么关系

1.专业非计算机,为什么想来互联网

2.师兄师姐对你的影响

(我回答完他说你学校的本专业很强,其实可以在这方向做的很好。感觉可能是友好地劝退?)

3.然后看做的项目,让我介绍了项目中一部分,然后引出来socket通信怎么保证数据包接受完整,还有接收到的是想要的数据(开放性问题,感觉是考察解决问题的能力吧)

4.进程间通信是怎么实现的(我回答了信号量,共享内存,无名管道,命名管道,消息队列),然后让我详细说一下用管道是怎么实现的

5.死锁,写一个死锁的例子

然后就没有了,过了几分钟回来就把我送走了,也没说结果什么时候通知结果,应该默认是没过了,我问了一句结果什么时候通知,他说两三天吧。

还是自己掌握的不够透彻,细节理解的不到位,继续学习吧。

最后祝愿大家都能拿到offer

面试总结

我收集整理备战面试的面试资料(需要获取小伙伴一键三连(点赞+收藏+关注) 后,添加微信:mxm9843 即可免费获取到)