Interview of Alibaba

Hujiawei Bujidao


     

Interview of Alibaba


阿里实习的事情终于尘埃落定了,自己的坚持也算是有了一份答复,这个过程真的要感谢很多很多人,2015年注定是我遇见我的众多贵人的一年!

阿里一直是我想去的公司,在我心中它的Java技术已经完全可以笑傲江湖了,作为一个Java迷,很想有一天能够在牛逼的公司写着最牛逼的Java代码!本科毕业之后,和好友阿Q约好将来一起去阿里,就像大三那年和兄弟小熊约好一起去T大一样。下面就讲(tu)讲(cao)今年找实习的那些事情吧。

神马搜索

去年秋天我就去试过了神马搜索(阿里系),因为它很近,就在五道口,来回很方便。当时一面还算顺利,面试官准备充分,先出了两道数据结构和算法(平衡二叉树和DP),好在不算难,我虽然没复习也差不多写出来了。然后就开始问JVM垃圾回收机制,线程同步和通信等问题,面试官人蛮好的,慢慢引导我回答出来,之后就聊我做的项目了。最后聊到实习时间的时候,我说不能保证每周4天以上,最多可以做到每周3天(因为项目例会和助教的缘故),但是面试官说这边要求时间一定要满足,否则就没戏了。后来我想了想,回了封邮件给面试官说我时间不行就这样结束了。今年返校后我又发了份邮件咨询当时的面试官,每周3天可否,还是不行,于是就放弃了神马搜索。

友盟

在等待神马面试官回复的那段时间,我又去试了下友盟(已经被阿里收购了)。面试那天要坐公交车,结果晕车吐了,到了那个地方就快虚脱了,而且因为交通阻塞差点晚点了!第一面面试官问的问题不多,就问了下Android中组件的属性weight的作用是什么,我过年前刚做完贰货项目所以还记得,我还解释了几种常见的使用情况。面试官然后开始问我算法题,后来才知道是LeetCode上经典的Two Sum这道题,我当时觉得肯定要排序,所以这道题我的解法没有达到面试官的要求,其实使用hash可以做到线性时间。面试官觉得我有些项目经验,于是就让我过了,紧接着就是二面面试官来了。二面面试官看起来很拽的样子,上来问了问我做的人脸识别应用XFace的事情,问我用的什么人脸识别算法,然后我就简单解释了下PCA和LDA等算法。之后他就开始出题了,问我手机屏幕解锁的界面共有多少种可能的解锁图案,我当时觉得我算不出来就果断放弃了,然后他开始问一道算法题,又是后来我才知道他是想出LeetCode上的Median of Two sorted array,但是他把题目都记错了,说成在两个已经排好序的数组中的找某个数字(是不是很简单,ORZ),题目让我感觉很奇怪,然后我就问了几个问题确认下,他貌似没感觉有问题,然后就让我写代码吧,这时候他出去了,在我写完了之后他进来说题目出错了!就这样,二面就这么尴尬地结束了,然后就没有然后了,至今没有收到邮件说要还是不要。给友盟一个差评!

腾讯

后来到了腾讯找实习生的时候了,我想了想还是投了简历报了名,结果很快就有人联系我。他是在北京的腾讯在线媒体事业部的,然后说找我面试,可我说我还没有笔试,他说不用,先面再说,然后就这么过去了。面试那天有些尴尬,我不知道他的名字和电话,好在最后还是面上了。面试官人很好,我们就是聊天,聊项目,聊Android,聊人生。面试官希望我在那里实习,然后在那里转正工作。但是,我说自己是南方人,毕业以后会回南方,不会呆在北京,然后又没有然后了。

再后来一个周五突然收到短信说明天笔试,结果就稀里糊涂地去笔试了,题目出得让我很不开心,我投的Android客户端开发,可是一道相关题目都没有,大部分是C++题目,还有JS和OC的题目,简直无语了。虽然我都会点,但是都已经忘记了啊,可幸运的是还是过了,然后去面试,结果那天人很多,还有不少霸面的,结果我在预约的时间晚了一个多小时后才面上了。当然我心情已经不太好了,而且人多很压抑。面试官比较严肃,先是出了LRU Cache这题(LeetCode上有),我很早做这题时是用Python写的,但是完全忘了,然后现场想的方案不是最优的,面试官一直就不搭理我,也不引导,就是让我写代码,写错了再写,时间就这么一点一滴地过去了。然后问他我可以用Java中的任何已有的数据结构么,他说可以,然后我提到了可以用LinkedHashMap,这题直接就搞定了,可是他貌似已经不想听我说了,然后我就感觉没戏了,慌了。然后他开始问Android相关的问题,Activity的生命周期,我当时脑抽了,画完了之后不确定onCreate和onStart哪个是先回调的,真的很久没写Android了!后面还问了ListView如何进行优化,判断链表是否有环存在等。面完之后已经觉得完了,果然,后面的结果就是被刷了。心虽不甘,但是没办法,都是我的错,一是没有好好准备,二是没有调整心态,三是没有跟面试官好好沟通。

阿里

吸取前面的教训,阿里的面试之前我怒刷LeetCode,一面的时候加上以前做的题目已经将近100道题了(算法不强实在没办法快速刷完)。阿里面试给人的感觉很好,老远就有人在路口提醒你怎么过去,进楼之后马上有工作人员接待,看下通关卡之后就可以下去准备面试了,等待的时候还有零食可以吃。面试时间也是把握得相当好,我刚坐下没多久就开始面试了。一面面试官有点微胖,憨厚的样子,先给我出了一道数据结构题,将一颗二叉树变成一个双向链表,在问明白了题目意思之后我就开始写了,面试官说不用急,有的是时间,让我放轻松。写完之后,我解释了下代码,然后面试官看了下,让我修改下,节省点空间,然后我又开始写另一个版本。面试官还是很耐心地说,没事,慢慢写,有时间,我先去上个洗手间。哈哈哈,当时给我感觉就是很舒服,回来后面试官估计今天真的是累了饿了,然后开始吃点东西。完了之后,面试官就开始出题了,范围很广,计算机网络的题目比较多,协议模型,三次握手,一些协议在哪层,GET和POST方法之间的区别,交换机,CS模式下断开重新连接的情况,HTTP POST中的boundary,滑动窗口协议,URL编码等等,网络我真的记不得了。然后问了Android,Android Handler机制,Service(线程/进程,AIDL),ANR怎么办,内存溢出/内存泄露的情况,Dalvik虚拟机存储结构,Android系统启动过程,NDK/JNI和反射,Dalvik如何执行dex文件等等。然后问了Java,回收机制,==和equals,copy方法,还问了装饰器模式和策略模式的区别,可惜我忘了策略模式是什么情况!整个面试过程就是很多我都能回答一些,但是不能回答地完整的样子,面试官感觉我还行,基础比较全面,也希望我以后能在某些领域(比如JNI等)好好深入了解下。一面就这么通过了,真心感谢面试官,现在我还和面试官加了微信呢,哈哈哈。

二面是在五一放假之后,五一这几天我都不管出去玩,就出去玩了一天,吃饭逛街。其他时间在准备Android的面试题以及LeetCode,这次面试之前LeetCode刷到130多题了,Android的面试题也是看的差不多了,所以信心满满的就过去了。这次面试等待了蛮久,足足等了一个多小时才到我,现在回想起来,感谢上帝这么安排,我的面试官竟然是无线事业部技术总监!面试官很平易近人的样子,首先是让我自我介绍下,然后我就聊了聊自己的情况,他对我做的项目比较感兴趣,然后就一个项目一个项目地聊,整个过程很轻松的样子。完了之后,面试官问我上次面试不会的题目回去看了么,我说大部分都看了,但是滑动窗口协议没看,面试官也笑了笑。接着他出了一道我怎么也想不知道的题,就是手机是怎么和服务器端进行通信的?看似简单,但是手机怎么和基站连接的,基站又是怎么和服务器连接的这些我都不知道,完全回答不上来。然后面试官问我Android 2.x版本存在的方法数目不能超过65535的问题,这个我刚好在浏览一个博客的时候喵到过,但是不记得应该怎么办,然后面试官让我想,我想估计应该就是用类加载器在运行的时候去动态加载吧,然后通过反射去调用类的方法(最近看Google官网的一篇教程时看到了这个问题Building Apps with Over 65K Methods)。然后面试官问我如何实现应用的动态更新和动态部署,这样就不用频繁地提交给AppStore等待漫长的审核时间。我说没遇到过这种情况,然后面试官让我猜!当时,我感觉我一定要想出来,这一猜决定胜负啊!谢天谢地,我猜对了一些,我当时感觉用OSGi的方式实现模块化,后来面试官给我讲了很多手机淘宝的事情,去年他们是怎么实现模块化的,各部门开发的应用之间如何实现隔离性,还要保证质量的。就这样,我幸运地走向了最后的HR面。HR姐姐人也不错,整个过程中主要是问了我的项目的事情,我们聊了每个项目,她会对项目问得比较细,估计是想要看是不是你亲手做的吧。最后问了我的意向,我也不知道有哪些部门可选,然后就说了二面面试官说的手淘,感觉很有挑战性。

经过几天漫长的等待之后,终于接到电话说通过了,然后去参加了圆桌沙龙,认识了几个新朋友,大家以后都是无线事业部的,哈哈哈,加油,一起奋斗!期待暑假实习海豹突击队的时候圆满完成项目!

image

Hujiawei is a mobile developer Guangdong, China http://javayhu.me/ 本博客所有文章均为原创,请勿随意转载,如需转载请联系我 (hujiawei090807 AT gmail.com) 我在小专栏有个移动开发技术专栏,不定期分享移动开发的核心技术,总结移动开发的实战经验
所有文章皆为原创,内容制作精良,保证干货满满,欢迎订阅 (https://xiaozhuanlan.com/u/javayhu)
>>> 我最近在Android面试指南小专栏里面写了一篇稿子 [Android面试——算法面试心得] ,欢迎阅读!<<<
下面的二维码是我个人维护的微信公众号“潇涧技术专栏”,会不定期分享移动开发的核心技术,欢迎关注!