一只菜鸟在校招面试过程中,大数据开发岗位的一些面经
新华智云
一面(30分钟)
- 谈谈你对HDFS的了解
- Hadoop2.0做了哪些改动
- Spark与MR的区别在哪里
- 知道除了Spark之外的大数据处理框架嘛
- Spark shuffle,说说
- StringBuilder与StringBuffer的区别
- HashMap与Hashtable的区别
- 二叉树的数据结构是什么样的
- 数据库索引的实现原理
- jvm垃圾收集器,挑一种讲讲
留了2题编程题:
二面(50分钟)
- 讲讲你的日志流量分析系统项目
- 小文件合并,为什么需要合并小文件呢
- 讲讲NameNode与DataNode
- 当数据还在跑的时候,我要查这个数据怎么办
- 存储格式的选择 & 行式存储与列式存储的优劣
- 为什么选择ORC,不选择parquet
- 如果我select * 怎么办
- 如果我要查一段时间区域的,怎么优化
- 说说数据倾斜,怎么调优的
- 说说你对Hive的理解
- Hive怎么转成MR的
- 出现OOM,怎么办
- shuffle过程中,会将数据写到哪个buffer里去
- 讲讲executor、core、task这些之间的关系
- 平时怎么学习spark的
- 除了大数据,会Spring嘛
- 说说你还会些啥技能
- Spark与Scala的版本选择的是什么
- Spark为什么选择1.6.1 不去选择2.x
- Spark2.X做了哪些改动 & 知道这些是通过哪里去看嘛
- spark-submit --jars
这个jar包放在哪里的 - 副本放置策略
知道创宇成都分公司
一面(1小时)
- 简历上的3个项目依次介绍
- Scala中Nil,Option,yield
- HDFS的写流程
- MapReduce与Spark的区别
- MapReduce的适用场景
- 常用的10个linux命令
- 做过机器学习相关的嘛
- 数据倾斜的调优
- 出现OOM之后,如何进行调优
- 会写脚本吗
擎创科技
一面(30分钟)
- 数组与链表的区别
- 二叉树
- jvm内存模型
- 写代码:2个数组去重
- 面试官介绍公司的业务
tap4fun
现场笔试
选择题+编程题+SQL题
选择题主要是一些大数据的基础
SQL题对窗口函数进行了考察
一面(15分钟)
- MapReduce shuffle与Spark shuffle的区别
其实就是问:Sort Shuffle与Hash Shuffle的区别
因为MR的shuffle多了排序阶段与合并阶段
换种形式问Spark的shuffle而已 - 日志告警的项目
a.为什么需要加上Kafka,Flume也可以直接对接Spark Streaming的,为什么需要加上Kafka
b.为什么要将数据从String格式改造成Json格式,String格式的读进来也可以转成DF,然后注册成临时表啊
c.String转为Json是怎么改造的 - 什么是迭代式计算
美图
一面(45分钟)
- 为什么选择美图,你知道美图地点在哪里嘛
- 介绍下你做的项目吧
- 数据统一管理平台,我挺感兴趣的,你说说吧
- 我大概知道是怎么回事了,java web这块你参与开发了吗
- 你刚刚项目提到了元数据,你能说说hive的元数据管理嘛,对它了解嘛
- 还是hive,你对hive有哪些原理性了解呢
之后说了hive --> mr的过程 - 你提到了谓词下推,举个sql的例子,说说谓词下推是怎么回事
- 知道AST、operator tree这些长什么样吗
- 那你的hive转mr过程是怎么了解的呢?
- 那么现在有个问题,如果有个用户:去做了个全表扫描,去查数据,即便我们要求了要指定分区去查,但是他都没有这样做;那么,从你刚刚hive转mr过程的阶段中,你觉得应该从哪个阶段开始避免呢?
面试官:我给你整理下,你刚刚说的过程吧:hive ql --> ast ast --> qb qb --> operator tree 你觉得这三个哪个阶段去避免比较好呢 - 除了谓词下推,还能说说其它的优化嘛?别说数据倾斜的调优
- 你刚刚提到了可分割的压缩格式,说下哪些压缩格式支持分割呢?
- jvm了解不,说下垃圾收集算法
- 平常用java和scala语言哪个多点
- 如果我现在要使用map集合,你觉得哪种适合多线程情况下进行访问
- 如何去线程监控
- Spark 出现OOM,你觉得该怎么进行调优呢?不去动jvm的参数
- 如果大表与小表join,出现问题,你觉得该怎么优化
- 那如果现在只是单纯的数据量过大了,出现OOM,该怎么办呢?
- 那我现在如果在shuffle过程中,增加并行度,是否能缓解数据倾斜的情况呢?
- 你对未来的规划是什么?(五年内)
- 向面试官询问了,部门的大数据业务、对自己未来发展的建议
二面(43分钟)
- ThriftServer的HA如何去实现,能说下实现的思路嘛
- 能说下Zookeeper的watch机制是如何实现的嘛?
- 场景题:现在有1个client,2个server,当我动态加入一台机器,或者删除一台机器,或者某台机器宕机了,client该如何去感知到,说下实现思路(不使用Zookeeper)
汉得信息
一面(40分钟)
- 简历上的项目介绍
- RDD介绍
- 爬虫、分类算法介绍
- JVM介绍
汽车之家(大数据部–基础平台组)
一面(42分钟)
- 实习时间,能实习多久
- MapReduce的执行流程
- map最多可以有几个,combiner阶段,举2个不能使用combiner的例子
- hql转MapReduce的流程说下
- Spark Shuffle调优,调哪几个参数
- Spark Shuffle有哪几个类
- hashshuffle的consolidate机制被移除取代了,为什么?你觉得它有什么缺陷
- 计算机网络,三次握手,为什么需要三次
- 在这个过程中,可以携带数据嘛
- Synchronized与volatile的区别
- 二分查找算法的时间复杂度、空间复杂度
- 说下你的能耗资源统计分析系统项目
- 你们最终的数据是存哪的?
- 为什么使用es,而不是使用关系型数据库(MySQL)
- 重跑的设计,是指定批次重跑嘛,怎么设计的
- ResourceManager HA的设计,如何设计?
- 平台的权限怎么做的?
- 面试官最后主动介绍了下部门,对我的建议是java基础不行,没做过相关的项目,真实工作中不可能就管一块
蚂蚁金服(保险事业群)
一面(30分钟)
- 项目中的亮点,说说
小文件合并、整条链路的重跑 设计 - 技术选型:MapReduce VS Spark
- 日志格式是怎么样的
- 项目开发的团队有多少人,规模多大
- 关于Flume 与 Spark是怎么学习的
- xxx专业是你的高考第一志愿吗
- 除了日志流量分析项目,还有哪些项目
说了Hive的项目,被面试官指太简单 - 有没有做个Web相关的
- 有没有关注名人的博客
- 对大数据领域的看法
- 有没有其它的兴趣爱好
猫眼
一面
- 自我介绍
- Hive窗口函数你用过哪些? 哪些场景下使用的,有什么功能?
- left join、right join、join的区别
- rdd的特性
- spark怎么划分stage
- 哪些操作出发job (trasformation action)
- spark参数调优
- spark数据倾斜调优?如何进行调优?
- 数据倾斜不用spark处理,可以用hive处理吗? hive中也有一个设置参数加随机数你知道吗?
- 说下用过哪些linux命令
- spark wordcount代码口述
- java 常用集合:hashtable、hashmap、concurrenthashmap
- spring ioc aop 实现原理
- flume主要用来做什么
- mysql索引原理
- spring bean的生命周期
- jvm了解吗 简单说下jvm原理 GC机制
- spring DI 机制
- kafka 消费者写过吗 offset偏移量怎么维护?
- yarn 集群两种模式知道吗?有什么区别?
- mr运行流程
- mr中的shuffle阶段的优化
- 现在有两张表 user (用户id):所有用户 订单表(用户id 订单id 时间) :今天的所有订单
- 需要知道今天没有买到票的用户
两种方式 1.not in 效率不行 2.left join - 查询订单表同一天购买两个订单的用户
count求和 having count(*)=2(having后面可以加聚合函数) - 每个用户买过的第二条订单
- 需要知道今天没有买到票的用户
- rdd里面是什么样的结构
- 数据结构与算法相关:快排、二叉树遍历 递归与非递归、检查一个链表是否有环 知道几种方法?
二面
- 自我介绍
- 项目相关
- spark中的数据倾斜
- spark提交一个程序怎么划分
- spark数据倾斜你是怎么处理的
- 数据解析你使用的什么(spark sql )
- 离线项目相关:离线数据处理
- spark sql最终生成多少个文件
- 最终生成的文件是否存在小文件的问题
- 自己搭建过集群环境吗
- hive sql 写的多吗,是写sql 多还是代码多,mr写过吗
- kafka topic会有多个partition?为什么要建立partition?
- hive的优化
- hive两个表join一个大表一个小表 小表满足多大要求才会放入内存
- mapjion原理 mapjoin从那个版本开始?
- 用过spring吗? spring dao层有什么用? 用的hibernate还是mybatis?
- spring 数据库连接池有哪些类型? 用的哪一个?
- spring配置多个库支持吗?
- linux命令: 查看机器负载情况? 查看进程占用的端口? 看内存? 看磁盘?
- 我有三个线程 要求都达到一种状态之后在继续执行
- 问我能去他们那边面试吗?或者线下宣讲会
海康威视
一面(电话25分钟)
- 数据倾斜的解决,怎么知道哪里倾斜
- 自定义类的广播
- cache机制,rdd和df的cache什么区别
- spark动态内存,堆内和堆外
- rdd算子,map,mappartitions,foreach,union
- 宽依赖,窄依赖
- spark DAG过程,doOnrecive,eventloop执行过程
- stage和task怎么分类
- spark调优
- 概念,executor,worker,job
- 用没用过spark什么log,没记住
- 讲讲sparkSQL数据清洗过程
二面(现场30分钟)
- 问了很多项目相关的
- RDD有什么特点?如果RDD链路很长如何避免重新计算
- kafka offset了解吗
- 项目中如何较少网络传输
- 如何保证存储和索引的一致性
- 项目中解决过的比较复杂的问题
vivo
一面(视频)
- 自我介绍
- 问项目相关
- tcp udp http 和 https
- 线程 进程 死锁
- 多线程 锁
- 分布式锁
- HashMap底层
- HDFS、MapReduce工作流程
- awk和sed命令
知乎
一面
- 合并2个有序链表
- java三大特性的理解,如何去应用
- 设计模式
- jvm内存分配、垃圾回收算法
- java集合框架
- Spark shuffle和MapReduce shuffle的区别
- Scala的柯里化和隐式转换
- 函数式编程
猪八戒
一面(现场30分钟)
- MapReduce的工作流程
- RDD的五大特性
- 项目相关
海拍客
一面(现场2小时)
全程项目,在白板上边画边讲,和面试官讨论