Hortonworks面经—明星Startup系列

Hortonworks是由Yahoo和Benchmark Capital于2011年7月联合创建的一家企业管理软件公司。该公司专注于Apache Hadoop框架,主要产品是Hortonworks数据平台,一款开源的基于Apache Hadoop的数据分析系统。小编对大数据很感兴趣,当然不能轻易放过它。加上该公司雇佣了众多Hadoop项目的核心人员,产品平台包括各种的Apache Hadoop项目以及Hadoop分布式文件系统(HDFS)、MapReduce、Pig、Hive、HBase、Zookeeper和其他各种组件,团队技术能力毋庸置疑:有Hadoop的创始人,整个团队对软件框架开发和大数据处理有行业领先的经验,和他们工作可以学到很多有用的技术知识。

Screen

小编投了SDE职位以后,和其他公司一样,首先收到HR的informational call。虽然是非技术面试,但同样是很重要的展示自己的机会。因此小编认真的准备工作经验描述,strength and weakness等等,电话过程也是顺风顺水。没想到这个公司有点意思,要求第二轮HR面试。看来第一个HR是小卒,纯碎初步筛选,第二个主儿才是说话算数的。简单说:同样的准备,同样的结果。

顺利拿到电面。电话那头是一位印度兄弟,态度挺不错的。说实话,面试官对你态度的好坏,大部分时候都是运气,同一个公司,同一个组的面试,不同的申请可能遇到皆然相反的情况,要不然怎么说要"广撒网"呢。回到主题,介绍自己,注意,和有技术背景的人说话,要格外认真,而且也要比HR详细很多:尽量清楚的表述项目经历的商业价值,用户需求,系统设计。对于大数据相关的项目,如何做到Scale和Fault tolerant,这些必须回答清楚。当然,如果面试者之前认真做过这些项目,总结归纳这些都不是问题。回答过程中,注意逻辑的缜密,至少能够自圆其说。

然后开始面基础问题:面试官问了很多Java语言的基础,一一挡过。Coding问题是常考的"Populate each next pointer"。这道题有很多解法,小编给出了一个不太常见的思路。结果面试官提出很多疑问,甚至质疑代码是不是有问题。小编没有慌乱,耐心的给他解释,最后相安无事。从之后拿到onsite的结果来看,这不是问题。

Baozi Tip:

  1. 说实在的,Java的基础知识很广,有多线程的,有OOD的,有Collection Framework的,准备全面不容易。不过不必担心,包子之后有一系列的基础类面试题总结,继续关注我们吧!:)
  2.  面试中遇到面试官的挑战:不要慌,这并不是意味着面试官否定你的代码。试想当我们去读别人的一大段代码,也肯定需要时间理解。因此在这种情况下,耐心的解释和论证解法就好。

Onsite

第一轮遇到的是VP of engineering。他主要询问了小编的项目经验以及项目管理相关的问题。由于是Onsite面试,所以小编充分发挥面对面的优势:利用白板或者手里的纸和笔帮助描述系统设计。对面试官来说,短时间内听懂其他公司某一项目的来龙去脉不是轻松的事儿,如果能把系统设计放在白板上,思路就会显得清晰很多,从而给面试官留下不错的印象。另外,注意强调自己的贡献:毕竟面试公司关心你有哪些技能能够给新公司带来收益。大部分面试官不会期待职场新人/学生有高深的管理方面的间接,因此如果能适当的谈一下流行的IT项目管理方法,比如Agile methodology, 应该加不少分。

第二轮开始,依旧是先问以前经验。小编还是用刚才提到的方法,不怕麻烦,在白板上讲解,把项目脉络传递给面试官,效果很不错。这位印度兄弟问了我Multithread programming的题。由于多线程是小编强项,因此轻车熟路。但是没想到,他自己对这方面倒不熟:小编常使用Java condition variable,但是印度兄弟习惯于用底层的Synchronized和Object上的wait 和notify。于是乎,剩下的20分钟都是小编讲解为什么从Condition variable不会造成busy wait。面完以后心里特别没底,感觉要被这哥们黑。

第三轮开始,调整心态,积极应对每一位面试官。这种心态事后证明非常有用(有offer为证),应该是别的几轮都加分不少,因此不怕一两个面试官拖后腿。想必这种情景很多朋友多会遇到,面试中碰到蹩脚面试官,或者自己发挥得真不好,但是记住,大部分情况下,最后决定Offer的是一群人,而不是一个人。而且有些公司使用Bar raiser制度,也就是面试结果由一两个人协调后拍板决定。如果Bar raiser这一轮面得好,别人只要没有强烈反对意见,都问题不大。这轮面的是一个recursive问题,中等难度,估计面试官主要想考察剪枝的道路。

第四轮首先是很多基础知识,OS,Java,Multithread programming...之后是一个树的问题,用Recursive的形式回传一些值。简单来说,做过Leetcode里"Max path sum"的朋友应该不会觉得这个难。

小结

Hortonworks非常重视面试者的过往经历,要求对做过的项目有详细的了解,对其中细节有详细合理的考量。并且,他们很注重专业知识,对广度和深度都有要求,毕竟这些都是工作的基础。面试题就是中等难度,虽然题目不是纯粹的原题,但是只要掌握常见的编程思想、套路,过关不是问题。小编个人特别想指出心态调整的巨大作用:当面试官不认同你的做法时,尽量做到耐心、清晰的讲解,不急不躁。这是这次拿到Offer的关键。最后简单说下,目前Hortonworks完成了D轮融资,预计明年第一季度上市,对Pre-IPO有兴趣的童鞋可以关注。

博客推送