写在前面:面试前看了这么多面经,其实发现用处不是太大。一是面试官也是从我们这个过程走来的,心里面也清楚,二是大部分面试官是面试时根据你的简历以及当场的表现来问的(这个为主要部分)。然而面经又不至毫无用处,面经可以帮助大家了解某公司某岗位的面试难易程度,其次,在翻阅了大量的面经后,也会发现会有一些问题被经常问道(比如TCP的握手挥手,尽管相关博客文章已经烂大街了,但面试官还是喜欢用此考察基础)。对于某些经常被问到的问题,自己可以将其总结下来以备后续面试。
一面:(一面正如我上边说的,被问到了四十多个问题,面试时间也就五十分钟左右)
没有写代码,都是口述
1.面试官自己做了个自我介绍(我没有自我介绍,后边直接进入正题,这里面试官问了没有移动到经验为啥要投这个岗,这个问题每一面都问道了,呜呜)
2.工作地点(没要求)
3.排序算法(讲了冒泡、快排、归并、插入、选择、堆、希尔,桶排序了解但是不熟)
4.讲一下快排和选择排序
5.给n个整数数组,求最小的k个数。(Topk问题,用大顶堆)
6.口述单链表翻转。(讲了头插和三指针法)
7.口述两个有序单链表的合并。(也就是归并排序中的归并部分)
8.口述二叉树求深度。(说了用递归,分别求左右子树的高度,递归终止条件是没有孩子或者当前节点为空)
9.你专业不是计算机,为什么要搞这个
10.写过项目吗。(简历上有个简陋的博客项目)
11.说说这个项目。
12.项目中用了连接池没有(先说用了,用哪了,不好意思,忘了,没用)
13.数据库用的哪个
14.orm怎么用的(tmd啥是orm,对象关系映射)说了一堆,你没有用到Mybatis?(刚接触,还不太懂)那你为啥要学这个Mybatis?(想说我不知道,实际上答得是可以简化开发 )
15.TCP为啥要三次握手?
16.断开连接有几次挥手?(为什么有四次?)
17.你知道哪些HTTP响应码?(答了1开头是正在处理请求,200是请求成功,3开头是重定向和转发,4开头的是客户端错误,其中404最常见是找不到资源,5开头的是服务器错误)
18.数据链路层是如何检测冲突的?
19.TCP和UDP的差别?使用场景
20.了解https协议吗?(讲了https的握手)
21.刚刚你说到了公钥私钥,你了解过哪些非对称加密算法?(不了解)
22.对称加密和非对称的区别?
23.讲一下数据库范式的作用?(不会)
24.你了解哪些MYSQL语言。
25.左连接右连接
26.进程和线程
27.进程间的通讯。
28. Synchronized的作用
29. Synchronized可以用在哪些地方?
30.A线程通过Synchronized获得锁后,B线程尝试去拿,会有什么现象?(B竞争锁失败,进入等待队列,A释放锁后,B在跟其他线程再次竞争这把锁)
31.还有哪些可以保证同步的机制
32.CAS的实现?谁来保证的?
33.用过哪几种锁?怎么用的
34.是否用过ThreadLocal?
35.线程池?
36.你的项目中会用到几个线程池?
37.IO系统如何高并发?
38.垃圾回收如何判断对象是垃圾?
39.已经有GC为啥还会内存泄漏?
40.如何定位内存泄漏?
41.Java中动态代理?是否用过Proxy
42.Android的看过哪些?(这谁看过)
43.反问环节?(没问,一般都是问自己今天的表现或不足什么的,但面试官在我最后一个问题答完后自己就说了然后让我反问,所以就没问了,只问了结果什么时候出来,说是最长一周)
二面:(二面忘了录音。所以可能不全,顺序也不太对。因为有手撕代码,总时长也是五十多分钟)
一面过了大概三四天收到的二面通知。
一面实在被问得太多了,所以二面没怎么问问题。
算法题:判断魔法质数。(算法题是倒数第二个问题)
魔法数:233,233233,233233233(以233为一个循环的数)
质数:不多说。
写一个算法来判断某个数是否是魔法质数。
给的输入的例子就是上边的那三个数
写完后面试官问这三个中输出false的什么原因?不是魔法数还是不是质数?
答得不是质数。(后两个是false)
面试官:是吗?它有哪个因子。(没答上来)你输出一下他们的因子。简单输出其中一个就行(面试官意思是这个,但我还是写了)这里给面试官说第三个一定不是质数,理由是它一定是3的倍数
然后又写了一个输出因子的算法。(这个是力扣上的一个原题,比较简单,输出的是所有的质因数。)
输出发现第二个确实不是质数。(算法题就算过了)
其实下来想想根本不用最后这个算法也能判断出来,面试时实在是太紧张了没想到。233乘1000就是233000,加上233就是233233,也就是233一定是它的因子。后边那个同理。
算法题的前一个题目:
平面上给定任意2n个点,请用尺规作图画一个圆,这个圆刚好可以圈住其中n个点。(没答上来,面试官给了很多提示也没答上来。这个下来后问了别人,自己也上网搜了搜,属实不会就不管了)
面试里其他问题:(没按顺序,想到哪写到哪)
1.我看你之前没有移动岗位的经验,为什么要面这个岗,你是觉得它俩有啥关系吗?(???我咋知道,我至少得先找到工作吧(狗头))
2.意向城市是北京和成都,为啥选择这两个地方?
3.然后问的又是博客里这个项目的。(还是不知道顺序,想到哪写到哪)
(1)你的博客里有个展示文章列表的功能,它的SQL语句是怎么写的(到代码框中敲)
(2)为什么要用下划线(我的sql里有一个变量写的是create_time,说是命名规范,大家约定俗成的,也可以不这么写,但可能会降低其他人对我代码的好感)
(3)你的项目里用到了filter,过滤了什么?(对全部资源进行拦截,只有登录后才能访问文章列表)
(4)怎么实现拦截的?(说了用cookie和session)
(5)然后又问了cookie和session的一些问题,但记不太清了,忘了具体问了啥
(6)用过缓存吗(听过redis,但是实际中确实没用过,但我知道缓存雪崩缓存击穿这些,但是面试官没问了)
三面:(HR面,电话面试)
二面是上午面得,下午就收到了三面通知,三面是在二面的第二天面得。
因为是HR面,所以只面了十几分钟不到二十分钟。
1.小姐姐让自我介绍,越详细越好。
2.说一下自己的实习经历和项目经历
3.你们这个专业上计算机课多不多(没有,都是自学的)
4.简历上写的是后端开发,为什么投移动端岗位?(怎么每面都问,烦死了)
5.研究生的课题方向是什么?
6.什么时候开始学的Java?(二面好像也问了)
7.平时是通过什么渠道以什么方式学的?(二面好像也问了)
8.你简历上这个项目做了几天
9.今年春季的时候为啥没有参加春招?
10.问了本专业一般从事什么岗位?
11.问了籍贯
12.你们实验室有没有做过其他项目
13.你觉得自己出来找工作优势是什么?
14.我看你这个项目写了前端是用vue来写的,你的这个是前端重还是后端重
15.对自己未来的职业发展的规划?
16.除了美团还投了哪些公司?
17.有认识的人在美团工作吗?(这谁有?)
18.你对美团的了解?
19.对于移动端iOS和安卓这两个方向有哪些认识(这谁知道,乱说)
20.你选择一家公司最看重的三个关键的维度(变着法硬吹,说了看公司发展前景,看公司发的票子,看公司对个人的培养)
21.反问?(经典反问,啥时候出结果。然后还问了进公司后会不会有相关的培训)