2017春招经历-Android移动开发

三分靠运气,七分靠努力,剩下的90分就看面试官让不让你过了。

好了言归正传

        又到了一年一度的“金三银四”,互联网行业的很多大公司,包括腾讯、阿里、百度、网易、京东、头条、美团、滴滴、携程、去哪儿、新浪、完美、美图等数十家都开始进行春招实习生,各公司招聘实习生人数有所差异。比如说腾讯,今年春招预计招聘2000实习生,按技术类占比50%,也就是大概在技术岗位会招聘1000人左右;而也有像携程这类的第二梯队,在本次的春招中总计只招200人,那技术岗位就更少了(携程笔试过了,至今都未收到面试邀请)。总体上来看,貌似会有很多岗位和机会,但事实上是:拿到了一家公司offer的大佬很多都同时拿到了其他家相同级别或者更低级别的公司offer,这样一来,其实很多公司的很多岗位都是虚位以待的,所以就业形势依然是非常严峻。


内推

        就是一般所说的提前批。有认识的学长、学姐在公司的,通过通过内推码、推荐信等方式可以参与内推。
        内推的简历要求还是挺高的,如果公司透过简历,看出了你个人很优秀,那么就有的机会接到公司打来的面试电话(所认识的很多大佬都通过这一渠道拿到了offer)。如果在这时候,简历没过也没关系,因为一般简历池中的简历一般都会进入到笔试环节。
        在此次春招中,本渣只有收到了阿里的电面(阿里好像是每个参与内推的人都能接到电话),简直是low得一逼。阿里在给学生做电面的态度还是很nice的,第一次打电话过来,电话声音太小,于是约了下午面试的时间,果然如我所料,没按时打过来(这算是第一次约面试,紧张一下午);第二次打过来的时候,手机放在实验室的会议室,出去拿键盘,被同学看到把手机拿出来给我接,当时距离京东笔试开始不到10min,一脸懵逼,接了电话说明情况后,约了星期天面,再一次挂电话;星期天果然没打来电话,持续几天也没接到消息,默认以为GG了,结果那天和兄弟一起在打DOTA的时候,大概开始了20min,电话响了,立马传送回泉水,出去接电话,当时头脑里面浮现的都是打团画面hhh,回答问题时晕乎乎的。面试官也是很套路地,一上来就让我做自我介绍,我基本也是按照上面的套话来说,面试官听了之后,就接着问我在项目中负责的模块,我就说主要做的是课表部分,然后分析里面所包含的技术点,基本每说出一点,面试官都会追问实现原理,比如说:

  • 网络通讯方面:OKhttp3的实现原理(当时头晕,瞎说了些啥也不记得了)
  • Java方面:面试官:“有看过Java源码吗?” 我:“看过一些” 面试官:“那你觉得Object类里面的 equals() 和 hashCode() 两个方法有什么区别?” 我:“¥%……¥#¥%#……@!*~…^”(全七八糟瞎编了一些,其实当时也没去看过这部分,还好没打得太离谱)

  • 数据库方面(问了具体问什么了)

  • 数据结构方面:面试官:“学过数据结构么?” 我:“学过” 面试官:“那说说你知道的数据结构” 我:“顺序表、链表、栈、队列、树、图,树包括:普通二叉树、完全二叉树、二叉排序树、二叉查找树、平衡二叉树、红黑树等,在Java中…………” 面试官:“能简单说说红黑树吗” 我:“红黑树是平衡二叉树的一种改进, 只有红色和黑色两种节点,其他的不太记得了……”

  • 拓展:面试官:“最在在学什么?” 我:“再看一些算法” 面试官(丫的那还连红黑树都说不出来):“在看一些什么算法呢?” 我:“主要再看一些动态规划,因为感觉动态规划比较难”(早知道就别说什么算法了,估计面试官的期望值是在一些数据挖掘的算法上,这种基本算法就不要说现在还花时间去研究了)

  • 结束:问了一些近期的打算,还有什么需要了解的问题。

内推一面卒

笔试

        由于应聘者的数量十分庞大,无论家企业都不可能只通过面试就能百里挑一,所以,‘笔试’凭借着低投入、高收益成为了企业第一道筛选人才的利器。

        笔者参加了8家公司的笔试,包括:美团、网易、腾讯、京东、携程、美图、头条、阿里(按照时间轴排列)。

  • 美团题目还是比较简单的,有专业知识选择题、代码改错+简单编程+Android异常填写、数字智力题、图形智力题几个部分,奈何是人生第一次,经验各种不足;
  • 网易笔试借助了牛客平台,选择题一般,编程题有一定梯度,由于好久没刷oj,所以在第一题的C语言字符转数字上纠结太久,后面时间不够,AC 1.6,无缘面试,其实第二题也挺简单的,暴力可过,可惜没做,第三题的话可能需要找一下规律,卡时间复杂度,只AC了60%,最后匆匆忙忙赶着做了Android简答题,都没来得及保存就交卷了;
  • 接下来便到了鹅厂笔试的环节,绿白相间的笔试页面背景,做起题来还是非常舒服的,选择题30道,全是不定项,有一定难度,可以说全程都是没把握的,问答题两道,一道考基础,一道考项目经验,编程题也是两道第一道hash,第二道字符串搜索,可以在线调试,但不能看通过率。总体上来说,鹅厂的笔试做了之后心里是没底的;
  • 京东的选择题是单选,比较有难度,编程题第一题超简单,第二题是概率dp一开始没看出来,掉坑里了,那天先做了编程题再去做选择,明显感觉时间不够,战略失误了;
  • 到了4月7号的携程笔试,题目分选择题、编程题、附加题,难度适中,选择题有专业知识和智力题几个部分,编程题加上附加题一共就是三道编程题,AC了2道,一题hash,一题最大子序列(这题应该是当时后台数据有问题,当时的思路完全想错了,也照样AC了,囧);
  • 记得美图的笔试是在面完腾讯后的那天周末晚上进行的,主要还是将它作为了一次经验的积累,这次笔试分为选择题和问答题两个部分,选择题比较常规,轻松完成,问答题中包含了编程题,有一道是要求以O(n)的效率求100以内的质数,需要用到数学公式(埃拉托斯尼筛法),还有一道Java的,都是需要直接把代码写答题框里,无编译环境,在我做的几次笔试算最简单的了;
  • 今日头条的笔试分两批次,两次都比较刚,直接就是四道编程题(移动开发岗位的把一道编程题换成了问答题),但最难的那一道(任务执行策略)依然被放在了编程题最后一道,是一题比较另类的dp,难度挺大的;
  • 最后参加的一场笔试是阿里的,阿里笔试选择题给我的感觉就是考的很广,各种高数线代概率论的题,估计题库是涵盖了大学计算机专业所学课程,时间完全不够,编程题没怎么读懂题目,难度估计一般,由于选择题做的太差,心态崩了,就没继续往下做了。

经历这么多次笔试,总结起来:选择题喜欢考一些基础知识:操作系统计算机网络数据结构算法分析Java细节和底层C++细节Android知识编译原理(目前只有京东笔试选择题出现);而编程题非常喜欢考hash去重动态规划,尤其是dp那题,能不能AC决定着你能不能入围面试环节。


先做一个简单的自我介绍吧

我的名字叫**,本科就读于西南科技大学,所学的专业是软件工程,参与开发过i西科Android版开发的项目(一款服务于学生、老师的校园app)。

        这是我在“二面”、“HR面”、“技术专家加面”时,把简历递给面试官之后(当然,加面是电话进行的,没有递简历)第一件被要求做的事,也基本上是面试必经的第一个环节。基本上每一次面试我都是说上面这句简单的自我介绍(实在是想不起来还有什么可以介绍的),如果有参加过ACM大赛、并获奖的话,也可以提一下,应该是一个不错的加分项,所以,作为一位程序员,如果不太擅长言辞的话,大概地介绍一下自己的教育背景、项目经验、编程竞赛经历就OK了。


面试

人生就是这么刺激,你完全猜不到下一刻会发生什么

        原本是没想到腾讯笔试可以过的。那天在做携程笔试的时候,手机震了一下,头探过去一看 ———— “腾讯面试邀请函”,这时候真的是又惊又喜,本来都不怎么报希望的笔试竟然过了(多谢腾讯爸爸给我面试几乎),这次春招又突然看到了希望。

一面通知

        转眼间,面试过去好久了,大概把自己记得的细节回忆一下吧,也当是春招回忆录。

一面

        一面时间定在了4月13日,距通知时间只有两天的时间,而且4月12日还约考了科一,完全没时间去复习啊(或许这才能挖掘出一个人的真实水平吧)。
        4月13日,早上6点就起床了,带上《数据结构与算法》、《Android面试宝典》,背上书包,出校门打了个滴滴快车就直奔火车站了。然后坐上了高铁也是一直抬着书再看,可以说是高度重视这第一次面试。感觉上很快就到了成都东站,然后便直接搭地铁到了华西坝,出站后,跟着地铁马上就找到了明宇尚雅饭店。
明宇尚雅
然后随便找了一家面馆吃了碗宜宾燃面(吃东西的时候还在看着书,怕哪里有遗忘了,真是临时抱佛脚啊)后就到酒店的大厅等候了。
等候大厅
来到这里后,墙上贴着の二维码最先引起了我的关注,仔细一看原来是微信扫码签到(如上图门上贴着的所示),然后两块银幕是类似微信墙的叫号系统。人很多啊,别看照骗上的很多作为是空着的,这只是在大厅里面等候的,还有人在外面、在来的路上、在另一个厅中圆桌面、在更高楼层的房间中和面试官一对一面(一开始还以为人这么多,会是圆桌面,后来问了外面坐着的HR小姐姐才知道技术是单面,签到后面试官会单独通知)。

        原本通知计划是11:30面的,结果到12:04才收到面试微信很短信通知,可能是前面的大神和面试官聊得太high了吧。过了11:30后的等待是非常焦虑的,不知道什么时候会突然叫到自己,也不知道早上还能不能轮到自己,书也看不进去,反而在接到面试通知的时候还有点兴奋,拿出简历(第一次没用文件袋装,看见周围的人都是从文件袋里面抽出简历,于是二面的时候我记住了),坐上电梯,前往高楼层找面试官面试。第一次,没敲门就直接进去了(感觉这样也是不太礼貌,二面时学会了)。

        面试官看上去是个中年男子,典型的程序员模样,性格方面严肃而和蔼,挺聊得来的。受以前听过的一群优秀的人去面试最后录用的确是观察了环境把倒地扫把捡起来那个人的典故影响,我进去的第一件事就是认真洞察环境中的细节,发现桌子上的纸上有前面面试的人留下的笔迹,注意看到了诸如“ndk”,“JIN”,“makefile”的字样。这样也算是看到了些提示吧,我后面就估摸着往这个方向带一下节奏。把简历递过去后,面试官仔细地看了一会儿(看得出他是仔细看了我的简历),好一会都没和我说话,我这边还感觉有些尴尬,不知道该做点什么,就静静地等着。然后便是对笔试内容进行提问:面试官“你感觉腾讯笔试怎么样?”   我“挺难的,主要是选择题都是不定项,选了心里面还是没底”   面试官“编程题第一题是怎么做的?”   我“我是用hash的方法来做的,……,但是我觉得我做的还是有些问题,我的代码要是遇到负数可能就不行了”   面试官“你的算法是对的,AC了的”(我“好吧,那我有什么办法”)   面试官“算法的时间复杂度是多少?”   我:“考虑输入存值和遍历取最大值,操作次数应该是n的常熟被,所以效率应该是O(n)”   面试官“还有没有更好的做法?”   我“这已经是O(n)的效率,应该是最好的了吧”(不知道当时哪来的自信)   面试官“你下去再看看吧,还有更好的做法”(难道还有O(1)的?不过后面想想,确实还可以做一些优化);然后让画了Activity的生命周期,之前在动车上才温顾了一遍,没什么问题(有个单词突然忘了怎么拼写,相当尴尬,不过面试官不会计较这个);接着便开始问项目(表演时间),我向面试官请求能不能直接使用手机展示,面试官很爽快地答应“噢,这样最好!”,直接掏出了前面预测会用到的Android手机(幸好带过来了),连了酒店WiFi,打开i西科,直接递给面试官体验。体验过程中也在和面试官不断交流,告诉他课表这块就是我做的,并帮助解决使用过程中遇到的一些困惑。同时也给面试官讲解了其中包含的一些技术点,包括周数那里使用的是jsoup爬虫等,在说jsoup的时候面试官还问我怎么拼写的,可能是在百度或记录,大概他们平时是使用Python来爬的吧。然后就大致介绍了整个项目,用到的框架、网络框架OkHttp、数据库GreenDao(这里问了为什么不用Android原生的数据库,大致从greendao更好的封装、不用直接写sql语句而不必太担心查询操作所带来的的性能问题方面的问题来答),然后问了我有没有用到动画,很自信地点开了课程详情小卡片,左右滑动,展示动画效果。然后问这是什么动画,刚刚在车上看的《Android面试宝典》发挥作用了,直接答补间动画,然后问怎么实现的,主要通过使用了什么类(Animation)移动时高度和透明度的变化来回答。接着是项目中遇到的问题,我说了内存泄漏,然后是怎么检测到的,我主要介绍了我们是如何使用Android Studio自带的工具找到的,最后是怎么解决的,通过把强引用转弱应用和软应用解决;然后问了JVM的内存结构,由于前面笔试知识的一些积累,这个还是能够大致讲得出一些东西来的(虽然现在看了 智能指针 之后才比较全面地了解到);接下来问了一下ndk,因为前不久研究过这个领域,所以回答得还是比较详细的,还具体分析了一下Android Studio和Eclipse下配置ndk的一些异同,Java实例方法和静态方法在调用Native方法时这些C++方法中所传入参数的一些区别(实例方法JObject,静态方法JClass),(记得到这里)面试官要问的技术问题基本就没有了。在最后,还问了我,我们老板什么时候放人,(听到这句话突然感觉一面稳了,笑~)然后我说这只是实验室的一个项目,随时都让我们走的,然后问了一下实习时间;最后的最后问了我还有什么问题,我问了我选的WXG大概是做些什么,然后才知道面试官是SNG的,接着又问了下SNG这边的情况,了解到面试官这边的团队最近在做手Q的NOW直播,也表示了自己对于图像处理方面的兴趣,然后问了一下成都这边的公司在做些什么,于是了解到了原来王者荣耀是这边开发的,其他的还有一些外包、运营之类的,总之做技术的大部分是在深圳,最后试探性地问了面试官接下来是不是等通知就可以了,面试官也很肯定地说,等通知。至此,一面算是结束了,人生的第一次现场面啊,很激动,和面试官聊得也很high。

        一面完的感觉还是挺好的,当天还去了川大找了同学,感谢川大望江校区的超兽君请我吃的午饭(重庆森林),还有川大华西校区**姐姐请我吃的晚饭(干锅),晚饭吃到一半就去赶高铁了,结果……………………

复试
复试短信

发车20min收到的明天复试短信,我的内心是相当崩溃的,虽然也非常喜悦。没办法了,只能第二天再早起从学校赶过来了。然而一看票,WOC,最早的都,买完了,然后买了早上第二班,但还是闲太晚,于是多出了30用系统自动抢票,几个小时后终于是抢到了,又把原先买的退了,一路波折啊。果然不在省会城市,什么都不方便。

二面

        第二天也是很早就起床从学校出发了