分享一个大数据的面经
作者:Commando20180403011197
链接:https://www.nowcoder.com/discuss/142963?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网
面的公司并不多。拿到了头条和阿里的意向书,如果不出意外应该就是这俩选一个了。
没有实习,没有项目经历,什么都没有,上去就是硬怼。本科不是相关专业,研究生转方向但是是留学生,也不是特别厉害的学校。各方面都比较劣势。
优势就是特别能背。
头条:
一面:面岗位相关的基础,上来面试官直接发现我什么经历都没有,我直接说熟悉hadoop。挑了HDFS让我讲一下。
NN和DN。
HA的实现
zookeeper的原理,zk是如何保证一致性的,zk是如何判断session超时,connection超时的。如何触发回调。
client和HDFS文件的读写过程,延迟太高,怎么解决。我当时脑子一蒙,直接说了设计的就是高吞吐量的文件系统。
yarn的结构,RM和NM的交互,如何分配任务的。
yarn在什么层面调度,和k8s和mesos有什么区别,内存调度是什么怎么调度的,如果考虑CPU怎么调度的。如何实现隔离的,Control group 和Namespace是怎么回事。
手撕算法,链表排序。
人生中的第一次面试。。。。面的一团糟,多亏面试官使劲高抬贵手。。。
二面:面的计算机基础:
上来手撕,剑指原题,两个栈实现一个队列。
问了一下转专业的经历。
讲个简历的项目。
操作系统中的进程和线程的区别。
JVM的内存模型说一下,堆,栈,永久区,GC。
Java的多线程。
Hadoop的MR和Spark有什么区别,为什么Spark有优势。
TCP
用过什么数据库啊,然后就没往深了问了。
手推神经网络上的反向传播,把链式求导写出来,激活函数sigmoid。
介绍一下LSTM,和GRU的区别。
过。
三面:技术深度,问得特别特别细
看过源码对吧,hadoop的HDFS,Yarn,MapReduce源码讲讲,精确到方法和类。
客户端和NN的通信过程,和DN的通信过程。
HA中的*过程,如何防止脑裂,为什么需要fencing,SSH连不上怎么办。
checkpoint的过程
yarn的状态机和epoll
yarn的公平调度器和容量调度器和FIFO
yarn抢占
MapReduce全过程,分片怎么读的,为什么用快排,换别的行不行,多路归并怎么实现的,环形缓冲区怎么实现的。
场景,很多牛逼的电脑,大CPU大内存,网卡超烂,如何优化? 强制本地化,选高压缩的序列化格式,核心就是尽量减少网络IO。
场景,一个加载在内存里的HashMap,Key和Value全是int,从硬盘读进来只做查询不做修改,不考虑查询效率,尽可能提高空间效率,稍微考虑一下时间效率。从JVM调优到数据结构到GC到。。。。
手撕,实现一个线程池。
在spark和hadoop中如何处理数据倾斜。
spark的调度过程,DAGScheduler如何划分stage,TaskScheduler如何调度任务的。Spark的shuffle是什么样的,怎么优化的。
评价一下Hadoop和Spark的代码风格,我曹,我随便说了说,怕送命题。幸好我说完了他就自己说了,疯狂点头。
Java的多线程,讲讲锁。synchronized和reentrantlock的区别。讲讲阻塞队列,volatile
synchronized为啥是非公平的,这个我真不知道,回来一顿狠查,赶紧记住了。
Java的Obejct谈谈
Java的容器谈谈
Java的NIO用得咋样,不咋样。。。那就不聊了。
MPI聊聊
你Scala用得怎么样呀,Python怎么样啊
设计,设计一个RPC框架,我看你简历上做过,谈谈思路,观察者模式讲一下,并发容器。
设计,现在有一个RPC框架,需要使用线程池,多次复用socket,TCP,怎么传递命令。变相考hadoop,使用操作码。
结束。这一面的面试官超强,被压着打。
四面:Um…..和我这个岗没有一毛钱关系。
手写一个leetcode hard,就是两个数组,找全局中间数那个。
问问搜索。
如何构建倒排索引
BM25
如何加速查询,WAND算法细节。
倒排索引的log时间合并
如何评价一次query,设计一个机器学习模型,如何设计这样的模型,如何提取feature,用什么模型
如何做查询补全 Trie
设计一个查询缓存
如何对倒排索引进行空间压缩,我先说了OptPForDelta
如何选择最优分裂点,抽样,然后算。
手撕个代码实现一下
如果不抽样,你这样是全局最优吗?我说是啊,他说不是。。。。对每一个算一个。好吧,他说得对。
还有别的优化方式吗 Variable Byte
聊家常。。。。出了门感觉人生都灰暗了,跪
美团:数据开发,就是数据仓库开发,好多重复的我不写了。已经拒了
一面基础:
讲讲项目
java基础
HTTP和TCP
写俩算法,可以用IDE。都是超简单的,有一个台阶,还有一个m的n次幂,自己写个测试试一下
写个sql
mysql的索引,如何实现的,何时失效,聚簇索引和非聚簇索引,B+树
写个单例,懒汉饿汉。
处理数据倾斜
Spring系列会吗?不会
二面
hadoop和spark简单讲讲,只说结构原理不说源码
spark的调优
JMM,全程不打断,我一口气说到了底。。。
数据仓库的星型模型和雪花模型,上卷下钻
Hive
还有啥忘了
spark sql,窝不会
三面
讲项目
HTTP,TCP
操作系统的进程与线程
Java多线程,线程池
爬虫讲讲原理(我项目里用了)
场景:实现一下chrome里那个历史记录这个功能,用啥数据结构怎么实现
python,MPI,数据仓库,你都会点什么都说说
问了项目里的数据清洗,补全和NLP,然而我的NLP一点深度学习没用,感觉对面可能有点失望。
问了推荐系统
问了flask,Restful API
tensorflow怎么实现的知道么,说了个大概,caffe会用么。不会
阿里:阿里在我投简历两个月之后捞我,而且面试简单得出奇,只考广度不考深度。。。。我还是犯了好多错误,提醒大家,如果面试这种面试官不深问的,一定要自己使劲说,不要说两句就停了,他觉得你只会这么多。
一面: 这个面试官是个做算法的
说个项目
Java基础,说说容器
多线程,线程池
java的序列化方式,hadoop的序列化方式,Avro,parquet,transient关键字
spark的原理,我就说了个架子等他问,他不问了!
设计模式,观察者,hadoop用了啥,我说用了组合,等他问我第一第二关系的事,他不问了!
业务题,拿spark实现个业务逻辑,拿嘴说就行。map然后reducebykey然后。。。
一个白板代码,是他工作业务逻辑的抽象。
还问啥我给忘了
二面三面开始集中面试,连着面了我2小时,我一起写了。
说个项目,问我项目实现细节。工程细节,你这怎么加速,Geohash怎么用的。并对我的辣鸡项目表示了鄙视。
spark streaming和storm,flink的区别
各种分布式计算框架的区别
storm如何处理反压,如何保证流的可靠性的
flink会吗,不会
hbase的row key设计,我现在就要范围查询value怎么设计。
yarn里面机器崩了,怎么让任务接着算。。。我说了重启nodemanager重算这个分片,如果这个分片也不想重算呢,接着算,没这功能没说出来。回来想想其实还是应该能说个思路的。
说了AppMaster的故障怎么实现的HA
zookeeper是如何*新的Active Namenode,没仔细说,说了个原理他又不继续问了,后悔。
大数算法:10亿个int查重,讲思路,布隆过滤,mapreduce,bitmap,算法的复杂度说说
机器学习竞赛跟我说说,讲了特征工程,提了GBDT,然而我觉得他并不知道GBDT是啥,讲完和我说你这就是java的hello world啊。主要也是自己讲的不好,我也很是哽咽
HR面:
阿里这个HR面是真的犀利,我也没经验,第一次面这种话里带枪的HR面。
中间委婉谈及了我的学历,我的水课,我的没实习没经历。。。被贬得一无是处,我也不敢顶她,只能避重就轻解释一下。现在回想可能表现得太没自信了更减分。
拿到了意向书。。。。没有谈薪资,没有加面,感觉要拿劝退价了。