时间线
时间 | 历史节点 |
---|---|
2020/3/10 | 确认内推 |
2020/3/11 17:00-18:06 | 一面 |
2020/3/13 17:00-17:32 | 二面 |
2020/3/18 15:00-16:00 | 三面 |
腾讯PCG事业群Android端 一面【66min】
1.自我介绍
2.我看你这简历上的技能咋都写的是Java的东西呢?安卓的项目做过,SSM的也做过,那你后台开发和Android倾向于哪一个?
主要准备的Java,Android没有具体学习过,但是对Android很感兴趣。
3.你咋选的实习地方北京,能来深圳实习嘛?
北京离家近点,去深圳也没问题,在哪工作不是问题。【极强的求生欲…】
4.说说项目,我看你上面有个项目做App的,有准备Android方面吗?
跟他解释了下为啥没准备Android的,然后开始叭叭我的第一个项目。
3.有些SQL比较慢,你咋办?为什么有的SQL这么慢,说说你觉得导致SQL很慢的原因。
大概说了说我的想法,然后问SQL很慢的时候,我说了类似于数据量大、没建立索引啊还有索引建立的不太好等等情况,然后面试官还积极引导我往更多的方面去思考。
4.内存泄漏?OOM?什么情况会OOM?
说了说内存泄漏是什么,和OOM关系,然后列举了常见的OOM情况,我还跟他说了说使用Vector的时候遇到的OOM情况是怎么导致的。这个问题后来另一家大厂也问我了(面试官说我总结的还挺全hhh)。
5.用过多线程没?说说咋用的。线程池知道不?说说线程池的原理?
我说简单的用过,给他叭叭了下怎么用的。说线程池的地方,先说了说线程池的常用参数,每个参数什么意思,然后说原理。后来还想说的更细一点的时候,就问我别的问题了。
6.对ArrayList一个读操作,一个写操作,你用多线程咋实现。死锁你知道不?你怎么解决?
送分题,多说点,说的越多越好,面试官希望你能多方位的思考。
7.volatile知道吗?volatile的原子性?
简单说说volatile,举了例子结合字节码谈了谈我的理解。
8.Java中的锁知道哪些?
送分题,还是要把自己知道的都说出来啊,不过注意条理性。
9.线程之间通信的方式?
送分题,之前复习OS和Java高并发的时候,总结过,知道的都说了出来,一定要总结高频面试题!
10.JVM调优,说说你能从哪些方面着手?
没有问一些命令,重点考察的感觉是从哪些角度去思考问题,看过一些总结的博客,JVM那本书上也有介绍,建议多看看,多记忆,多理解,就没啥问题。
11.JVM和GC简单聊聊,结合JVM内存说说GC。
结合HotSpot说了说哪些线程共享以及大概用途,哪些不是线程共享,GC回收的对象是啥,为什么GC不回收本地方法栈、Java虚拟机栈那些,针对不同的特性,说了说年轻代和老年代对应的GC算法,还有方法区回收的条件。
12.HashMap和HastTable,HashMap安全?不安全用什么?hash()?HashTable是怎么实现安全的?
13.我对你的Java基础有了一个了解了,下面我们问问网络相关的知识,计算机网络应该学过吧,那说说TCP三次握手?第三次握手能不能去掉?UDP和TCP的区别?
说的挺详细的,顺带扯了一下包格式、握手的状态、还有SYN和ACK消耗序号,什么叫做无效的连接请求都解释了一遍。
14.你知道长连接吗,说说?为啥用长连接?
问这个问题好像是因为我说啥来着,我提到了长连接。然后问了我长连接之后,又顺势牵出来下一个问题。
15.HTTP1.0和HTTP2.0的区别?说说NIO?
NIO当时我准备的不充分,草草几句收尾,面试官笑笑。
16.HTTPS知道吗?说说SSL?
本来一开始想问我HTTPS和HTTP啥区别,我差点脱口而出了,结果换题了。
17.好了,网络聊到这里吧,我们说说算法之类的吧。跳台阶知道吧,怎么做啊。
剑指offer上的原题
18.一个链表,让你找最中间的节点,你怎么找?
leetcode上的一道题,说出来快慢指针,面试官就会说okok了。
19.两个大文件,一个比较大,一个比较小,让你求交集,你怎么做?
一开始我好像听错题了,面试官强调是文件,我说的HashMap,然后说了说思路。
20.那么,我们再问两个智力题吧,没有固定答案,不要限制自己的思路,想到啥说啥,一个粗细不一样的绳子,完整的烧完1个小时,你怎么让他烧15分钟(不一定烧完)。
结合从两头开始烧,半个小时烧完,我给他叭叭了一下,但具体怎么回答的忘了,面试官还给我讲了讲,就算过了。。
21.一副全新的扑克牌,按顺序的,AAAA,2222,3333,这种,你怎么洗牌能洗散开?
说了几种,我把平时洗牌的绝学亮出来了,他还让我说,我想不出来了,他说,嗯好的,这个题算你过吧。
22.C++和C了解吗?
23.面试官问我啥时候有空,约下一面?
24.闲聊,你有啥要问我的啊?问了好几个问题,问完了以后,面试官问我还有啥想问的,不想问问学习资源什么的吗??我就又问了好几个,然后跟我说了说面试的情况。就愉快的say GoodBye了。
问的问题(忘记顺序了):
1)我问:还有下一面吗?面试官给我说了说后面啥情况,如果下一面过了,那么三面不会再写算法题了估计。
2)面试官问我:目前有没有Offer?Java后台和Android你选一个,你做哪个?
3)我问:新人培养计划是啥?以及你们主要负责哪一块的业务?
4)面试官临时想到问我的:有人说Android端走下坡路,你怎么看啊?
5)给我说了说笔试是啥情况。
6)有没有什么学习资源啊?我如果走Android的话,我应该要去学习什么,或者怎么学习会好一些。
PS:因为我算法太烂了,我就问笔试对于能否进下一轮面试的作用大吗?他说,会占一部分,但是也不会全看算法。但是毕竟编程,代码水平不可以特别差吧,还是要有一定代码功底的。
总体感觉:
面试的问题不是很难,如果不会,面试官会引导你,他觉得我说的挺有意思的时候,还笑笑,这就让我更不紧张了。还有就是语速慢点,我可能太紧张了,叭叭的多还叭叭的快。
问问题的话,感觉还是尽量的去了解他们这个部门干啥,自己去了干啥比较重要,毕竟如果面的好,能拿offer,比较offer的话,好比较的。顺便也能看看自己对这个部门感兴趣吗。第一次面大厂,没啥经验,面试是个双向选择的过程,一定要了解对方做啥,自己是不是有兴趣等等方面。
以及回答问题的时候,尽量发散思维,结合实际的例子去说,这样会让面试官觉得你很棒,知道的很多,也有自己的积累和思考,如果回答一个问题照着网上看到的资料背下来,可能会让对方感觉是机械记忆,可能我回答问题的时候,尽可能把很多学习到的知识都串联起来讲出来了,所以面试官对我评价不错。一面没结束就直接约下一面,也是挺意外的。