本人住在有人间天堂之称的城市,6年多开发经验,最近2年主要在做大数据相关的开发,最近考虑换工作,基本也只考虑大数据相关岗位。目前新工作已经找好,但想分享一下最近面试的失败一些经历(成功的那些就不讲了),吐槽吐槽,跟广大吃瓜群众分享一下过程中的经历心得,我的语文体育老师教的,还请大家莫怪。
1.公司:国内知名电信运营商,其下面的大数据研究院,面两轮
一面:技术人员面,先自我介绍,项目经验相关介绍,问比较细,问了一些Hadoop、HBase的问题,JAVA基础,JVM内存分配小于32G原因,G1和CMS对比,问关系型数据库事务级别,脏读、幻读意思。
问题回答情况:其中G1与CMS区别我只讲了G1比CMS更耗CPU,但回收更快效果更好,两者内存划分设计不同,G1更适合大内存等,具体原因及细节没讲清;脏读、幻读只回答出跟数据库事务有关,面试当时忘记了具体什么叫脏读,什么叫幻读,有点分不清。这两个好像都没有答好,然后面试官问了我待遇期望。
二面:隔了4天,打电话过来让我去二面,是部门经理面,其也是做技术的。上来让我自我介绍,然后就围绕我讲的开始问。讲到之前项目中通过hbase的coprocessor的endpoint方式在服务端通过jni调用c++写的算法库实现数据计算过滤功能,然后这位经理就问为什么你们图像识别相关的CV算法不用JAVA写,要用C++?
我感觉有点懵逼,惊叹怎么会有这么小白的问题,但面上不能表现出来,简单回答说现在大部分算法都是通过C/C++写的,JAVA因为JAVA是完全面向对象的特性及jvm的关系,不适合做这么底层的事情,性能会有损耗。但似乎对方没有理解和听懂,表情带着不理解和质疑,半天从他嘴里吐出一个结论:你们不用JAVA写算法是因为你们公司搞算法那帮人只用C/C++去搞。
我当时有点无语,不知道该怎么跟这种对CV算法一无所知的人解释(或许我该说很多算法库都是C/C++写的,让你用JAVA调用cuda的库你累不累),但对方又接着问下一个问题,你怎么看待大数据领域接下来的发展趋势?
这个问题我从来也没想过,脑袋里突然冒出前阵子参加的云栖大会有个分会上讲得一些片段,糊里糊涂的瞎说了几句,说spark很热,使用的人非常多,后续也会集成流处理技术的一些新特性,另外说现在很多集群完全部署在云上,将来网络瓶颈解决有可能会往云上和云下自己管理的集群结合的这种方式发展。
这个答得的确不好,有点以偏概全了,对方显然对我这个回答很不满意,又问你认为磁盘IO性能会是瓶颈吗?
我回复说这个是目前大数据领域集群的主要瓶颈,但这个问题还好,应该会被克服改善(我想说可以把冷、热数据分离,热数据用速度快的SSD之类存储,但我没说出来)。
对方的目光有点嘲弄的感觉,不是很友好,后来就是问一些期望待遇及让我提问之类的环节。
结果:over,好吧,无所谓了,安慰自己,本来就不是很想去那边,因为自己偏实干型怕活太少(有点自虐),大概了解到的是对方的员工都过得偏安逸。
2.公司:某跨境电商企业,为一些国家和地区的特色产品做电商服务。
先跟他们HR聊,HR人不错,说话比较客气礼貌。
接着是技术面,一共4个面试官,分4轮面。
第1个哥们人挺逗,先让我自我介绍,看我简历上写着对CV相关算法有一定了解,好像跑了题似开始不断问我CV相关问题,我跟他说我工作早几年自己研究过一段时间这方面的东西,但不是很擅长,很长时间也没研究了,只是相比没接触过这方面的人来说要厉害一些,我也没有研究过Spark MLLib。不知道他哪根筋不对,问我你们公司深度学习相关的程序你有没有研究过,我说没,他又问我通常图像识别的一些流程,我大概说了一下,说得不是很细,他不停的惋惜的说道,哎呀,你这相比其他人没有特别的优势呀,你要是精通算法这方面再加上大数据就有亮点。我非常纳闷,心想难道你们公司是传说中人工智能和大数据结合的非常好的公司吗,莫非还是把无监督机器学习自我优化集成到你们的大数据系统中了吗?不应该呀,看你们的样子好像还没有那么NB,再说现在搞大数据的有几个会深度学习算法的,大多还是偏框架数据采集存储挖掘方面的。
第2个哥们,是搞大数据相关的,不过他基本不像是在面试我,反而是在跟我吐槽他们公司,说自己也是刚来了3个月,公司哪里流程不对,自己意愿无法左右其他团队等,不过就简单跟我说了这么一通就完了。
第3个哥们,具体是负责哪方面技术不是很清楚,感觉有点偏算法,就问了我一个题目,像是脑筋急转弯的编程题,题目是N个人围成一圈,从第1个人开始报数,第一个人报1,第二个人报2,依次下去,报到数字X的人退出圈子,下面的人继续报,请写个程序问最后留下的哪个人。我说这好像有一个便捷的方法或公式能计算最后一个人,不过我脑子想不出来,只能想一个简单的递归函数去实现,他说行,然后我就写了一个,写得马马虎虎。
第4个,是他们CTO面,这人阴沉板着一副脸,还没说话就感觉气氛不对,估计他觉得我看着比较年轻竟敢要那么高薪水,这种人的表情我也没少见。语气有点冷,先让我自我介绍,我介绍的比较简单,然后又说了一些项目中的情况,产品数据流之类的。
我们的产品的数据源是从ORACLE数据库里面定时去拿的,这个模块叫数据获取服务,流程很简单,就是定时读取数据后交给另一个模块,然后他说问怎么把这个数据获取服务拆分成两个模块,我很无语,说这个就是这么简单的去拿数据,没有可以再拆分的,他说就是要拆分成2个模块,我表示不知道他脑袋里怎么想的,说不知道。
然后问了我做的一些架构经验,我说自己设计写过过一个分布式实时计算框架,是借助了一个RPC中间件去实现的,整体各模块有点类似Hadoop MapReduce,但更像Impala,不需要每次创建启动Job。我跟他简单说了一下这个RPC中间件,说了一些优缺点,例如它的消息发布订阅机制没有像Kafka那样有很好的持久化机制,程序退出了,这些消息就没了。
他一脸的质疑,说怎么可能没有持久化,他问我那个中间件的名字,然后百度去搜,搜出来某个帖子上有人说的那个中间件的一些特性,讲到一个模块是专门做持久化的,然后他就拿来阴沉着脸质疑我说,你看,这不是持久化吗?我看他那样表情,不想再多解释什么,想说艹尼玛,有点常识好不,那帖子讲得完全不是一个东西,那个持久化不是指消息发布订阅的持久化,这中间件我好歹也用了小半年,你这么百度一搜就敢理直气壮质疑我,这水平真是CTO?
结果:他们HR后来还打电话问我跟CTO聊完感觉怎么样,我感觉自己脾气太好了,没有抨击一下那个CTO,就说他不太清楚我做的东西。HR把我的期望压得很低问我愿不愿意去,我直接说不去了。见过这么奇葩的CTO,就算加薪让我去,我还得重新考虑。
3.公司:某视频监控安防行业的知名公司,面试其下的大数据研究院的一个大数据开发岗位。
面试我的是他们的一个技术主管和另外一个技术人员,上来先自我介绍,详细问了一些项目相关的信息,然后问了很多Hadoop、HBase的一些原理,项目中rowkey和分区设计,问了spark streaming 并发度、createDirectStream和createDStream的区别,一段时间内分别生成了几个RDD,问了Kafka分区各副本是如何在集群各台机器上分布的等。
有好几个问题没回答清楚,感觉自己表现和准备不是很好。
结果:等通知。后来隔了好多天通知我去HR面,鉴于我当时已经收到其他offer,而且面试情况不是很好,估计会被压offer,就委婉放弃了。
4.公司:国内知名互联网公司,Hadoop研发工程师岗位。
电话面试:面试了25分钟左右,问了很多大数据的基础的技术问题。如Map Reduce相关,Reduce时如何Sort,HBase优缺点,LSM相关,前面基本上全部答出来了,但是最后问到有没有做过用Map Reduce处理数据join,因为我之前做的项目大数据框架比较简单,没有多表关联的查询,当时对join概念也有点反应不过来,就说没做过,然后又问Map Reduce join有几种方式,也没答出来。
结果:电面没过,就因为最后两个跟join有关的没答出来,就over了,尽管回去后恶补了这方面的知识。
5.公司:某做数据营销广告大数据服务的公司,大数据研发岗位。
面试我是的他们做大数据架构团队的主管,先自我介绍,讲了一些项目的东西,然后对方觉得我之前做得项目大数据架构比较简单,态度比较桀骜,然后又问了一些JAVA基础的东西,比如BIO与NIO特点与区别,问我有没有用过,我答得不是很好,但应该还过得去,然后又问Concurrent包下面有哪些类,ConcurrentHashMap与HashMap区别等等。我感觉他有点轻视我,不是一个公正的眼光在问我。然后又问我Linux命令熟不熟,吧唧吧唧问了好一些,我基本都答出来了。
最后他冒出一句,我们现在这边大数据开发的岗位都基本招满了,还缺一个大数据运维的,除了部署维护大数据集群,还要写一下oracle的udf。我问他这跟开发工作关系密切吗,他说关系非常密切,只是他们大数据的研发都偏向于写代码,不愿干这活。感情他是在逗我,QTMD。
结果:然后就没有然后了。
6.公司:某车贷互联网金融公司,大数据研发岗位。
先是电话面试:面试了25分钟左右,问了Hadoop Map Reduce资源配置、ElasticSearch原理的一些问题,问得比较简单,基本都没问题,问道Lucence如何实现对一个字段索引的时候,其实只要答倒排索引就好了,我比较二,把倒排索引怎么实现的大概讲了一下,细节还讲得不是很好。
过了几天,然后是直接面试,这次面的内容还是比较简单,面试官人感觉不错,就是有点二,怎么说呢,理解能力不太好,比如问我HBase 不同colomn family跟关系型数据库中的列的区别,我答说colomn family在物理上是独立的store file,可以只查询某个
column faimily,而关系型数据库一条记录是整行数据,查询的时候,需要整行数据都读出来,然后吧唧吧唧又扯出好多。结果你猜怎么着,他说我还是没有回答到点上,说
column family是面向列的。我有点无语,我都把它怎么是面向列的底层存储结构都讲出来了,你竟然还说我没答出来。问了很多问题都基本答出来了,就是面试官总觉得我没有答到点上,说自己貌似明白我的意思了,问我是不是平常很少沟通问题。这种人真是活久见,明明一个意思,我答得更详细清楚,他非说我没答出那个标准答案名称,面试这么多次,这种情况真是第一次碰到。最后问了Hive相关的,问我有没有用过,我说没用过,但这种跟基本SQL差不多,问Hadoop Stream相关,我也说没怎么用过。问得问题都比较浅,没有什么深入的问题。
结果:后来HR通知我说面试官觉得我技术深度不够,哎,有点搞笑的,其他几个面试下来要这么说我完全没意见,但是这位面试官问得那些问题我基本都答出来,而且他自己没怎么问我深入的问题。算了,奇葩总是有的。
其他一些经历就不啰嗦讲了,个人总结有几点如下:
1.现在做大数据相关的公司和人还不是很多,相比常见的如JAVA岗位面试官的水平明显要差很多,除了接触的几个知名点的大公司问题环节比较规范,不过这种现象应该接下来几年会有所改善。
2.有些时候不是你技术不行,而是你的谈吐表达能力给他们的印象,像我自己表达语言组织能力只能算中等可能还偏差,表达条理不好容易被pass。
3.感觉工作经历跳槽少的并不比频繁跳槽的受待见,像我6年只在2家公司待过,大家都知道,在一家公司工资是很难涨上去的,而对方人力往往以你当前薪资作为重要参考,就算你的水平比相同工作时间的人强很多,但对方公司不可能马上了解到,你想要跟这些相同工作年限人相同水平的薪资可能都比较困难,对方人力往往以此打压你开太高期望涨幅过大。
本文作者:雪姬
来源:51CTO