1 一面
面试的形式比较特别,是在时间到了后面试官给我打电话,然后互加微信、开微信视频聊天。
这次的套路是让我进行自我介绍,主要介绍下做过的项目,然后面试官会适时地打断我并进行询问。基于报的大数据开发,就挑了两个相关的项目说了。
- Spark
用Spark做了什么,为什么要用Spark,项目的成果是什么?
Spark的原理。
宽依赖和窄依赖。
Shuffle。
持久化是什么,有什么方式进行磁盘持久化,持久化时输出的文件结构(?)
Hadoop和Hbase有了解吗? - MySQL
说下MySQL的索引。
什么样的数据适合用聚簇索引? - 算法
说下快排的思路。 - 提问环节
pdd里的大数据研发一般做些什么?大致的业务场景?
面试前光是补充Spark和MySQL的知识点已经花了很多时间,其他的大数据组件根本没实际去了解,准备不够充分。
2 二面
运气还算不错,居然让我进了二面。这次的形式还跟上次一样,用微信视频聊天。
- 自我介绍
- 项目
项目里面用到了Hadoop、Spark,具体用这些东西做了什么?怎么用的?
跟上次一样上来就问了项目,但是比上次要更详细,详细到讲里面的算法了。最后以面试官表示内容太过专业而作罢。 - 论文方向
emmmm第一次遇到问这个的,还问我有没有论文压力emmmmm然后为了验证我是不是真的学地理的还问了我知不知道k-d tree。(老实说这玩意在业界不算主流,但我的论文研究里正好有涉及到,就BB了一通) - Java
很常规,HashMap的底层原理。讲的过程中提到了红黑树,就追问了下什么时候用红黑树?为什么要在链表和红黑树之间切换。 - 手撕代码
撕之前问我是要做SQL题还是Java题,虽然接到通知以后重点还是放在了SQL上,但怕翻车还是选了比较熟悉的Java。
题目是有个1G的文件,文件里每行都是1个单词,统计出现频率最高的100个单词。
一开始以为是个分治+topK的问题,但后来发现因为同一个单词可能会在不同分区里出现,单纯的topK行不通,就改成类似WordCount的思路了。然后面试官提示我参考下Hadoop里的Shuffle过程,就想到分区的时候不按照文件内容的组织顺序,而是对单词进行哈希分区,保证同一个单词分到同一个文件里。这个时候就可以使用topK的思路了,单个文件里先统计,找出各自的前100,然后聚合,找出总的前100。找前100的方法本来想的是排序,面试官又提示我说可以用堆,于是就把用最小堆的思路叙述了一遍。
因为用的微信视频,代码就用笔纯手写在白纸上,然后拍照给他看并进行讲解。代码可以说是写的炒鸡乱了,而且肯定是编译不通过的那种233 - 关于笔试
笔试考得怎么样?为什么考得不好呢?
emmmmmmm说多了都是泪 - 在校绩点
因为是学霸批吗。。那岂不是要凉凉。。。 - 之前在华为实习,为什么不考虑留在那?
这题有点措手不及,只好说实习部门的工作方向跟我兴趣不搭了。 - 你理解中大数据是什么样的(具体不记得大概这个意思)?
一面问过面试官拼多多的大数据业务,说是SQL和flink。我就把这答案改成了历史大数据的分析挖掘和流数据实时计算两方面。
追问:你倾向于做哪一方面?
结合技术栈还是第一种。
又追问:你愿意写SQL吗?(嗯?察觉) - 提问环节
拼多多的技术面体验意外的不错,尤其是二面的面试官,在撕代码的时候会不断地提示我对算法进行优化,这个过程自己也能学到东西。手撕代码是真正意义上的手撕啊,没有牛客的阉割版代码提示更没有IDEA,我太难了。。。