2016校招,Android,bat、网易、360、华为面经
2016校招,在看了众多大神的面经后,终于也拿到了属于自己offer,于是也来牛客写下一些自己的总结。
一、前篇
简单介绍下自己的方向吧,本科软件工程专业,学完基础课开始做起主流的Java Web。大四决定考研,大半年时间在复习考研科目,出成绩后开始学习Android基础。硕士阶段,1个半学期修完学分,出门实习开始了研究Android系统的路。所有公司所投的岗位都是Android或者是移动开发。
二、准备篇
个人觉得知识最重要的体系,所以复习的时候不仅是复习一个个知识点,更重要的是对整个体系有所了解,这样的话当遇到一个没有复习的知识点时其实也可以大致说出它可能的情况。由于我开始复习时还在实习,所以只能抽出时间开始复习,下面括号中的时间仅供参考。
复习过程大致为:java基础知识(2天左右),设计模式(2天左右),TCP/IP和其他网络知识(1天),操作系统(忘了复习,天坑),软件工程知识(半天)。基础第一遍过完开始挑战牛客了,剑指offer(1个周),然后开始刷选择题(大概刷了1000题),程序员面试金典(2个周),接着选择题(1000题左右)。开始复习Android基础知识、Android系统流程,刷了一部分leetcode(差不多2个周的样子)。然后各大公司就基本开始校招了,会根据笔试面试的情况进行查漏补缺。最重要的还有左老师的视频,
剑指offer、 程序员面试金典两本书我都没有看过,我主要都是通过刷题来复习算法,我觉得算法要提升最重要的就是遇到不会的一定要自己思考,至少思考3个小时以上都没有思路的或者无法解决的情况下再去找资料。没有思考的过程,遗忘的速度只会让你在笔试面试的时候留下遗憾。左老师的视频,很容易,能够让你明白思考的方式和方向。
三、 知识点
请参看Xoper.ducky大神的面经:http://www.nowcoder.com/discuss/3043?type=2&order=0&pos=5&page=2(已经过大神允许)
这里我做稍微的补充:
J2SE基础
1.泛型相关知识,比如能否List<Object> = new ArrayList<String>; 或者List< String > = new ArrayList< Object >;为什么可以或者不可以。
2. ConcurrentHashMap 和HashTable的区别。
3.引用类型
对于java来说,一定要能灵活运用设计模式,不说每个,至少常用的一定要能写。
操作系统
1.为什么内存快,外存慢。(腾讯二面问题)
TCP/IP
酷壳有两篇文章,总结的非常好。
Android(我偏向framework,下面主要补充系统问题)
1.进程有哪些通信方式
2.ListView优化方案
3.service和线程的关系
4.looper是线程级别还是进程级别
5.activity1启动activity2的过程,是否可以在新的进程里面,如果在新的进程里面流程 有什么不同。启动按返回系统的调度。
6.广播的注册方式,信息是保存在哪里,发送广播是如何回调广播接收者。
7.app安装过程,每次开机是否会重新安装所有的app
8.Android系统为系统安全性做什么事情
9.zygote和systemservice的关系
10.为什么zygote死掉后会重新启动
11.界面的绘制过程
12.开机画面有几个,分别是什么时候显示和暂停
推荐书《Android系统源代码情景分析》作者为叶神同学罗升阳(真正的大神中的大神),顺便给个作者博客的传送门 http://blog.csdn.net/luoshengyang/article/details/8923485
四、面试
蘑菇街
内推一面,本年第一场面试(不到30分钟)
1、有没有上线的app项目
2、activity四种启动模式
3、有没有使用过Android的开源库,或者开源控件
三个问题一共问了加上自我介绍一共15分钟,就问我还有什么想问的,然后随便问了两个草草收场。不出所料的挂了。这次的面试让我明白了小公司和大公司招人的巨大区别。大公司重基础,小公司重项目,这次也更坚定了我一定要面大公司的心。
网易互联网
内推一面,电话面(总共一个小时)
1、java基础知识(时间太久,记不清具体问题) 2、Android基础问题(同上)
3、启动一个应用的流程
4、单例模式需要注意的地方
5、怎么让一个service不死掉,一直运行
内推二面,现场面(总共一个小时)
1、一进去首先就拿了一个化简字符串的题目让我写出化简结果,类似于或和非的两个操作
2、写完,问如果让我设计一个结构来存储这个结构,怎么做
3、让我用算法来实习这个化简你怎么实现,说下思路
4、然后开始问项目,说你们的系统和Android有什么区别(实习内容可以理解为深度定制的Android)
5、说一下打开一个activity的过程,
6.、平时学习是通过什么途径
7、后来考了个算法,要写代码
8、详细询问平时工作的内容
9、让我设计一个Android的下载模块
还有的问题可能就记不住了,面完后就让我,一开始还挺有信心,后来听说有的同学面完让等着继续hr面,就知道悲剧了,但是没想到2周后来了hr的电话让继续hr面。
HR面,电话面(30分钟)
1、为什么选网易
2、为什么选择杭州
下面三连击,我第一次hr面被打傻,之后就知道了hr也就这些套路。。。
3、工作中遇到一次最大困难时什么
4、你最后是怎么解决的
5、如果让你再来一次你是否能够解决的更好
6、兴趣爱好
网易内推,第一次面到hr面的面试,结果还没出,打电话说是十一之前没消息就跪了,总体感觉第一次hr面,很多问题都没准备,之前的面经都没注意过hr面,感觉回答的不好。果然就一直没消息了。不过也算是为后面的面试增加了经验。
阿里
一面,现场面(40分钟左右)
坐着想了半天,实在是没回忆起问了些啥问题。。。记得期间还写了个算法,面完当时感觉面的还行,然后去等候室等待。5分钟后收到消息,可以回家了。。很遗憾,作为一个喜欢java的人来说错过了阿里,不过化悲愤为力量,回家刷牛客准备下面的面试了。
华为
一面,现场面(15分钟)
1、你学的最好的科目是什么?答数据结构
2、你用过你学的数据结构吗?说一个你觉得你用的最好的最经典的例子
3、bindle底层怎么实现的
4、对Android虚拟机了解吗?说下你知道的。
一面的面试官相当的和善啊,说完你好,第一句话就是:“你不要紧张,我们领导总是跟我们说要去发现别人的优点,所以我今天只是来发现你的优点的,你的缺点我全部看不到。”哈哈,整个过程挺快的也挺放松的。
二面,现场面(50分钟)
华为二面是综合面,比hr面的范围要广一些。会问成绩,专业知识,怎么看待华为,对华为的了解,为什么选择华为,对Android怎么看,以后的规划,发展方向。其中印象比较深刻的是问我Android用一段时间后就会感觉很慢,是为什么。当时语气让我感觉面试官是真的不知道一样。。不知道是不是面试官演的太好。。面完谈了下薪水,然后说通过了,欢迎你加入华为。感觉华为整个面试过程还是比较轻松,而且半天就搞定了,效率惊人,让我对华为的好感再一次上升。
百度
一面,现场面(30分钟)
等待的时候我就看到我前面那位一直在电脑那里弄着啥,心里就在想看来是要直接编程,还好刷牛客。
进去打完招呼,面试官你面的是Android?你对C/C++了解吗?因为我是搞ios的所以不太熟悉java。这样你先把这几个题做了吧,编程题等会写。然后就开始像笔试一样的做题。做完写编程题,都要用C写,三个题目还是蛮简单的:字符串逆序,字符串拷贝,带头结点的链表逆序。写完,面试官看了下,然后说好的,没问题,那好吧,今天就到这了。然后就让我回去了!回去了!去了!
一面感觉稍显坑,不过听班上一个同学腾讯一面是一个产品的面试,到后来直接问你们学校有什么好玩的这种问题。我才知道大公司也有不靠谱的时候,而找工作真的很看运气。。。
二面,现场面(70分钟)
面试官估计是看了一面面试官的总结,就开始吐槽,一面的时候是不是让你做题啊,直接把你答的题目贴上来了。。我:”。。。。。。“然后开始各种问题,从java基础到Android基础,到framework,问流程,然后问了个一个listview里面的item怎么优化,如果item的layout不同你要怎么优化。另外有:一堆字符串,4个G,内存1G,找到重复最多的那个,怎么做。iq题两个,64匹马每次6匹马,前4跑多少次。飞机每次能飞半圈,要飞一圈要多少个飞机。
整个过程很紧凑,加上我打的还算是蛮快,记得有几个基础问题记不太清,说明有的知识点还是漏掉了。然后继续回家等消息了。3天后等来了3面通知。
三面,现场面(1个小时)
百度的三面还是技术面,不过相对来说更多是问未来的规划,想要从事的发展。而且很巧的是三面的面试官知道我实习公司的那个OS,让我说下那个os现在的情况,以及我们组负责的部分,平时工作的情况,觉得自己和其他学生比的话优势在哪,还有软件学院和计算机学院的区别,优势在哪些。面试过程还是挺顺利的,百度三面的给我感觉除了更深入了解一些技术知识外还会看被面试者是否对自己的将来有自己的想法和打算,来了解一个人对自己的认识等等。三面让我对百度也有了自己的认识,感觉百度确实有自己的一套大公司的风范吧。
360内推
360内推的速度好慢,笔试在8月初,9月初才一面,有过了2个周才二面。只记得回答的全部都是系统流程的知识,基本上知道的framework知识和虚拟机知识都说了。还被问是否对驱动有了解,回答不了解了。然后被问了Android的安全性一块的知识。总的来说问的都是比较擅长的,毕竟实习就是做的这些内容。然后顺利进入三面hr面,hr面从成绩开始,然后一直追述到高中情况。当然少不了我上面网易被问的三连击。不过这次轻松应对了,嘿嘿。面的最长的一次hr面,居然一共面了50多分钟。。面完后被告知,360对技术审核很严,还有一场技术面。对了,要说明一面是电话面,二面和三面是视频面。然后四面是电话面,是其他部门的人来交叉面试,以及跟评级相关。同样问了基础知识,整个过程大概40分钟,其中回答不好主要是操作系统这一块,操作系统我没有复习,导致天坑。
腾讯
一面,现场面(60分钟)
所有的面试官里面,给我压力最大的就是腾讯一面的面试官了,一进去就感觉气度不一样。然后自我介绍,看了简历,就开始问工作情况,根据工作内容开始问如果遇到问题怎么解决,如果是这样的情况你会怎么做。有什么更好的方式去做。还能怎么做。。。最后让写一个两个链表的归并去重算法,说看一下我的代码格式。所有面试里面就这一次说了我都不记得多少次不知道,不会,不太了解。。面完出来感觉这跪定了。。。没想到事实告诉我,一切皆有可能。晚上11点半通知我第二天早上8点半二面。我只想跟大家说,校招季节不要睡的太早!!
二面,现场面(60分钟)
二面就很轻松了,也一个是知道我实习工作的那个OS的面试官,于是从项目聊到系统,从模块聊打设计模式,从兴趣点到未来规划, 然后还有基础和算法。面完感觉挺好的,让回去等消息就行了。最后提问阶段聊后被指出了我对操作系统需要补充,因为对一个it技术人员来说在未来的话可能会成为一个制约你提升的一个点。对此非常感谢面试官。
hr面(30分钟)
好吧,一切走上正轨,开始为什么选择腾讯,为什么选择深圳,然后又是三连击。巴拉巴拉说了一会后就问是否对部门有要求,还有什么问的之类的常规问题。就结束了。
CVTE
一面 (40分钟 ) 、二面(40分钟 )
前两面技术面,基本上简化版的360前两面,然后写了一些代码,问了下是更愿意做系统还是更愿意做应用,因为cvte两个方向都有。
hr面 (30分钟)
1、最近遇到的最大的困难时什么
2、记忆中自己最困难的时期是什么时候,是怎么面对的,怎么处理的
3、能接受的最低薪水,满意的薪水
4、是否有别的offer了,为什么要来面试cvte
其他问题记不到了。。。。最后似乎是被薪资给pass了。当时因为其他大厂已经面完了终面,于是说了相对来说比较大的数。。
五 、总结
紧张的校招对我来说就告一段落了,1个月不到直接掉了5斤肉,每天晚上做梦都在笔试的日子算是过去了。希望看到这里的诸君都能找到自己满意的工作,拿到满意的offer。
整个校招,从准备阶段开始我感觉至少要从7月中旬开始,毕竟要复习的知识面还是不少的,而且很多问题并不是复习了一个个知识点就可以了,而是需要连成片,了解整个知识体系。消化总结的过程还是需要花很多时间,加上刷算法题的时间,对于我来说时间把握的还算合适,稍稍晚了点,导致只好放弃操作系统成为天坑。另外对于复习知识点,个人认为全面当然很重要,但是还要有几个发展方向上的深入研究和里面,如果所有的知识都知识浮于表面,停留在会用的阶段,那面试官的评分肯定不会高,面试最重要的就是同一个问题你说出了,别人没有说的,你里面了底层别人没有理解的,这样才能体现出你的价值。对于笔试,我想说牛客刷到红名,笔试一定没问题!
最后感谢牛客网给我这次校招巨大的帮助,还有左老师的视频,若如初见大神等等小伙伴对答案的详细解析。谢谢大家的帮助。
最后的最后,说一句我最喜欢的话于诸君共勉: ”天才并非不可战胜,尤其是在面对年复一年不曾停歇的脚步。”