本人Android客户端开发岗。
一面:
昨天晚上在近乎绝望的一刹那接到了腾讯的第二天9:30的面试通知,本以为就此倒在了笔试的脚下。收到短信的那一刻,我并没有欣喜若狂,而是为明天的面试感到些许的不安。旁边的基友见状,便开始不停调侃我,我也知道,他是为了让我放松下来。
那天晚上,我在实验室温习了一下自己之前做的项目。(我并没有什么项目,因为没有参加团队,所以都是自己捣鼓的一些小应用,不知不觉实验室要关门了,才肯回去,心还是很不安啊。。不安是因为发现自己有很多东西没搞懂,所以淡定是以实力为前提的。)
第二天早上,我去面试地点的路上,心里只有一个想法,被虐就被虐吧,我这次去的目的不就是想看看腾讯需要怎么样的人、我还欠缺些什么吗?我的目的是秋招可以进入腾讯,现在进不进也不要紧了,我只需要知道他们需要怎么样的人,我可以凭从现在的努力用几个月往那个方向去奋斗。于是心里也就不怎么紧张了,反正是为了涨姿势。死就死吧!
签到之后,进入等候室等候,椅子都没坐热就被叫去面试了,当时也没什么好怕的,更多的是懵= =
进去之后,是一个挺Nice的GG,我敲门之后进去,GG开始对我嘘寒问暖后,我也就放松下来了。然后开始正式的面试:
你从什么时候开始学Android?
为什么喜欢Android?
简要叙述下做过什么东西?
这个项目(简历上)用到了什么?
做这个项目的过程?遇到的问题?
这个开源框架,有没有研究过它的源码?
这个功能怎么实现?
Android发送网络请求的过程?
线程创建的方式?
多线程之间的通信?
Android的Dalvik虚拟机与Java虚拟机之间的差异?
Android内存回收机制?和Java比?
是如何解决OOM的?
ListView的优化?
平时如何处理抛出的异常?
Java异常处理?
当用户用App的时候发生异常咋办?
有没有学过算法?
平时都上什么技术论坛?我回答用知乎涨姿势,看源码就GitHub。
最近有看什么博客吗?我说code KK的博客很不错,分析了很多开源框架的原理,接下来我也会去学习学习。
尾声阶段,他指出了一些我的不足,叫我回去补补,既然你这么有激情的话,就看看你能不能再一天之内补好(这是暗示我能过的意思么= =)。
最后我问了几个问题,最近也说了最近对于这次面试的想法,我的最终目的是秋招可以进去,这次只是想知道腾讯需要怎么样的人才,自己往这个方向去努力,当然这次能进肯定要进啦,hehe~没了,面试时长没有大神们那么长,只有35分钟= =。
这次问到的更多是你项目所涉及的知识,Android,Java的一些基础知识,而没有传说中的数据结构。。如果能过的话,我猜应该会在下一面放大招吧。总结了一下,总结还是缺乏网络编程,平时也没有去写一些涉及与服务器交互的东西,回去得补补了。发现自己很多东西都是处于“半知”的状态,是得加强加强。嗯!对的,平时学东西不用急,你并不是用了它就好了,你得知道它是怎么实现的?为什么要用这个而不用另外一个?它优越在哪?还可不可以优化?多想,想深一点,养成这个习惯,等到以后碰到相关的东西,都可以参禅悟道了,那才是真正学到了。嗯!加油!感谢腾讯,让我又涨姿势了,秋招等我!!
在此提醒一下大家,面试官问的东西是根据简历上写的东西来问的,所以你想要表现自己的长处,那就写在简历上,面试官更多的是想看你的强项能强到什么程度,而不是净抓住你的缺点不放。
(此段高手们略过。。)还有就是跟师弟师妹们说一声,找团队找团队,项目经验真的很重要,这并不是为了简历能有东西写,而是通过项目,你能在问题中学到更多东西。而且,很重要的是,你能在团队的队员学习气氛中成长,一个人是会累的,而多了队友的约束,你才会坚持不懈去学习,有团队的人的实力肯定比大多数没团队的人高一个档次(虽说也有单干奇才,但是还是极少数),我都后悔死了没团队了。不要怂!要厚着脸皮去问人家团队要不要人,我可以加入吗?老师是很欢迎这些好学的学生的(毕竟又多了个免费劳动力= =)。也可以去参加一些比赛,像腾讯网易阿里的一些学生创新App比赛之类的,组队去!记住,只要决定了,就得风雨无阻地坚持下去!人最怕的就是养成容易放弃的习惯。
OK!总结完毕,回去填坑了!
二面:
凭着涨姿势的心态,意外地过了一面,哈哈,也算是对自己努力的小小肯定吧(又能去涨姿势了)。前面一面的面试官跟我说了一下我的一些不足,回去也补了一下。今天早上去了二面,等候室只有两个人,哇,一面刷得好狠。。签到等了几分钟之后,就被叫去面试了。(过了这一面,下一轮的HR面就十拿九稳了,想想都觉得激动啊)
- 一进去没暖场,直接自我介绍。 //——我来自宇宙工业大学。。blabla
- 有么有女朋友? //——哭。。一上来就给我渲染了悲凉的气氛
- 什么时候开始学Android? //——blabla。。
- Java学得如何? //——这个问题好难回答,我纠结了几秒钟之后,只能跟他说说自己在看Java的什么知识了。。
- 谈谈第一个项目? //——blabla……
- 这表情用到的正则式你学得怎么样?//——噗~我直接百度的正则式,因为平时用不到,所以没去学。。
- 对异步的理解? //——因为单线程怎么怎么样,才用到多线程,blabla~神马!你把异步看作是多线程?对啊,怎么了?。。。
- 如何避免OOM? //——OOM的原因XXOO...防止内存泄漏啦~弱引用啦~还有Bitmap这个扑街用完要recycle掉~Disk缓存啦~
- Cache缓存机制? //——LruCache缓存啦~弱引用啦~
- 网络怎么异步加载? //——我对服务端交互不熟悉……(唉,C++和网络编程都是我的硬伤啊)
- 第二个项目的怎么实现? //——blabla
- 那个Universal-Image-Loader开源框架的实现原理? //——磁盘缓存,单条cache缓存,不过Facebook新出的框架有两条Cache。加载流程。。
- 在学校有没有参加什么团队? //——我一开始是跟着一个师兄学,现在单干。。。
- 谈谈对线程池的理解? //——blabla~有没有自定义过线程池?噗…
- 我队列有100条下载线程,线程池是5~10个,应该怎么调度? //——blabla~回去再看看这方面的知识吧。噗~
我们就面试到这里吧。(我去,算法都没问就赶我走了。。。)时长25~30分钟吧,估计壮烈牺牲了,不然我猜他会继续问下去的。
最后面试官的评价:平时多点参加团队开发吧,与队友相互促进,很多东西并不是用了就好了的,你要去深入解剖它的原理(我猛点头)。而且一样东西不是把它做出来就可以的了,你应该继续把它做好,做得更加完善!(感谢大牛的指导,我定好好学习天天向上)
个人感受:
- 我去!果然是大屌啊!腾讯leader就是不一样!我算是涨姿势了!
- 面试官好严肃= =本来激动的我都被问得变成紧张了。。
- 网络编程一定要加强!
- 异步编程一定要加强!
- 学东西,一定要把它给吃透了!要做到能参禅悟道(sz师兄说的这个词好经典)!
- 有个细节:我当时忙着画图有张纸被风吹下来了,自己当时忙着跟bla(他不停往深处问),回!头!忘!记!捡!了!
嗯,感觉自己的激情又上了一个台阶,我这次来面试本来就是想知道自己有哪些不足,这个岗位对我的期望嘛,能涨姿势就行了。每天都能涨姿势,这是很棒的感觉!好好加油!腾讯~秋招等我。待我再一次完成蜕变,让我上你可好?
最后,虽然止步二面,但我始终是一个要进腾讯的男人!