背景
本文为#峰哥读者从设计转行外包数仓,再跳槽到甲方做大数据开发#整理的面试题,他面过深圳大部分的外包和甲方公司,整理了一些面试题,希望能带给大家一些帮助。
大数据组件技术面试
hadoop框架1.hdfs的读写基本不问,但是还是要知道2.mapjoin的原理3.hadoop的shuffle原理也没问,也要知道4.你在工作中的hadoop的小文件处理,结合项目进行说明5.hadoop常用的端口号,mapreduce过程发生了几次排序6.yarn提交job的流程7.yarn的调度器选择,工作中怎么选择调度器的8.hadoop的优化9.zookeeper的选举机制
hive框架10.hive的架构以及hive是怎么解析成mr的,说下即可11.hive和数据库的比较,有哪些区别从数据的存储,底层的原理,语法的不同,分析业务的不同,具体的业务场景以及各自的优化(就说了这些,其他的没有问我了)12.hive的优化,分区,分桶13.4个排序的区别14.hive工作中常用的函数15.怎么自定义udf函数16.hive导入数据的几种方式17.hive导出数据的几种方式
flume框架1.flume的组件2.flume怎么采集数据的3.flume怎么自定义拦截器4.flume的数据积压,回答分区和提交拉取批数(实际工作中怎么提高拉取数的,举例说明)5.flume如何支持断点续传flume最新的版本有tail sources (你要去了解配置的过程)
kafka框架1.kafka消息不丢失机制这个问题从两个方面讲一般没问题 1.从kafka0.8版本和kafka0.10版本讲各自偏移量的一个位置 2.kafka的ack机制2.kafka副本机制3.项目中kafka的topic设置4.kafka挂掉怎么解决5.kafka分区策略6.kafka重平衡机制
hbase框架1.hbase机构必须了解2.hbase的读写流程3.rowkey的设计(项目中如何设计,为什么要这样设计)4.hbase是怎么将数据保存到hdfs的具体是怎么刷写到hdfs的5.hbase的二级索引是怎么实现的6.hbase的小文件太多怎么处理的7.hbase的高水位机制
scala语言1.scala中class与case class区别2.scala的柯里化3.scala闭包如何理解的4.scala高阶函数(必须会,这块问的最多)
spark框架1.spark作业提交流程2.spark中的rdd特点,说下你分别是怎么理解的3.spark的部署模式4.宽依赖和窄依赖5.spark的shuffle与hadoop的shuffle有什么区别6.saprk广播变量7.spark的调优(调优结合工作中的项目来说)8.saprksql与hivesql有什么区别9.sparkstreaming消费kafka的两种api10.saprkstreaming:你在工作中消费kafka数据如何保证数据的不丢失和只消费一次(这块工作中无法保证数据的重复消费)
重复消费:官网解释是有三个条件 1.采用kafka数据源 2.采用rdd 3.幂等性或者事务约束 事务是把提交偏移量和写数据搞成事务,做到两个成功才算成功,这个是我之前看spark官网看到的,说出这个就不会再问你了
11.手写saprk的wordcount程序12.saprk提交作业的参数有哪些,工作中如何设置参数的
java技术面试知识点
1.hashmap和hashtab的区别2.多线程用过吗,用过多线程的三方框架吗,多线程实现的方式3.gc回收算法,每个算法的场景,各自由什么优点与缺点4.jvm是怎么实现跨平台的5.jvm调优6.手写冒泡排序,归并排序,快速排序,选择排序以及希尔排序(具体可以百度十大排序算法,这个必须要会)7.手写单例模式的懒汉和恶汉模式8.项目中有没有高并发场景,如果有怎么做的,没有的话谈谈你对高并发的一个理解9.还有其他的源码就不会问了,因为我之前工作是接触源码比较多,基本上都是基于源码的开发,所以问的多10.关于集合的线程安全看看
项目面试
1.数据量多大
2.数据的峰值多少
3.项目的难点这块简历一定要体现,建议直接百度护着谷歌去搜索什么技术的项目难点,试着把你的项目运用上去
4.集群的配置情况,你如果说你会saprk 集群的内存必须要去了解的,因为spark涉及到调优,你不了解内存啥的没有人会信你的调优的
5.你不了解的技术千万不要写上去,不然你会很难受的,尽量挑选自己掌握特别好的,关于怎么转到大数据的,这点非常重要,如果说你之前实习做的java转到大数据的,面试官会问你java的知识点,因为你项目没有写java,面试官会认为你怕问java,一般什么不会就问哪个
6.你怎么转到大数据这个行业的,这个关系到是否会问你java的问题,建议自己想个理由
7.关于简历问题:简历上的每个项目建议多想几个项目难点,因为真正开发过程中是不可能没有遇到问题的(这个合理的话会有加分项的)
8.项目的架构以及流程图必须要会画
9.技巧:1.一般面试官问你很多理论,项目问的特别少的话,说明他知道你是什么情况,说明你只要符合要求就能入职2.如果面试官一直问项目就说明,他们这个项目很急或者是急着找人,一进去就能干活的这种,这时就要问你项目的细节,判断你是否真的做过,是否来了后能马上开始做项目
·················END·················