大数据岗位面试都面试哪些内容?新浪大数据岗位面试题汇总
大数据岗位面试都面试哪些内容?新浪大数据岗位面试题汇总(1)让我介绍项目我都是给他要笔要纸,手绘架构图。3)项目部分我说Sqoop我用的不熟,知道怎么用,可以简单地给他介绍一下。然后就说Sqoop是HDFS、关系型数据、HBase它们三者之间传输数据用的,很方便。(2)让我介绍MapReduce的运行过程二话不说要笔要纸,手绘MapReduce从InputFormat到OutputFormat的流程,一边画图一边说。
新浪面试题1)自我介绍
叫什么名字,来自哪里,本科哪个学校,硕士哪个学校,大数据做了多长时间,对Hadoop生态圈以及Spark生态圈中的哪些技术比较了解(很简单的一句就带过了),说完大概2min
2)技术部分
(1)让我介绍下Sqoop,说他没见过
我说Sqoop我用的不熟,知道怎么用,可以简单地给他介绍一下。然后就说Sqoop是HDFS、关系型数据、HBase它们三者之间传输数据用的,很方便。
(2)让我介绍MapReduce的运行过程
二话不说要笔要纸,手绘MapReduce从InputFormat到OutputFormat的流程,一边画图一边说。
3)项目部分
(1)让我介绍项目我都是给他要笔要纸,手绘架构图。
离线:data->flume->kafka->hdfs->hadoop/spark->mysql->前端展示
实时:data->flume->kafka->Spark Streaming->mysql->前端展示
kafka到hdfs是自定义的consumer
(2)为什么要使用Kafka,可不可以用Flume直接将数据放在HDFS上
我说可以用Flume将数据直接放在HDFS上,但是很少有人这么干,为什么要用Kafka我没有深入研究过(当时没想到咋说)
(3)让我介绍下项目中的指标,都是怎么实现的
我就挨个把我写上的项目指标说了下是什么意思,是怎么实现的(我简历上每个项目就写了几个指标,我感觉比较熟的),最后我说还有其他的很多指标,我做的就这些。
4)手写算法部分
(1)让我写链表的反转
我说链表没咋接触过,老师换个吧
(2)接下来让我手写单例
分分钟写了个双端检测单例
5)是否有问题问面试官
(1)最后说有没有问题要问他
问1:我就问他们大数据是做什么,一天的数据量有多大
答1:他给我说他们是做反垃圾的,一天的数据量上T了
问2:我就又问他们怎么定义的垃圾数据
答2:他就给我说一切影响用户体验的数据都是垃圾数据,比如说在用户的评论下面打广告之类的
然后我就说暂时没有了,他就让我在那等着了
二面1)自我介绍
还是一面那一套
2)技术部分
(1)介绍MapReduce的运行过程
还是上面的一套。不过在我一边画图一边说的时候有人给他发消息,貌似挺着急,然后我就停下来了,他说不好意思他回个消息,我就说不着急,等您忙完咱再聊。
3)项目部分
(1)项目框架介绍
老一套
(2)问我写的公司做什么的
我说做电商的
(3)他又问具体都卖什么
我说什么都卖,就跟京东和淘宝似的,只不过规模小很多
(4)问我上家公司做大数据的有多少人
我说十多个吧
(5)问我公司在哪
我说在丰台
(6)问我一天的数据量有多大
我说APP端有十多个G,将近20多个G,浏览器端大概有四五十G
(7)又问我一天的访问量有多少
我当时心里就按照费老师说的10w个人1G的量大概算了下,说了个数
4)手写算法部分
(1)手写二分查找
二分是基于一个排好序的数组,我就问他数组排序用不用写,他说不用,然后就分分钟写完,最后我还说用不用手写MapReduce的WordCount以及Spark的WordCount的,一点问题没有。
(2)让我用Shell写一个脚本,对文本中无序的一列数字排序
我说Shell简单的我可以,比如说写个脚本,Crontab周期性调度一下,复杂的我得查下资料,也就没写
5)是否有问题问面试官
(1)最后说他没问题了,我有什么要问他的没
我说要我不,他笑了,然后他说除了这个
(2)我当时也没想到什么问题,就问了嘴他们的集群有多大
他说成千上万台
三面1)自我介绍
(1)自我介绍
老一套
(2)问我哪一年毕业的,公司有多少人
我实话实说,说还没有毕业就去实习了,我说二三百人
(3)问我为什么要做这个,什么专业的
专业我实话实说的,然后说15年底16年初的时候原油价格暴跌,说以前行情好的时候最高一桶原油120美元,巅峰能达到160,我找工作那年最低的时候25,行情特别差,自己比较喜欢编程,硕士毕业的东西都是用MATLAB实现的,然后就自己学的Java,找的这个工作,进去以后领导让做大数据,就跟着老师傅干了。
2)技术部分
(1)问我Kafka用的那个版本
0.11
(2)问我ZooKeeper的常用命令
我说Status(基本全忘了,就这个记得很清楚),他说还有呢,我说ls,然后我又说忘的差不多了,但是我知道它的命令和Linux命令差不多,都是那一套,那老师也就没再问。
(3)问我myisam和innodb的区别
我就按照阳哥讲的,先说了下myisam不支持主外键,不支持事物,它是表锁,不适合高并发,而innodb则不是,然后他又问我还有没,我说了解就这么多,他也没再问
(4)他又问我一句如果单线程访问,myisam和innodb那个性能好一点
我说myisam吧,因为它不支持事物,要快一些
然后他又问我一个问题,我没答上来,我忘了那个问题是啥了
(5)问我Redis常用的命令
我顿了一两秒甩了一句keys*,他笑着说可以可以
(6)问我为什么要用Redis
我就说Redis是内存型数据库,以前访问量没那么大的时候关系型数据库完全可以胜任,但是在高并发的情况下访问量一大,关系型数据就不行了,所以就有了Redis
(7)问我了解HBase不
我说了解不多,就知道它是一个非关系型数据库,它也就没再问
(8)然后问我机械硬盘和SSD硬盘的差别了解不
我说SSD读写快,然后他说是,他又问我底层了解不,为什么SSD读写快,我没答出来,他又说从硬盘读取数据首先要干什么,我说寻址(然后突然一下子好像明白了,就跟他扯了扯)
(9)然后他又问我机械硬盘每秒读取次数多少知道不
我说我不知道,没研究这么深,但是我说我知道我们大数据读取数据的时候寻址不超过10ms(我当时心里这样想的,这些东西我没接触过,我要往大数据上靠,要引导他去问我大数据的东西),结果他说知道这个能算出来机械硬盘1秒能读多少次,然后我好想明白了,就1s/10ms呗,他说是,也就100来次
3)项目部分
(1)问我一天的数据量有多大
我还是按照原来的那个说的,他说不到100G单机就能搞定吧,我说公司就这么定的,然后尴尬不失礼貌地笑了笑(跟尽际老师学的)
然后就看着简历问了一些问题
(2)问我Azkaban一天调度多少个任务
我说三五百个吧
(3)然后他问我这么一个问题,他说你做这些项目需要埋点日志的对吧,然后说如果后台的人不愿意给你加这个埋点,嫌麻烦,你怎么办
我愣了一会,随口说了句,吃顿饭,那老师当场笑了,然后他说这算是个办法,他又说如果这个人没时间,没工夫跟你吃饭,你怎么办,我当时傻笑了两下,没回答。
4)场景题,手写SQL
场景1:是这样的,一张表三个字段,分别是学生名字、科目名字、科目得分,让我用sql把总分最高的找出来
我说我数据掌握不太好,试着写写。
我用了个子查询,先按学生分组,然后求每个学生的总分数
然后在外部查询中求最大的
我一开始在子查询中直接对用聚合函数求的sum_score排序了,他看了以后说能这么做么,我说我忘了,然后我又说子查询不行的话咱们就在外部查询排序呗,然后反问他可以吧,他说可以的
5)平时学习习惯
CSDN、博客园、Apache官网
6)是否有问题问面试官
(1)最后他说他差不多了,我有什么要问他的没
我问了下他业务方面的一些,也没想到啥,随便问的
(2)最后我又问他,他刚才问我埋点日志后台的人不给加怎么办
他给我说这个需要各个组协调好,不然别干活了,就扯了一会
四面1)自我介绍
老一套
2)技术部分
(1)介绍MapReduce的运行流程
本来我说给他手画的,他不让,说介绍就行。我就从InputFormat开始到OutputFormat给他说了一遍。
然后他就说按照简历来问
(2)让我说下myisam和innodb的区别
老一套
(3)然后看着简历说你知道HDFS的存储过程,我说需不需要我说一下
然后我就把海哥hadoop存储过程那几个图给他说了一遍
3)项目部分
让我介绍下我写的三个项目都是干啥的,我就没画图,给他介绍了下每个项目具体是做啥的,怎么做的(什么领导层要看指标啊啥的)
4)平时学习习惯
还是CSDN、博客园、Apache官网,说都是晚上和周六周天自己学的
(1)问我喜不喜欢技术
我说很喜欢,我说了以后他说为什么喜欢,我就说我搭建起来一个集群很有成就感,能在我女朋友面前炫耀一番。。。
(2)问我喜欢跟人打交道还是喜欢跟机器打交道
我按照实际情况说了下,说比较宅,比较喜欢跟机器打交道,还说从小就比较喜欢玩小霸王游戏机之类的。。。
五面HR教训:和HR接触不要激动,不要表现的很倾向来她们公司,因为后面工资可能不好谈,要不到理想的价位。
1)自我介绍
老一套
2)人事高频问题
(1)有没有别的offer,面试几家了
我说这周一开始投的简历,在等百度的offer,上午面试的58到家,但是58到家做Hive比较多,我了解不多
(2)问我什么时候辞职的
我说十一月初
(3)问我为什么现在才找工作
说回家一趟,大半年没回家了,这两天刚回来
(4)上家薪资多少
我就按照我心里的想法和马老师说的大概说了个数
然后说什么他们很严格,如果不行会马上辞退啥的,最后说看我能力可以,问我啥时候可以上班,让我准备下薪资流水和离职证明
学长21)技术部分
(1)Kafka吞吐量怎么优化
(2)Hive底层,SQL、表关联、窗口函数、聚合函数、一堆场景题
(3)Join对应的MR
(4)一张小表Join一张大表 在MR上怎么JOIN
(5)map()阶段聚合
(6)Spark job流程
2)项目部分
(1)上个月用户访问次数最大的IP
(2)TopN
(3)日活实时统计
(4)SparkStreaming的活动窗口大小,数据重复怎么办?
(5)数据仓库ODS -》 DWD 用什么写的脚本?
3)算法部分
(1)二分查找
(2)字符串反转
学长31)技术部分
(1)HDFS的小文件处理。
(2)Hive调优,数据倾斜问题
(3)Spark任务提交流程
(4)MR任务提交Yarn流程
(5)HDFS的读写流程,Shuffle流程,Shuffle过程的归并排序具体怎么做。
(6)是否用了currenthashmap,高并发问题就高枕无忧了
(7)线程池了解吗?
(8)怎么判断一个Kafka消费者挂了
(9)了解Redis,MySQL吗,MySQL的索引了解吗?
(10)select。。。for update是什么锁?
(11)MySQL底层文件存储
(12)读过哪些框架的源码?
(13)JVM底层原理
(14)Spark的distinct()算子底层
(15)布隆过滤器
(16)Zookeeper的作用,Zookeeper单独的事务,Nginx的作用,只做收集数据吗?
(17)说一下Kafka的架构,描述hw leo,Kafka的优化,怎么做幂等,你们做业务幂等性,为什么消费者怎么看到hw。消息的一致性能解决什么问题,kafka事务怎么理解。
(18)Spark的Shuffle过程
(19)HBase怎么预分区
(20)Redis有多少槽,Redis的持久化,你们在项目中怎么用Redis的,如何防止雪崩。
(21)mysql update一条语句,需要走哪些流程。
(22)了解ES吗?
(23)Yarn执行一个任务用了多少core
(24)produce给Kafka的一个topic发送消息,topic的一个分区挂掉,他的副本也全部挂掉,这个topic还能用吗
(25)有没有用JavaAPI去读Kafka的数据
(26)Spark读取Kafka数据的方式?
(27)Hive的内表和外表的区别,Hive为什么要做分区,Hive的元数据存在哪?
(28)列式存储和关系型数据库的区别
(29)Java中正则表达式用到哪些类?
(30)unlock和synchronzed的区别?
(31)编写SparkSQL的步骤?
2)项目部分
(1)写实时项目遇到了哪些问题
(2)拉链表的创建,连续三天登陆
(3)你们公司日活,月活,留存多少?你们团队多少人?
(4)为什么加最后一层Flume,不能直接Flume到HDFS吗?
(5)分析指标,对APP有什么影响。提升了百分之多少?
(6)有没有访问Kafka的所有Topic的权限
(7)有没有做Hive表的权限管理。
3)算法部分
(1)归并排序
(2)删除单链表的一个节点
4)情景题:
(1)Spark:如果消费Kafka中的数据时,某个分区内数据因为种种原因丢失了一条(也可理解成因为某些条件被过滤了),现在需要重新把这条数据纳入计算结果中。怎么解决?
(2)a left join b on a.id = b.id and b.age = 20
a left join b on a.id = b.id where b.age = 20
的结果有什么区别
5)平时学习习惯
(1)你最近在研究什么?
学长41)项目介绍
介绍一下项目,你主要负责哪部分,最精通什么
2)技术部分
(1)HDFS读写机制,DataNode怎么保证数据可靠性,原理是什么(答副本,说不对)
(2)MR的过程详细说一下
(3)使用MR写出Join过程
(4)日常开发哪里用到Java多线程,怎么写
(5)说一下并发和同步,单例必须加同步锁么?为什么
(6)说一下MR的底层源码,你研究了哪部分?
(7)说说Spark的底层源码吧