距上一篇Blog发布已经两周左右了。终于来填这大坑中的最后一铲土了。最近工作有点忙,所以一直没能腾出功夫来解决这最后一篇。压轴的两家是宜信和阿里巴巴。至少阿里算是重量级的公司了,BAT么。相信会有很多人希望知道阿里面试的情况。希望能为大家提供帮助。
宜信:
公司背景:
互联网金融,目前线下P2P的老大,有名的产品:宜人贷
职位描述:
架构师,通用技术平台部门
面试过程:
笔试:
无
一面:
电话面试,面试官职位未知
总时长近2小时的电面。面面俱到。
自我介绍、对于宜信的了解。
更多的介绍了产品的部署结构,为什么这样部署。
能够支撑多少用户访问。为什么这样设计。
红包平台刨根问底的了解了如何设计,如何测出的2000并发单台。
如何弹性的扩容。
二面:
面试官职位未知。
自我介绍,介绍项目情况,画部署结构图。
算法题:
已知一个int数组,内部数据不重复,先单调递增,再单调递减。编写代码求最大的数。
典型的二分法解决问题的情况。但是我答的不是很好,因为考虑的过于复杂,考虑了先递减再递增的情况。
三面:
面试官职位未知。
由于面试官做过OpenFire所以对IM服务器感兴趣。
先问了如何保证消息推送的可达性。
我答,两个机制,分别保证在线客户端和不在线的客户端(ios)的消息可达性。
第一个机制,引入消息反馈,客户端收到任何消息都需要反馈给服务端一个确认收到的消息。否则服务端间隔一段时间后再次发送消息。
第二个机制,ios使用pns服务,所以消息的推送是由苹果保证的。但是苹果是没有推送确认的机制的。所以不知道发送到苹果pns的消息是否正常送达。于是,在发送一部分正常消息后,跟一个确定的错误的消息格式的消息。如果pns反馈了错误,证明之前的消息正确送达pns。否则,重发。
然后是考并发。问题1:一个应用,高并发时发现无响应了,大概出现了死锁。使用什么命令来查看是什么原因导致的。
命令我记不住了,每次都是现查。。。不过答案应该是top,ps,jstack这几个。当然,当时我就直接说记不住。
问题2:检查出是因为高并发put数据到一个HashMap对象中。为什么会死锁,如何解决。
当时先给了一个答案,替换为concurrenthashmap。但是因为没看过源码,无法答出为什么会死锁。然后回答了改造一个hashmap使用读写锁。其实当时有点懵。乱答的。。。不过有并发包相关的内容,也知道读写锁。也就过关了。
四面:
面试官,技术总监。
基本上是聊天,介绍部署结构,如何解决服务上线切换等。
这是第一个关心我在公司获奖情况的面试官。问我获奖的原因。
问我更愿意写代码还是出方案。我说更偏写代码一些。不写不敢出方案。
面试结果:
拿到offer
总结:
1.如果不知道的就老老实实说不知道。
2.有些公司还是很看重稳定性,在一个公司长待,有好处。
3.一些常用的东西,要了解如何实现。不要想当然就用了。否则也会像我一样尴尬。
4.常用的排查问题的方式,尤其在线不能停机的情况下。要准备充足
阿里菜鸟网络:
公司背景:
阿里的地网战略。除了当年马云高调3000亿做物流的新闻之后就一直很低调
职位描述:
资深Java开发工程师,大概P6
面试过程:
笔试:
无
一面:
一面是电话面试。
面试官级别未知。
开始是对方的自我介绍,了解阿里菜鸟的背景。
然后是我的自我介绍,按照时间轴将自己的学历,工作情况,技能情况串起来一一说明。
面试官根据履历先问了开发套件的问题。都做了什么,为什么自己做框架。
然后问的是目前的项目是什么,在里面扮演了什么角色。
面试官非常细致的下载了这个项目的手机应用。从注册到功能使用一一的提出改进意见。
整个面试持续了一个半小时。80%的时间都是面试官在谈应用的设计思路。
阿里人的为用户思考的习惯已经变成强迫症了,这是面试啊。。。
然后,就是应用的统计信息,比如日活,用户停留时间等。
整个面试过程,细致入微。让我非常感动。
二面:
二面,两位面试官,至少P7以上。
面试官自我介绍,介绍阿里菜鸟在做什么,同时了解了我对阿里菜鸟是否了解。
然后自我介绍,根据简历和自我介绍的内容,一一的问了最后一个项目的工作内容。主要涉及产品架构。
到此为止其实与其他公司没什么不同。
之后他们问了产品的pv和在线人数。问出了一个问题,为什么你们的用户数量这么少,却设计容量如此之高的系统。
里面的分布式和缓存分片,异步队列等组件其实冗余非常大。
这个问题是很多公司都没有问的,一味的认为架构的容量越大越好。
最后,我说这是因为产品预计要达到这个容量,所以才这样设计。
面试官给我的反馈却是,有多少用户,做多少事情,遇到问题,再进行扩容等做法。
架构是生长出来的。不是一开始就那个样子。
我说,淘宝最早也是PHP的,我看过子柳先生的《淘宝十年》。
其中一个面试官说,我都不看,因为我经历了淘宝十年。
这样,我就懂了,阿里这样伟大的企业,其实还是因为有这些思考正确的人。
就这么聊了近3个小时,二面结束。
三面:
终面,两位面试官:技术面试官阿里云P9、HR
自我介绍,还是老套路,按照时间轴进行自我介绍,维度为:学习、工作、技能
对红包平台感兴趣,介绍红包平台的设计。
面试官针对一致性和可靠性提出疑问。我根据详细架构进行解答。
了解并发如何控制访问,保证前端不受后端限制影响。
然后问了个基本算法题:
有一个文本文件,里面全是非结构化的英文文本,如何统计每个词出现的频率。
这是一个典型的hadoop问题,如果按照普通的map统计词频,list+collection排序进行回答,面试官肯定会接着问,文件很大、内存很小如何处理。
我是直接说这个是一个hadoop的词频统计问题,hadoop我不会。
面试官说,那就普通解法,不考虑内存大小。
然后我就按照最简单的方式回答了。问题通过。
其实面试官还可以问,如果不考虑hadoop,就自己手写,如何考虑在有限的内存中解决大文件的词频统计问题。
这个就得分步骤了:文件分割,部分词频统计,统计结果合并,统计结果分割,统计结果排序,统计结果归并排序。
技术面试就这么过了。HR面主要是一些方向性,稳定性的问题。这里不提也罢。
面试结果:
拿到offer
总结:
1.阿里这样的传奇的公司是因为有一些苛求着细节的人。我认为,只有有实力的公司或个体才能够苛求细节。
2.对于架构不要追求和痴迷,并不是越大越复杂越好。这个度是很难掌握的。一流的架构师要有这个自觉。而不是吹嘘自己的能力。
3.沟通能力很重要,阿里这样的公司喜欢这样的人:技术过硬、学习能力强、沟通能力强
4.快速学习能力是必备技能
好吧,终于按照约定写完了这个面试系列。算是给自己个交代。咱这个拖延症患者也算见到了治愈的希望了。还是希望能够帮助到同行业的其他朋友们,早日找到自己喜欢的窝。还有,不要打听博主入职了哪个公司哦。哈哈。
声明:此系列文章只代表个人观点,如果任何个人或团体对文章有疑问,请联系本人沟通,我会考虑修改。
还有,禁止转载,禁止人肉
之前的文章:
1.我的面试经历--缘起
2.我的面试经历--起伏
3.我的面试经历--转折