大数据面试题--最真实面试总结!!BAT等一线大厂,学长们实测!!
Posted 一只楠喃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据面试题--最真实面试总结!!BAT等一线大厂,学长们实测!!相关的知识,希望对你有一定的参考价值。
今年我们大三的学长学姐要找实习了,大概整理了一下他们的面试题,问出来的!!!!
抓紧收藏!!准备要校招的学长学姐!一定要码好!!
这一篇是一部分普通企业和BAT大厂的面试,后续还有京东、58、搜狐、小米等等公司的,等我整理好!!后续我会把这些面试进行综合的总结并附答案,等我啊!
这些是普通的公司
学长1
1)技术框架部分:
(1)面试官会根据面试者简历上的技能点进行考察。(注意技能点描述用词,不要随便用熟悉,觉得特别熟的可以说熟练使用)
(2)常用的大数据框架是肯定会问的,比如hive、spark、kafka等。常见的如kafka精准消费问题的多种解决办法对比,spark的task调度规则,基础的原理是要知道的
(3)有些面试官会直接让讲了解的框架最底层实现
(4)java,mysql,redis必问,jvm,hashmap,juc相关,mysql的索引及优化,redis数据结构、集群、缓存淘汰
(5)常见的协议会考,租约协议,quarum原理,zookeeper选举,acid,acp,base等
2)项目部分:
(1)一般会让你挑你最熟的一个项目讲。考察从项目背景到实现的把控
(2)重点是参与的部分,遇到的难点
(3)常见业务难题的解决和优化,层层递进,头条追求做到极致
(4)没有做过的项目、模块不要乱讲,容易被问懵逼或者被太简单被鄙视
3)算法部分:
(1)数据结构必考,手写代码,每一面都会考。常见数组、链表、二叉树、跳表的题。有些部门会先笔试(电脑实际编码运行)再面试
(2)算法部分常见动态规划、概率题、二进制一类
(3)sql题目,行列转换。分区函数,统计连续登陆天数这一类问题
(4)多刷leetcode,题都是有套路的
4)hr部分:
(1)想好跳槽理由,一般注重抗压能力和稳定性
.
学长2
1)技术部分
(1)wordcount的实现过程
(2)mr与spark的区别
(3)spark在client与在集群运行的区别
(3)相同的sql在hivesql与sparksql的实现中,为什么spark比hadoop快
(4)udf
(5)设计hbase表需要注意的点
(6)hbase的hlog
(7)数据同样存在hdfs,为什么hbase支持在线查询
(8)数据从hive中用sparksql进行操作有遇到什么问题?类似兼容性的问题。
(9)sparkstream与strom,flink与什么区别
(10)有三个map,一个reduce来做top10,哪种方法最优。数据量特别大。
2)项目的架构
(1)数据仓库的模型设计
(2)数据仓库的数据清洗
(3)业务建模、数据分析方法。
(4)数据仓库是怎么设计的
(5)数仓规范设计哪些方面(字段、维度,存储压缩、数据保留机制)
(6)数仓质量怎么监控(数据质量管理系统,主键唯一、非空、数据波动)
(7)数仓主题分哪些(按照公司业务归类:申请单、客户信息、合同信息、放款、还款、余额、逾期等)
(8)数仓拉链表的原理
(9)有没有遇到数据倾斜的问题(场景、解决方式)
(10)数仓重点调度任务的保障方式(调度系统优先级)
(11)数仓任务报错和监控(调度系统捕捉错误,电话短信告之值班人员)
.
学长3
1)技术部分
(1)自我介绍
(2)写map-reduce,两份数据,一份是设备id+用户id,一份是设备id+点击的广告+点击时间,找出每个用户id每天10条最新的广告点击记录
(3)说下多线程和多进程
(4)fork命令
2)算法部分
(1)hashmap和map,hash实现原理(hashmap基于哈希,查找O(1);map基于树,查找O(logn);hash实现采用数组,偏移地址使得查找满足O(1),无论是再哈希还是链表法解决冲突,都需要存储key和value)
学长4
1)mysql引擎是什么,常用的是哪个innodb,知道原理吗
2)mysql优化,怎么建索引?
选择合适的字段属性。对于某些文本字段可以设成ENUM类型(mysql中被当做数值型数据来处 理)。使用连接join代替子查询 。使用索引:innodb支持哈希索引、b+树索引、全文索引。
BTree和B+Tree
手写sql…
user_id login_date
1 20200325
3)查询出用户连续三天登录的用户
表A 字段a 值1234
表B 字段b 值11235
Join 输出的结果
Left join 输出的结果
4)Sqoop导入数据是增量怎么实现
5)Flume事务实现
6)Kafka消费者角度考虑是拉取数据还是推送数据
7)Kafka中的数据时有序的吗
8)Kafka数据推送失败怎么处理
9)Kafka保证生产者精准一次
10)没有接受到ack才会出现声明情况
11)Kafka数据重复怎么处理
12)spark streaming怎么里面实现精准一次消费
13)如果offset没有发送成功数据会怎样
14)Hive的优化,项目中怎么优化的(我说了join的一些优化)
15)然后就问了用MR怎么实现join,手写代码
16)数据倾斜怎么处理的
17)碰到过oom情况吗,什么原因导致的,怎么处理的
18)Hbase有那些组件
19)什么场景会用到Hbase
20)Hbase的读写流程,大概说一下
21)Spark,任务提交的流程
22)Spark的两种核心Shuffle,未优化的和优化的
常用的数据结构都有哪些,
怎么实现一个list,
怎么实现一个map
map一般什么场景使用
用过树这种结构吗,什么场景用到的
算法
1)字符串中第一个出现三次且仅出现三次
2)反转一个链表
3)两个链表第一次交叉的节点
项目问题:
1)用cannal监控mysql之后,scala怎么通过sparkStreaming去消费的
2)你们这个项目spark计算完之后存hbase怎么设计的
3)hbase你们在项目中怎么设计rowkey的
面试腾讯的学长们!
学长1
1)笔试部分
(1)有一表名t_sh_mtt_netdisk_log,从表名可以看出该表是什么业务的,是什么周期粒度的表。
(2)怎么查看表结构,表创建语句?怎么查看表有哪些分区?怎么查看分区对应hdfs路径?怎么计算某个分区的数据量大小?怎么计算某个分区的文件总数?
(3)有一hive sql,怎么计算这个sql会产生多少个map数?
(4)怎么查看hive有什么自带函数?怎么查看函数的详细信息?
(5)hive支持哪些基木数据类型?
(6)请指出下面两个语句读取分区ds数据的不同
Select * from t where ds=20150101 and province=‘gd’ or province=‘ex’
Select x fromt where ds 20150101 and(province=‘gd’ or province=‘ex’)
*(7)将字符串"keyl=valuel&key2=value2…keyn=valuen"进行分割放到一个字段里面,可以查出任意一个keyx对应的valuex值。请写出查询语句,并计算总共有多少个key值。
(8)用一个字符串比如"alblc"来测试某个函数比如split(用|分隔符将字符串进行分割)的语句
(9)a表和b表内连接,a表为小表,只有2000行记录
select a.*from a Join b on a.key=b.key
可以进行怎样的优化?
(10)a表left join b表,b表为小衣,可以进行怎样优化?
scleet a.*from a left join Join b ona.key=b.key
如果a为小表,可以怎样优化?
(11)请指出下面sql语句的区别
select a.* from a left Join b on a.key = b.key and a.ds=xxx and b.ds=xxx
sclect a.* from a lef Join b on a.key = b.key and b.ds=xxx
select a.* from a lef Join b on a.key = b.key and b.ds=xxx where a.ds=xxx
Select a.* from a left Join b on a.key = b.key where a.ds=xxx and b.ds=xxx
(12)多表连按的写法:a,.b,c三个表内连接,连接字段都是key,怎样写连接语句?
(13)两大表连接,发生了数据倾斜,有几个reduce无法完成,怎么查找发生数据领斜的原因?应该怎样优化?
语句:select t1.,nvl(t2.x,1) from t1 left join t2 on t1.guid=t2.guid*
(14)两大表连接,发生了数据倾斜。有一个reduce无法完成,检直发现t1中guid="的记录有很多,其他guid都不重复,这条语句该怎样优化?
语句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid = t2.guid
(15)如何用hive q!实现sqL中的exist/in 子句
mysql语句如下:
SEL ECT a* FROM a where a.key in(select dstinct key from b where key like ‘filter%’)*
(16)sort by、distribute by、cluster by 和 order by 区别
学长2
1)笔试题
用Hivesq1实现
(1)全量用户登员日志表t_login_all,字段信息ftime(登录日期)、openid(登录帐号)新增用户登录日志表t_login_new,字段信息ftime(登录日期)、openid(登录帐号)求每天新增用户次日、7天、30天留存率。
(说明:7天留存是指当天有登录且第7天还登录的用户)
(2)消息流水表t_chat all,字段信息:
Ftime(日期)、send_user id(发消息用户id)、receive.user id(接收消息用户id)、chat id(消息id)、send.time(发消息时间)
用户登录流水日志表t_login_all,字段信息:
Ftime(日期)、user_id(用户id)、login_id(登录id)、login_loc(登录区服)、login_time(登录时间)
求:每天有收发消息用户最近登录时间、登录区服,输出ftime,user_id,login_loc,login_time
用Spark core实现,写scala脚本
1、reduceByKey()、groupByKey()有什么区别?
2、DataFrame和RDD有什么区别?
3、使用累加器,对数组Array(1,2,3,4)每个元素实现累加操作,最后打印输出求和结果。
4、现有文件file.txt,文件格式如下
Order_id,user_id,payment,productid
1、1768,50,155
2、1218,600,211
3、2239,788,242
4、3101,288,599
5、4899,25,230
6、2311,890,981
。。。。。。
求Top10个payment字段的值
学长3
1)技术部分
(1)我看你上面写了你会spark,那你用spark写一下刚刚那道题的代码(第6题),不能用spark sql
(2)我看你上面有写到熟悉hive原理和优化,你说一下怎么优化
(3)优化有说到语句优化,然后又说回到pv和uv那个问题,假如说让你优化你怎么优化(我代码里面有count(distinct id) uv,)
(4)问了一些kafka的,我只记得一点点,问我数据会不会重复消费,什么情况下会重复消费
(5)在hive执行语句的时候如果很慢,什么原因造成
我有提到数据倾斜的问题,他又问怎么解决数据倾斜
2)项目部分
(1)让你挑一个比较有亮点的项目详细说
(2)你负责了什么,数仓中统计了哪些指标,
(3)刚刚听你说项目里面有提到分层,如果我要你求每天商品的pv,uv,从ods层到dm层它的具体流向,各层都统计了什么(后来让写求pv,uv的sql语句)
3)场景部分
(1)有一个分区表,表名T,字段qq,age,按天分区,让写出创建表的语句
(2)刚刚的分区表,求20200221这个分区中,年龄第N大的qq号列表
(3)有一个表,两个字段,分别是qqa和qqb,数据如下:
12,34
12,56
12,78
34,56
34,12
找出所有互相关注的qq对
4)手写部分
(1)三个字段,timestamp,user_id,product_id,让求pv最大的商品,写了之后又叫用scala代码写一遍,然后又问,假如说只让你求pv数大于100的top3呢,代码又怎么写
学长4
1 . 你们数仓用什么建模方法 , 说出常见的建模方法 ?
我说的是维度建模
2 . 维度建模有什么好处 ?为什么选择这个?比如最后业务需求要增加一个维度 ,我们需要做什么工作?
3 . 怎么判断一个需求能不能实现 , 你们的判断标准是什么?需求变更要做什么
4 . 增加一个维度后发现查询的速度变得非常慢 ,是什么原因导致的 ?
我想了会儿 , 说我们没有这种业务场景。。让她举个例子
她然后说具体问题具体分析 。。
5 . 你们ads层的数据量每天的数据量有多大 ?ads层再mysql 中的表是怎么创建的?
有什么注意事项?索引怎么创建的?
6 . 你知道spark的宽窄依赖吗 ?有没有把宽依赖转化为窄依赖的例子 ?
7 . spark参数调优做了些什么 ?
算法部分
一个list [1,5,5,7,9] 去重 并计算时间空间复杂度
单链表的反转
面试阿里巴巴的学长们
学长1
1)技术部分
(1)Spark提交job流程
(2)提交脚本中-jar什么意思
(3)Excutor怎么获取task
(4)详解Hadoop的WordCount
(5)Spark做过哪些优化,(优化说完会问你为什么?原理是什么?)
(6)Spark内存管理
2)算法部分
(1)单向链表反转
(2)实现堆栈push Pop Min 复杂度0(1)
(3)实现一个队列,男女均衡最长的队列 复杂度0(N)
学长2
阿里三面
第一题,亿级的交易订单量,每笔都有金额,快速找出top1000,要求不是简单的排序然后求出top1000,代码要有健壮性;提示注意是top1000不是top10。 Map和Reduce分别做Treemap
第二题:有两个约1000万行记录的4到5G文件,JVM只有32M,在内存不溢出的情况下,找出相似的条数并打印出来。 布隆过滤器
第三题,有一个双十一的天猫场景,我要做实时和离线两种分析方向,从数据建模、计算性能、元数据管理、数据质量上讲一讲基本架构设计成什么样子。
第四面
第一题,岛上有100个囚犯,他们都是蓝眼睛,但是他们都只能看到别人眼睛的颜色,并不能知道自己的眼睛颜色,而且他们之间不能去谈论眼睛颜色的话题,规定每天晚上都可以有一个人去找守卫说出自己的眼睛颜色,如果错了被杀死,如果对了被释放。但是大家在没有十足的把握前都不敢去找守卫,有一天,一个医生对他们说你们之中至少有一个蓝眼睛,然后N天,这些人都获救了,为什么?这句话对他们有什么影响?
第二题,有100层楼梯,从其中一层摔下鸡蛋的时候鸡蛋会碎,并且次层之上的都会碎,次层之下的都不会碎,如果你有一个鸡蛋、两个鸡蛋、三个鸡蛋,你会怎么去找出这个楼层,最多要试多少次
学长3(杭州)
1、自我介绍
2、对未来的职业规划是怎样的?
3、数仓的流程?你所做的事情?
4、能讲一下做DW层的案例吗?如何建模的?
5、讲一下交易的例子吧?
6、做交易的话模型怎么设计的?
7、物流的信息,链路的跟踪在不在你的交易表里边?
8、退款的数据放在哪个表里?
9、数仓的模型 是怎么建模的?
10、记录交易的,整体的链路,到底设计了几张表?
11、拉链表的原理?
12、拉链表整合的方式?
13、你在之前的公司遇到的痛点有哪些?(我讲的数据倾斜)
14、数据倾斜怎么解决的啊?
15、Join的等倾斜,join的key,关联键,如果倾斜的话,能直接打散,如果map端解决不了呢?Mapjoin解决不了怎么办?两个都是大表怎么解决数据倾斜?
16、MR原理?
17、Map端做的最重要的事情是什么?
18、有没有其他你特别擅长的?
19、怎么提前你SQL写的特别好呢?
20、建索引要注意哪些事情?
21、你有啥要问我的吗?
全c程32分钟,在所有面试当中时间最长的一次了,之前的话在20多分钟就结束了,主要还是自己的语速太快了(禁忌),还是得慢慢的说,有思考的过程,思考你说完面试官会问你啥?其实这次面试自己的语速还是快,结果的话面试官评价我说“我觉得你大部分的流程都是比较清楚的,就是细节上还是得再琢磨琢磨,加强一点”,通话结束。
面试百度的学长们~
学长1
1)笔试部分
(1)你可以得到网站访问记录,没条记录有user IP,设计一个程序,要随时能计算出过去5分钟内访问次数最多的1000个IP
(2)简述paxos协议
(3)编程简单实现一个阻塞队列
(4)简单实现一个LRU算法
(5)有一个5000万的用户文件(user_id,name,age),一个2亿记录的用户看电影的记录文件(user_id,url),根据年龄段观看电影的次数进行排序?
2)技术部分
(1)Java的NIO是否了解
(2)Java多线程(什么wait、notify)
(3)MapReduce的shuffle过程(手画,边画边介绍),reduce是怎么到map端获取数据的(RPC通信是否了解)
(4)一句话介绍MapReduce
(5) Spark做缓存时缓存在哪里
(6)百度不用Spark,只用Hadoop和MapReduce(至少这个部门是这样,这个部门的主要业务是做用户画像),把MapReduce工作的各个阶段过程吃透
(7)是否看过Hadoop源码
(8)Linux系统(常用命令啥的)
(9)除了这些平时还接触或者学习哪些技术
3)项目部分
(1)业务架构
(2)根据项目业务介绍技术
(3)MapReduce数据倾斜和内存溢出怎么办
4)算法部分
(1)手写归并排序
(2)用递归实现斐波那契数列第100项的值(第一项和第二项分别为0和1),手写
(3)算法和数据结构了解到什么程度、知道多少
(4)Java中的数据结构,ArrayList和LinkedList的区别,ArrayList为什么查询快(为什么用数组就快)、LinkedList为什么增删快,哪些Map是线程安全的
5)手写代码部分
(1)手写MapReduce的WordCount(导入的包最好能记住)
6)场景部分
(1)遇到垃圾日志怎么办(假如说有人恶意制造日志,怎么处理。我说的黑名单机制,那个面试官貌似还挺满意)
学长2
百度:视频面试
面试周期:5天
面试次数:6次
面试总时长:3小时
百度一面二面(印象中的一些问题):
自定义UDF,UDTF
如何确定计算数据的准确性?
建立数仓的目的
自定义拦截器步骤
SpringMVC
设计网站前后端交互问题
Linux常用命令
百度三面(部门负责人):
在没有PM的情况下如何对指标做拆分去分析?不明白问这个问题的目的是什么… …
介绍了他们部门的工作内容
百度四面hrbp:
介绍工作经历+工作遇到的困难+对所应聘职位的理解+分析指标提出时间和原因+离职原因等问题
百度五面业务总裁:
某一天日活下降10%,需要从哪些维度分析,如何分析?不用说技术
百度六面Recuriter面:
上家薪资+期望薪资+职级+对数据分析和指标分析的理解+职业规划等问题。
4.3 学长3
百度:视频面试2.11-2.18日 商业风控审核部
面试周期:5天
面试次数:6次
面试总时长:3小时
百度一面二面(印象中的一些问题):
自定义UDF,UDTF
如何确定计算数据的准确性?
建立数仓的目的
自定义拦截器步骤
SpringMVC
设计网站前后端交互问题
Linux常用命令
百度三面(部门负责人)2.14:
在没有PM的情况下如何对指标做拆分去分析?不明白问这个问题的目的是什么… …
介绍了他们部门的工作内容
百度四面hrbp 2.18:
介绍工作经历+工作遇到的困难+对所应聘职位的理解+分析指标提出时间和原因+离职原因等问题
百度五面业务总裁 2.18:
某一天日活下降10%,需要从哪些维度分析,如何分析?不用说技术
后端和数据库交互能力
百度六面Recuriter面 2.18:
上家薪资+期望薪资+职级+对数据分析和指标分析的理解+职业规划等问题。
4.4 学长4
1月17号度小满金融(原百度金融,A轮公司)
面试地点:西北旺百度科技园旁
面试时长:2个半小时
面试次数:3次
一面:一面中规中距,有手写sql环节,还有sparkstreaming常用算子解决实际问题。大概1个多小时
二面:因为面的是架构师,所以二面问的是几个组件的版本号和几个大数据组件的安装过程和配置文件细节,还有HA的几个进程的作用,比较难。大概20分钟
三面:问了自定义UDAF,UDTF,和数仓开放性问题,和三面主管说了毕业时间,并说了未签订劳务合同,他说怎么没签合同呢,太后悔了,最后走的时候说hr可能过不去,给我争取一下。大概30分钟。
但两天后收到未通过感谢信。
强烈推荐度小满金融公司,环境top5,面试官很厉害。
手写sql考的是:
三个字段: area year temperature
统计每个地区的温度最高的对应的年份。
写的用rank函数 一个子查询,险过。
学长5
1.写出用户表 tb_cuid_1d的 20200401 的次日、次7日留存的具体HQL :一条sql统计出以下指标 (4.1号uv,4.1号在4.2号的留存uv,4.1号在4.8号的留存uv)(一条sql写完)
2.统计当天不同平台、版本下的uv、pv
3.解析ext中所有的"type"( lateral view explode)
二面:
t_a (uid,os,day)
t_b(uid,os,day)
15号在t_a 但是不在t_b的用户
ut格式: 机型_app版本_xxx_xxx_厂商, 如 iphone 6s_10.0.0.1_sdk12.1_baidu_iphone:解析 ;12.1
t_a (uid,os,day)
最近30内,所有用户末次活跃日期
最近30内,所有用户末次活跃日期和倒数第二次的差值
以上是关于大数据面试题--最真实面试总结!!BAT等一线大厂,学长们实测!!的主要内容,如果未能解决你的问题,请参考以下文章
备战20222021年度BAT一线大厂Android开发岗面试题总结
进互联网大厂必须要靠内推吗?挑战年薪百万程序员大咖!最经典Java面试题,看不看,你决定
大牛耗时三天整理的BAT一线互联网大厂2021年春招最新面试题大全
测试小码农也有大目标,最新BAT大厂面试题大总结(持续更新中...)