秋招结束,拿到了几个意向offer,除阿里五面跪,其他比较顺利。面经中有自己补充的内容,也有春招实习生的,这是我准备秋招的所有面经,希望有用。
运维部,基础平台研发工程师
(一面)
1.手写快排 2.如何利用zookeeper进行选举,画图说明 3.用zookeeper做任务分配如何实现 4.什么是脑裂 5.如何解决脑裂?并分别说明namenode和resourcemanager如何避免的脑裂? 6.如何实现分布式数据存储的一致性 7.讲一下一致性hash 8.一致性hash与paxos算法的区别 9.讲一下2PC,以及2pc什么情况下会出现数据不一致 10.红黑树的应用场景 11.Linux物理内存分配 12.对/proc的理解 13.讲一下代理模式 14.讲一个外观模式的适用场景 15.JVM垃圾回收 16.讲一下INODE,以及什么时候会创建Inode 17.I/O复用(select与epoll的区别) 二面
1.设计题:给定一个文件大小为10M,存储在HDFS上,同时有10万台机器下载这个文件,给此场景设计一个架构。当文件大小为1G、10G时如何进行设计? 2.为什么HDFS中的block默认大小为64M? 3.说一下HDFS中namenode的实现? 三面
1.看过哪些书? 2.人生目标? 3.介绍项目 4.通过项目有哪些收获?
(系统部,计算与存储系统研发工程师)
一面
1.说一下你了解的分布式算法有哪些? 2.说一下你对HDFS源码的理解,读源码有哪些收获? 3.MapReduce的任务如何和HDFS结合起来? 4.介绍一下2PC的协议? 5.2PC在什么时候会发生阻塞? 6.HDFS写入数据时发生故障如何处理?(分三种情况,客户端down掉,DataNode down掉,namenode down掉) 7.ZAB写入如何避免阻塞的? 8.Paxos协议在实际系统中,节点时如何选取的?Paxos协议中所有的角色都需要相同的逻辑吗? 9.如果Paxos协议在HDFS中使用的话,如何使用?需要使用几台机器运行这个协议? 10.Paxos协议的主要目的是什么?在Hadoop中举一个例子? 11.HDFS中的三副本一致性如何设计? 12.HDFS写入数据的过程如何保证写入数据的一致性的? 13.一致性hash为什么加入节点后可以保证相对的balance的状态 14.哪些适用到了一致性hash 二面
1.问项目 2.说一下HDFS的设计 3.Federation namenode4.HDFS写入数据时是如何降低延迟的同时保持数据一致性的? 5.Linux进程调度的策略? 6.讲一下SMP体系结构? 7.讲一下对指令流水线的理解 由于获得了运维部的offer,所以系统部三面拒绝了。
美团,技术工程及基础数据平台,后台(大数据方向)
一面
1.手写树相关的算法(层次遍历的变种) 2.JVM内存布局 3.什么情况发生栈溢出 4.讲一下双亲委派模型,以及其优点 5.单利模式会破坏双亲委派模型吗? 6.TOP K问题 7.Map与reduce任务数量的指定 二面
1.O(1)时间内删除单链表中某一个节点 2.滑动窗口的中位数 3.Zookeeper如何实现master选举 5.Storm的结构 7.Hbase行健的设计原则 8.Hbase的日志合并树,以及为什么Hbase使用这个结构 9.手写Scala实现wordcount 三面
1.kafka与传统消息队列的区别 2.一致性hash 3.你为面试美团做了哪些准备 4.其他的都是看什么书啊,如何学习的大数据啊相关的问题
滴滴,只能回忆这么多了
1.有一百个用户同时买一件商品,如何保证请求的顺序性 2.设计一个大型网站架构,尽可能的全面详细。 3.手写算法堆相关,取最大的K个数 5.讲一下僵尸进程与孤儿进程 6.讲一下fork函数的底层实现过程 8.Yarn中的appmaster down掉怎么办?
头条
面试问题基本都在整理的问题之内。
三面,第一面主要问Java、撸算法,
二面问Hadoop、spark等大数据相关、撸两个算法,
三面问的比较杂,网络编程,Java,Linux,撸两个算法
CVTE、华为、中国电信IT研发中心的面经都在整理的其他问题中有,不在详细列举了。
阿里
一面:
1) .简述ZAB协议以及zookeeper 2) .叙述你所知道的分布式一致性协议 3) .叙述ZAB集群数据同步的过程P70 4) .简述paxos算法 5) .Java中接口与抽象类的区别? 6) .简述jvm的内存布局 7) .可达性分析 8) .简单叙述你所知道的垃圾回收算法与垃圾回收器 9) .在垃圾回收对象的时候程序的逻辑是否可以继续执行 10) .java中创建子类实例时会创建父类实例吗? 11) .简单叙述minor和fullgc,结合网易一面第五题 12) .简单叙述深度优先和广度优先遍历,以及区别? 13) .网络请求的全过程,从客户端到服务器端? 14) .TCP和UDP区别 15) .HashMap源码,问map源码问题?以及与linkedHashMap,treemap不同 16) .java虚拟机new一个对象创建的过程 17) .说一下Java中的类加载机制? 18) .双亲委派模型 19) .简述分派 20) .对象的内存布局: 21) .简述虚拟机栈中各个部分p239 22) .java中的泛型擦除?23) .java中的引用24) .死锁是如何产生的以及四个必要条件? 25) .页表的作用、内存调度算法: 26) .简述虚拟存储器 27) .用java实现生产者消费者的三种方法 28) .简述java Object类中的方法有哪些? 29) .简述java中内部类30) .将对象从年轻代到老年代是如何判断该对象的执行了多久?以及什么情况下发转移?哪些对象在老年代中?31) .通过可达性分析, 32) .散列解决冲突的方法 33).说三种你熟悉的排序算法,简述快排的过程,以及冒泡、插入、快排的区别?以及如何优化快排和冒泡排序? 34) .简述平衡二叉树的插入删除等操作 35) .简述为什么会出现锁机制 36) .Java线程同步的方式有哪些? 37) .synchronized和volatile(可见性与禁止指令重排序)区别?
二面:
1) .请说出java中散列表、树所对应的容器类。Hashmap如何解决冲突的? 2) .concurrentHashMap的实现 3) .jdk 7与jdk 8中hashmap实现的区别 4) .hashmap的初始容量为什么设置为16? 5) .Arraylist与LinkedList区别? 6) .ConCurrentHashmap是如何实现的,采用的什么锁? 7) .CopyOnWriteArrayList? 8) .简述java内存模型的happen before原则 9) .简述ThreadLocal实现原理 10) .hashmap保存自定义类是需要重写自定义类的那些方法 11) .Java中如何创建线程? 12) .Java线程池使用有界队列实现时的饱和策略有哪些? 13) .启动线程时,Start与run的区别是什么? 14) .JDK1.8的新特性? 15) .介绍一下AbstractQueuedSynchronizer? 16) .介绍一下Condition? 17) .介绍一下Reentrantlock? 18) .java中ReentrantLock的使用场景 19) .java中synchronize与Lock的区别的使用场景 20) .java中synchronized代码块的实现,以及jdk1.6对锁的优化? 21) .java中的线程池实现有哪些?FixedThreadPool底层使用的是什么任务队列? 22) .java中的线程有几种状态?什么状态是阻塞状态? 23)怎么去看一个java进程中有哪些线程处于阻塞状态的? 24) .java中的方法区中存放哪些东西?Jvm如何控制方法区的大小以及内存溢出的原因和解决。 25) .Jvm outmemery的种类。 26)方法区会发生OutofMemoryError吗?什么时候会呢?发生之后你怎么解决? 27) .详细说一下域名解析的过程DNS? 28) .请说一下spark的RDD? 网易
一面:
1) .C 中free与delete的区别 2) .一个程序在内存中都有哪些数据,哪些会占实际的内存 3) .操作系统中虚拟存储器的作用,分页从逻辑地址到物理地址的映射过程 4) .jvm如何判断对象是否失效,可达性分析是否可以解决循环引用 5) .说出你所知道的jvm垃圾回收算法 6) .简述zookeeper。 7) .简述zookeeper部署的时候以多少个实例部署,为什么? 8) .zookeeper的某个机器挂了,整个集群如何处理 9) .zookeeper在重新选取leader的时候,还可以继续执行事务请求吗 10) .请说一下zookeeper中leader的选举算法,即fastleaderelection算法 11) .请说一下为什么会存在zookeeper,它可以用在哪里? 12)Zookeeper可以做横向扩展吗?可以通过增加机器可以增加集群的性能吗? 13)Zookeeper在yarn框架中如何实现避免脑裂的? 14) .请实现单利模式。 15) .产生死锁的四个必要条件: 二面:
1) .请说一个你在Hadoop中理解最为深刻的点,比如hdfs等 2) .简述tcp与udp的区别 3) .简述tcp的三次握手与四次挥手?以及为什么四次挥手会有time_wait状态? 4) .tcp为什么是三次握手不是两次,以及三次握手的缺陷? 5) .简述socket的过程。 6) .游戏排名,可以使用什么数据结构 7) .简述tcp的流量控制与拥塞控制机制 8) .讲一下HDFS是如何容错,存储信息的,如果用户想hdfs写入数据,请讲一下整个写入的过程。重要??????? 9) .在向HDFS中写数据的时候,当某写某一个副本的时候出错怎么处理? 10) .HDFS的读流程。 11) .说一下Namenode中维护的元数据中都存储了哪些信息? 12) .讲一下Hadoop与spark的区别。 13) .讲一下Hadoop和YARN中的任务调度算法和任务队列
美团
1.简述java中的深拷贝与浅拷贝,C 中的浅拷贝与深拷贝 2.Jvm垃圾回收分代以及何时发生minorGC以及FullGC, 3.讲一下zookeeper如何保证数据的一致性 4.讲一下同步异步(进程和IO) 5.讲一下epoll,以及与select的区别? 6.讲一下hashmap与concurrenthashmap的区别 7.ThreadLocal的实现 8.Synchronized的实现(无锁队列等) 9. jvm的内存布局10. CAS底层实现原理 12. Java中的锁优化 13. Hive数据倾斜的原因以及处理办法?Hive的map端聚合为什么能解决数据倾斜? 12.介绍yarn框架 13.介绍工厂模式以及其适用场景,说出你了解的几种单利模式的实现方式 biner函数的使用发生在哪个阶段,以及其使用的条件是什么?Partition的使用阶段? 14. java开发过程中遇到过哪些exception? 15. Hbase删除一条数据的过程。 16.Mysql有哪些存储引擎?有什么区别? 17.聚集索引与非聚集索引。 18. Linux的more命令 19.事务的隔离级别 具体见该链接 20.联合索引及其实现原理 21. Mysql优化
以下是整理的各个技术框架可能问到的问题:
Hadoop:
30. Fsimage与EditLog? 31. Fsimage与EditLog合并过程? 32. HDFS的安全模式 33. HDFS工具? 34. HDFS中在clientProtocol中出现的基本概念的抽象? 35. HDFS clientProtocol接口 36. HDFS ClientDataNodeProtocol接口 37. HDFS DataNodeProtocol接口 38. HDFS InterDataNodeProtocol接口 39. HDFS NameNodeProtocol接口 40. HDFS读数据与写数据。 41. HDFS源码实现中有哪些优化? 42. HDFS数据节点目录结构 43. HDFS数据节点的实现 44. DataNode流式接口的实现? 45. DataXceiver处理读请求? 46. DataXceiver处理写请求? 47. HDFS写入过程的几种可能? 48. HDFS写入过程DataNode出错如何处理(具体过程)? 49.写入过程客户端崩溃怎么处理? 50. HDFS DataNode升级过程? 51. HDFS中的distcp与fastcp? 52. Hadoop中输入切片inputsplit? 53. HDFS namenode的HA的实现? 54.简述联邦HDFS。 55. Hadoop如何实现全局排序 56. HDFS什么时候会出现副本数量多于设定值得情况? 57. HDFS如何添加和撤销数据节点 58.切片? 59.如何避免切片? 60.简述mapreduce的工作机制,以及mapreduce1与mapreduce2的区别? 12.mapreduce之间如何选择压缩格式? 12.mapreduce的计数器? 12.Yarn中的ApplicationMaster故障后如何处理? 61.简述yarn中的资源调度器? 62. Hadoop YARN常见问题以及解决方案 63.浅谈Yarn RM的总体架构 64.浅谈Hadoop Yarn内存和cup的资源调度(管理)和资源隔离机制(cvte问题)? 65.说一下Yarn中APPmaster向resourcemanager申请资源的过程? 66.说一下Hadoop Yarn中的container概念(cvte面试,资源调度的过程)? 67.简述mapreduce1的不足? 68.简述mapreduce的shuffle机制? 69.简述mapreduce的shuffle机制存在哪些缺陷? 70. MR速度较慢? 71. Combiner函数何时被使用? 72. reduce函数如何知道从哪台机器获取map输出? 73. Hadoop作业调优? 74.简述Hadoop archive? 75.简述Hadoop对于小文件的处理方法? 76.简述Hadoop的安全认证。 77.简述Hadoop如何衡量两个节点之间的距离。 78. HDFS上的副本时怎么放置的 79. HDFS的一致性模型 80.简述sqoop.
Hadoop namenode源码:
81. HDFS的namenode目录树(namenode的第一关系管理)?(携程) 82. HDFS namenode保存镜像文件之后,读取镜像文件时,如何判断是目录还是文件。P341 83. HDFS namenode的数据块和数据节点管理(第二关系管理)。 84. HDFS数据块副本状态的管理(主要是FSNameSystem)(携程) 85. HDFS有一个数据块损坏如何处理? 86. HDFS有一个数据块,如何知道其副本的情况呢(携程) 87.客户端在写入数据时只写入一个数据块,如何处理(携程) 88. HDFS块的复制?(携程) 89. HDFS写入的过程?(携程) 90. HDFS里面怎么建立三副本的过程?(携程) 91. HDFS删除多余副本的过程(源码)?(携程一面、三面均被问到,CVTE一面问到) 92. HDFS数据块复制时目的节点的选择原则(源码)?P408 93. HDFS删除一个文件的过程(源码)?(携程) 94. DataNode删除一个数据块的过程(源码)?(携程) 95. HDFS客户端删除一个文件是同步还是异步的(源码)?(携程) 96. Namenode中对于数据块的管理(增删改查)。 97. Namenode中对于数据节点的管理(携程)? 98. Spark中划分stage为什么以宽依赖为基准?(携程) 99. Spark中的DAGScheduler和TaskScheduler的区别及任务调度过程?(携程) 100. Spark中的stage必须要等所有父stage执行结束吗?(携程) 101.当下游stage从上游stage拉取数据时,需要上游stage保持运行(对等)还是关闭?(携程) 102.当上游stage关闭时,将数据存储在哪里?(携程) 103. Spark的shuffle中的map输出是否有序(携程) 104. Spark的shuffle中的map输出结果的处理结构是什么?(携程)
Storm相关:
1.简述storm的计算结构? 2.storm怎么完成对单词的计数?可靠的单词计数呢? 3.metaq消息队列,zookeeper集群storm集群就可以完成对商城推荐系统功能吗 还有其他中间件吗? 4.storm的组件,逻辑? 5. storm中的Stream grouping有哪几种方式? 6.提高storm的并发度? 7.storm的可靠性如何实现,包括spout与bolt两部分?P37
Kafka相关:
1.分布式的情况下,如何保证消息的顺序? 2.如何提高kafka的效率?即优化? 3. kafka与传统消息队列的区别?
spark相关:
1. 说一下spark中的基本工作流程? 2. 说一下spark的运行模式? 3. RDD是如何容错的? 4. reduce如何获取map任务的输出? 5. spark map端计算结果缓存处理并简述appendOnlyMap? 6. spark map任务如何输出? 7. spark任务调度模块? 8. spark的存储管理? 9. spark的存储管理中的RDD持久化? 10. spark的存储管理中的shuffle持久化? 11. 说一下spark中的shuffle过程? 12. 说一下spark Streaming? 13. 说一下spark Streaming支持的输入源有哪些? 14. spark streaming与spark作业的关系? 15. spark Stream优化? 16. spark streaming优点缺点(常问)? 17. spark Streaming的容错处理? 18. spark Stream与storm的区别 19. spark中reparation与coalesce的区别? 20. spark中persist与cache的区别? 21. 讲一下完整的ETL过程 22. flume如何采集数据
又补充了一些:
1.简述你所知道的分布式一致性协议:2PC 3PC paxos算法 2.简述paxos算法与Zab协议的联系与区别? 3在HBASE中master的下线是否会引起Hbase完全宕机? 4说明zookeeper ACL的权限模式: 5简述zookeeper中leader选举的过程 6简单叙述zookeeper的内存模型 7.简单叙述zookeeper的日志文件与数据快照 8.简单介绍一下堆(数据结构)及堆排序 9.简单叙述Hbase? 10. Hbase中的zookeeper挂掉会出现什么? 9.Hbase中master进行负载均衡的算法?P336三种 9.在Hbase的特点? 9.在Hbase与Hive的区别? 9.Hbase表中新建列对行健有什么影响? 9.在Hbase中regionserver发生故障后的处理过程? 9.Hbase region切分过程?P264 9.Hbase合并过程?P265 11. Hbase中的逻辑模型与物理模型? 12.介绍Hbase过滤器? 13.介绍Hbase计数器? 14. Hbase协处理器(coprocessor)? 9.触发器与存储过程的区别 10.在Hbase二级索引 10.在Hbase region预分区? 15. Hbase中rowkey的设计原则 16. Hbase中get和scan的功能以及实现的区别 17. Hbase中cell的结构 15.Hbase中region太小和region太大带来的冲突.以及如何解决 18. HBASE中compact用途是什么,什么时候触发,分为哪两种,有什么区别,有哪些相关配置参数? 19. Hbase中列族的设计原则 11. Hbase的操作主要有get put scan delete(墓碑)。简单介绍delete,及其缺陷。 12.Hbase建表时的注意事项? 13.Hive与Hbase整合后,什么时候创建外部表以及内部表? 14. Hbase接收数据,短时间大量导入会被锁,如何处理? 15. Hbase存储一行数据的过程 16. Hbase查询一行数据的过程 17. Hbase性能优化 18. Hbase布隆过滤器:存在一定的误判率,且不可删除 14. Hbase中的Htable是否是线程安全的 15. Hbase目录结构 16. Hbase Hfile结构 14. WAL日志为何共享一个而不是每个region一个,以及WAL的切分.P274 15. LMS树的优缺点 14.聚族索引与非聚族索引的区别 15. B 树与B-树的区别 15.java中thread与Runnable的区别? 16.java中闭锁CountDownLatch与栅栏CyclicBarrier的区别? 17.通过trie树统计词频。见附件 19.大数据量下Mysql查询优化措施 20.长连接与短连接? 21.介绍乐观锁与悲观锁 22.叙述java中wait与sleep的区别以及notify与yield? 23.介绍java中CAS原理 24.syncronized与Lock的区别? 25.Hbase与Hive整合? 26.tcp粘包问题如何解决? 28. HIVE内部表与外部表的区别,以及各自使用与哪种环境?Hive与传统数据库的区别? 29. Hiverc文件? 30. Hive分区? 31. Hive分区过多有何坏处以及分区时的注意事项?(cvte面试题) 32. Hive中复杂数据类型的使用好处与坏处? 33. Hive分桶? 34. Hive加载数据? 35. Hive的表生成函数举例? 36. Hive中的常用与语法? 37. Hive元数据库是用来做什么的,存储哪些信息,为何不使用Derby? 38. Hive什么情况下可以避免进行mapreduce? 39. Hive连接? 40. Hive JOIN优化? 41. Hive外连接陷阱?P127 42. Hive mapjoin? 43. Hive的sort by,order by,distribute by,cluster by区别? 44.使用hive如何进行抽样查询?P136 45. Hive的分组排序(row_number()),组内TopN 46. Hive分桶的原因或者说有什么好处? 47. Hive视图? 48. Hive举例说明Multi-group by。 49. Hive严格模式 50. Hive工作原理 51. Hive索引 52. Hive插入 53. Hive性能调优 54. Hive文件压缩格式有哪些,效率如何? 55.如果频繁的使用自定义的UDF函数,如何不去每次通过create function temporary函数创建? 56.在hive中求出一个数据表中在某天首次登陆的人?借助collect_set处理。 57. Hive UDF UDAF UDTF介绍? 58. Hive UDF编写过程? 59. Hive编写udaf的过程,并实现group_concat功能 60. hive中的transform 61. Hive与传统关系型数据库的区别? 62. Linux中的管道与重定向?Grep? 63.列举你所知道的分布式算法或者协64. Java中创建字符串生成几个对象?
Linux内核:
1. Linux中的进程创建函数fork 2. Linux中进程的实现。 3. Linux中如何处理僵尸进程? 4. Linux中如果父进程退出怎么办? 6. Linux中内存分配。 7. Linux中的僵尸进程 8. Linux中进程地址空间 9. Linux中进程通信的方式 10. Linux中进程调度。 11. Linux中CFS的实现? 14.系统调用的作用? 19. Linux中的内存管理(内核中的内存分配)? 20. Linux中进程地址空间是如何表征的? 22. Linux寻址时是如何绕过段机制的? 23. Linux中进程的组成? 24. Linux中保护模式与实模式以及寻址过程? 25. Linux VFS? 27. Linux中cache与buffer的区别(携程)? 1.如何将一个用户源程序变为一个可在内存中执行的程序? 2 Linux如何将源程序编译成目标文件的? 2 Linux下的静态库与动态链接库
计算机网络:
131.简述SSL协议 132.简述http协议与https协议 134.七层协议每一层的任务及作用 135. Tcp/Ip协议族 137. UDP结构 138. IP分片 140. DNS解析过程 141. TCP协议 142. TCP断开为什么四次握手,而连接只需要三次? 143. ARQ与滑动窗口
设计模式相关:
144.设计模式的原则 145.代理模式的设计与实现以及使用场景 146.简单工厂模式的设计与实现及与策略模式的区别 147.工厂方法模式及其与简单工厂模式的区别? 148.原型模式 149.外观模式 (常问)150.建造者模式 问过151.观察者模式 问过9简述抽象工厂模式 问过9简述状态模式 10简述适配器模式 常用 11简述备忘录模式 12简述组合模式 13简述迭代器模式(高级编程语言中都已实现) 14简述单利模式 问过12.简述桥接模式 13.简述命令模式 14.简述责任链模式 问过 15.简述中介者模式
如果觉得《百度 阿里 头条 美团 滴滴详细面经+Java大数据面试题》对你有帮助,请点赞、收藏,并留下你的观点哦!