分享一个大数据的面经

    作者: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面。
    中间委婉谈及了我的学历,我的水课,我的没实习没经历。。。被贬得一无是处,我也不敢顶她,只能避重就轻解释一下。现在回想可能表现得太没自信了更减分。
    拿到了意向书。。。。没有谈薪资,没有加面,感觉要拿劝退价了。