干货分享,新浪大数据岗位面试题汇总

新浪面试题

学长1

一面

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)上家薪资多少

我就按照我心里的想法和马老师说的大概说了个数

然后说什么他们很严格,如果不行会马上辞退啥的,最后说看我能力可以,问我啥时候可以上班,让我准备下薪资流水和离职证明

学长2

1)技术部分

(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)字符串反转

学长3

1)技术部分

(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)你最近在研究什么?

学长4

1)项目介绍

介绍一下项目,你主要负责哪部分,最精通什么

2)技术部分

(1)HDFS读写机制,DataNode怎么保证数据可靠性,原理是什么(答副本,说不对)

(2)MR的过程详细说一下

(3)使用MR写出Join过程

(4)日常开发哪里用到Java多线程,怎么写

(5)说一下并发和同步,单例必须加同步锁么?为什么

(6)说一下MR的底层源码,你研究了哪部分?

(7)说说Spark的底层源码吧

大数据培训

猜你喜欢

转载自blog.csdn.net/msjhw_com/article/details/107657410