大数据培训:偶然看到大数据面试题,拿出来分享

1

  • 一面

维度建模 如何建 确认主题 确认粒度 确认度量 确认事实表 确认维度表 Hive shuffle 和 spark shuffle的区别 Spark 为什么快 Spark任务是怎么执行的 转化率如何计算 缓慢变化维怎么处理 Flink状态 Flink窗口 Flink广播流

题目 两个升序链表 合并后仍然升序

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符 Sql题 一个lag解决的问题

 

  • 二面面经

各种业务问题,涉及全流程 Ks iv 值 海量用户 用户分群(位图) Hive count(distinct)有几个reduce 海量数据会有什么问题 Spark 有什么优化 Flink 精确一致怎么保证 Flink 实时topN Flink 写入redis怎么保证精确一致 事实表分类 Spark hive 用过的解决数据倾斜的方案 事实表分类 累积型快照事实表做法

  • 三面

Hdfs读数据流程 源码级别(要回答出来 rpc) Hdfs写数据流程 源码级别(要回答出来rpc) Mapreduce shffule原理 源码级别(要回答出来锁 多线程 以及缓存写磁盘交换) 数仓为什么要分层 实时比起来离线 要注意啥 特征挖掘大数据培训是怎么做的 怎么管理的 两道题 Sql top1问题

编程题 给一个字符串检测是否能重新排布字符串让相邻不同 如bba 能改成bab 返回true aaaac 返回false

2

Spark Streaming和Flink有啥区别?

  • Spark宽窄依赖定义,列举几个宽依赖算子
  • join有哪些种类?map-reduce里面join是咋实现的?
  • 多路复用,NIO这些了解过吗?
  • Redis有哪些数据结构?zset底层咋实现的?
  • Redis用来当分布式锁是咋整的?
  • Zookeeper知道不?里面用的啥协议?
  • MySQL有哪些锁?next-key lock能解决啥问题?
  • Kafka通过哪些机制实现了高吞吐量?

3

一面、 8.10 45min(小姐姐)

  • Flink Checkpoint:

面试官是说到checkpoint作用,然后我就开始拓展 项目中开启了checkpoint相关配置给用户使用,说到一些配置信息 之后我自己对ck还挺了解的,所以引申到Chandy-Lamport论文,这篇论文基本思想就是marker n一到进程就保存进程状态,但是进程状态到最终快照状态n的差距还需要链路状态来弥补 而flink的ABS其实简化了里面思想,但是这种简化思想导致的就是barrier需要对齐,而barrier对齐那么导致ck时效性受到影响,反压更加加剧这种情况。所以flink 1.11阿里提出了unalignCheckpoint机制 ,这个机制具体怎么做看直接flink文档吧

说到配置,C-L论文,ABS,barrier对齐,对齐缺点,阿里的不对齐

  • 端到端的exactly-once:

端到端要说三部分,源+数据处理+sink 比如kafka,源主要是offset由ck保存到快照里了,所以offset交给自己去管控(assign/seek)而非kafka 数据处理自然就是ck sink:要么外部支持幂等性,要么外部支持事务,kafka这种就是事务了,大概原理就是在barrier n来时preCommit事务n-1,开启事务n,在notifyCheckpointComplete时commit 事务n-1 (后续传个图上来)

  • Ck恢复,拓扑图修改后如何恢复?

这个其实只要理解快照中各个算子对应的state(keyedState+OperatorState)都是算子id--->State形式,而如果不指定算子id,那么算子默认id和其前后算子有关,所以一旦拓扑图改变,那么必然算子id改变,状态对不上,从ck或者savepoint中恢复失败 不太会,我说指定算子id

  • stateBackend用过哪些

直接说RocksDB不太会,这里感觉如果知道hbase,可以说一说

  • Spark stage、task划分

这个典中典了,反向创建,反向submitMissingTask(先父stage再子stage)

  • Spark提交流程

典中典了 算法:礼物的最大价值(dp) 栈序列是否合法(stack模拟即可)

二 面 8.12 1h

  • 进程线程区别

3部分吧 资源、调度单元 通信方式 切换代价

  • 进程通信方式、最常用是哪种

管道、消息队列、共享变量、socket、信号量、信号 socket

  • socket通信涉及哪些方面(很发散感觉答的不好)

3个部分吧 scoket使用和TCP各个阶段对应 最后可以说到I/O多路复用,然后举Kafka网络模型的例子,岂不美哉???

  • Java HashMap和ConcurrentHashMap 说了很久很久

典中典了 HashMap:桶集合+链表/红黑树 为什么桶集合选择数组啊?为什么使用拉链法解决冲突啊?什么时候resize() 啊?什么时候树化?恢复?ConcurrentHashMap :1.7/1.8区别,然后size和get无法强一致性之类的

  • Kafka理解 说了很久很久

kafka这个可以先说为什么使用kafka:回溯消费啦、上下游解耦啦... 全部怼上去 然后kafka总结下来真的就高吞吐、高可靠、高可用三点 高吞吐:生产者异步、压缩、批量发送啦、网络模型I/O多路复用高效啦、写入pageCache啦、顺序I/O啦、baseOffset形成跳表啦、零拷贝啦、批量拉取啦,一条龙整上,爽歪歪 高可靠:如何做到不重不漏不乱序?典中典了 高可用:Controller HA、PartitionHA(可以说到ISR、ISR概念,为什么设定ISR、如何保证消费一致性啦.............)

我从高吞吐、高可靠、高可用三点回答的,但是说的太多了,面试官到最后要求用三句话说明高可靠

  • 10TB 日志数据类似统计谁访问了哪些域名,访问了多少次,给出解决方案

我只会用mapreduce思想,想请教大佬解答下

算法 最大连续子数组之和(具体数组) 设定start,end 大于max时不断更新end,nums[i]+dp[i-1] < nums[i] 更新start

三面 8.16 40min

  • 说说MR(介绍的很不好)

告辞!

  • 主动说Spark的shuffle 过程

三种shuffleWrite(名字可能有错,源码好久没看了) BypassMergeSortedShuffleWriter SortedBaseShuffleWriter UnsafeShuffleWriter 每一种都有自己使用范围,第一种就是分区数<200(可配置),不排序,不聚合 最后生成两个文件blockFile+index ,sortedBaseShuffleWriter解决了第一种过渡消耗内核缓存区缺点,那么最终要按pid分组,那只能对pid进行排序了,额外的可以选择对key进行排序与聚合(如果可以,说说里面的sizeTrackingAppendOnlyMap,Array[2*cap] 存放了,使用线性探测解决冲突之类的);unsafeshufflewriter主要涉及到较新的spark内存管理有关了,申请memoryBlock为page,然后数据序列化到page中,设立一个类似索引的page,最后溢写磁盘对索引的page进行 排序之类的,可以看看网上博文

reduce只有BlockStoreShuffleReader 基本流程就是获取mapStatus,解析获取blockManagerId,然后从对应BlockManager拉取map输出的blockFile对应pid数据,然后边拉取可以边聚合之类的

  • flink中ck超时原因(这checkpoint功能似乎字节面试官很看重,感觉得好好准备)
  1. 反压 毕竟包含barrier的event buffer一直不到 ,subtaskCheckpointCoordinator做不了ck,当然超时
  2. 面试官说:算子执行外部请求能否导致超时?当时没想出来,太紧张了【裂开】

后面三面过了后,通过hr给面试官转发了消息:MailBoxProcessor中的线程也就是数据处理(subtask)线程,该线程每次会pollNext从InputChannel中拿取buffer,如果是event buffer(barrier)并且barrier对齐了,那么此时执行performCheckpoint方法(之后就是保存快照逻辑)

如果直接在某个userFunction去请求数据,那么使用的是就是当前数据处理线程(比如请求MySQL数据,耗费大量时间),必然影响当前线程处理barrier,导致checkpoint超时 而比如在open方法中去初始个线程池比如RichAsyncFunction#open方法中初始化线程池然后去查询,便不会影响正常数据处理线程

必然超时呀!!!

当时脑瓜子嗡嗡的,只说了反压,面试官叫我回去试试算子执行外部请求能否导致超时(东扯西扯,扯到同步快照保存,异步快照保存,都没啥用,最后尬住了。。。)

  • flink和spark区别(spark streaming不太会)

说了flink中subtask和spark中task数据处理区别 这个其实就是数据如何流通还有上游主动推到下游还是下游拉取上游之类的?

  • spark 3.0特性 gg

真不会xdm

  • 反问

问着问着就又变成面试官问我了【裂开】,数据倾斜怎么处理

  1. 暴力加并行度
  2. 两阶段聚合
  3. join里面广播变量 + 采样复制(和面试官争论了一波) 可以看一波美团技术, https://tech.meituan.com/2016/05/12/spark-tuning-pro.html 平时怎么看源码的

4

实习一面:

java八股文,引用类型基本类型的区别,list map hashmap接口继承关系,linkedlist arraylist hashmap实现等 大数据部分,hadoop框架,namenode,联邦namenode,spark rdd,spark和mr区别,转换算子和action算子 sql题一道,忘了,不难 算法题:返回一个用当前数的各位数字组成的比输入数大的最小的数,比如1234返回1243

实习二面:

spark有哪些算子,spark比mapreduce的优势,spark shuffle具体实现,和mr shuffle的对比,spark内存 然后问了很多不相关的科研项目(简历上写的)和一些宏观的问题,比如大数据的核心思想是什么(分治) 算法题:20M内存 100G文件 找top10的url

实习三面:

主管面,忘了问了啥,问了一点点大数据框架spark hive hadoop啥的 是否看过大数据的三驾马车的论文,讲一讲 大多数都是问的宏观问题和一些比如啥时候能到岗实习多久这种 sql题忘了,也不难 算法题:一个有序数组找唯一重复的数,需要多种方法,用了双指针 hashmap 位运算等

5

一面,1h15min,5.19

感觉面试官特别好,上来刚聊两句我就十分放松了,然后就开始放飞自我hhhh 1.先来个自我介绍吧 2.聊了一下之前实习 3.kafka掌握怎么样,flink有没有接触过呢 4.先来个mr过程吧 5.每个小文件为什么要进行排序,最后合成的大文件为什么进行排序 6.一个wordcount案例,具体各个流程,map怎么做,reduce怎么做,很细 7.spark掌握怎么样,我说了解,然后就没问了 8.数仓呢,数据仓库的分层能说一下吗 9.数仓知识还了解什么 10.你刚刚说雪花模型把维度表规范化了,那说一下你了解的范式吧 11.做题吧,两道sql,两道算法,写出来 11.1 订单表 orders:订单 ID (order_id)、销售 (employee_id)、成交价格 (price) 销售表 employees:销售 ID (employee_id)、销售姓名 (employee_name)、所在区域 (region) 求各个销售的总销售额,要求有销售 ID、姓名、所在区域 11.2 订单表 orders:订单 ID (order_id)、销售 (employee_id)、成交价格 (price) 销售表 employees:销售 ID (employee_id)、销售姓名 (employee_name)、所在区域 (region) 求各个区域销售额最高的销售对应的销售 ID、姓名、所在区域、销售额 11.3 给定一个升序整数数列 L(L 中没有重复元素)和一个整数 n,判定 n 是否在 L 中 11.4 给定一个集合,求这个集合的所有子集组成的集合。可用序列来表示集合。12.反问:您觉得我之后需要加强哪方面的学习 总结:面试的很舒服,聊着聊着状态就特别好,题都a了 一面结束,第二天早上就接到电话进行二面,约5.24

二面,1h,5.24

二面面试官也很好,都有回应 1.自我介绍 2.实习时长 2.说一下mysql的索引吧 3.B树和B+树的区别,问的很细 4.你是考研还是保研,顺便说了下我简历的问题 5.spark掌握如何?问的很细,具体忘记了,完全没套路,很发散 6.jvm掌握如何?7.多线程呢?8.kafka呢,partition为什么采用磁盘顺序写?9.500G 的文件,机器 1core 1G,频率TopN 10.两道算法题 10.1 add(x) delete(x) random() 设计一个数据结构满足三种操作时间复杂度O(1) 10.2 岛屿问题变形,八个方向 11.反问:您觉得我之后要加强哪方面学习 flink,kafka要深入学一下,jvm多线程要补一补,之后会有三面 过了一个多小时,接到电话,直接hr面了 hr面,20min,5.25 大概就是个人优缺点,校园生活之类的,聊天 最后反问是不是hr面通过就录取了。没问题的话这周就发offer 俩小时之后就发offer了,太效率了,赞!

6

一面:

根据项目问了架构,涉及到的技术 spark streaming Vs flink watermark是干什么的,如何使用 数据倾斜如何处理 编程原则Solid Spark reducebykey和groupbykey的区别 mysql 索引相关,B+树,聚簇索引等,回表 Kafka 原理 高可用 算法:中文数字专阿拉伯数字

二面:

项目:重点讲一个,其中的架构,技术等 spark streaming vs structured steaminng vs flink 差别,flink checkpoint,barrier等,扩展到谷歌millwhile, dataflow等模型 Kafka 高可用如何保证,幂等性如何保证exactly-once。为什么性能好 其他的记不清了,多是大数据相关 算法:数组中 乘积最大的三个数,有负数,零的情况。排序后处理,复杂度分析

三面:(痛苦来了)

聊了很多现在公司业务问题 场景:三个节点日志,每个节点两千万,有时间和IP等信息,如何设计系统查询一个时间 范围内top10的IP,要求快速响应 想的是:通过flink或flume刷到mysql,然后groupby count。但是面试官问的特别详细,比如,flink如何读数据,什么原理……,怎么写入mysql,怎么存,一天6kw,10天6亿数据,分库分表?,怎么连接mysql……groupby怎么做,count怎么做…… 问的相当崩溃,最后如何及时响应用户请求,通过sql groupby 过后rollup,卷数据。触及知识盲区了。最后问了一些项目和管理中的问题,个人优势啥的

四面:

离职愿意,个人规划,薪资等

7

看面经里都没有与 Flink 相关的,由于我实习做的主要是用 Flink 开发实时任务,我来补充一下

这部分是问的问题,基本官方文档都有

Flink 的 Exactly Once 语义怎么保证 Flink 的 checkpoint 流程,都是同步 checkpoint 吗?Flink 任务故障重启流程,full restart 和 region restart 区别,举例 region restart Window 的概念 这部分是实习项目里用到的比较有价值的点

Flink 的 operator chain 机制一般会提升性能,但有耗时逻辑时把对应的 operator 拆开来跑,可以提高性能 上游数据不均匀的情况下,采用 rebalance 的连接方式均衡消费 多流 Join 的实现, connect stream + keyBy + CoProcessFunction + state state 和 timerService 的使用,很关键的一点是延时任务是 per key per timestamp 的,这里踩过坑 其它主要问的是 Java 基础和算法题

实现 ImmutableStack 即 pop 和 push 都要生成新的 stack,要求复杂度为 O(1) 二叉树中序和先序遍历数组,求后序遍历数组 实现 36 进制加法 "1z"+"1" = "20"

8

写在前面 大家好,这是一篇超长面经+总结,是对自己上一阶段的梳理,也希望给以后准备找工作/正在找工作的同学们多多少少一点帮助。

基本介绍:普通985本+海外渣硕,大二转到CS专业,大三项目交流3+2,19年10月留学毕业,有工程项目,无实习无额外加分项,主Java研发岗,非battmd级别选手,加一起拿了4个offer,最后准备去星环了。

一,面经集合(按公司划分) 最早是去年的12月开始,中间有几个月在研究室抗压没有面,考虑到读者的阅读喜好所以按公司划分面经,强调一点是时间线很重要,前后自己面试能力也有差距,请留意。一般都是远程视频/电话面,每场面经内问题提问顺序不定。一些过于水的面经没有包括在内(比如8月前的某为,银行)

最后关于笔试作弊,请不要拿社会什么的做借口,作弊可耻是基本常识,并不会因为形势或人数的因素而改变,扎实的代码能力肯定有用的,现在多吃点苦是值得的。

五,关于面试 有技术只是入场券,拿offer还是要一定的运气。当然,很多大牛之所以为大牛是因为平时积累的就足够多,会议论文,acm竞赛,大厂实习,科研创新成绩等等,非大牛的我们就要做好任人挑选的准备,态度端正到最后一刻,有比较烦人的面试官是常事,保持心态很重要。

面试官:“最后有什么问题要问我的吗?”

我一般是问一些公司业务,和进去之后做什么工作,然后直接问后续流程(我觉得挺好的,既能节省彼此时间也能直到自己一些技能点不足,下次面试加以改进)

六,关于选择 不要给自己太大压力,找工作和考试不一样,要顺着自己的心意在自己可达的范围内找合适的,不是追高(当然有上进心是好事)。努力很重要学会放下和生活也很重要。研发岗位有游戏研发,服务器研发,客户端研发,面向各种语言的研发,大数据研发,网络工程研发,安全研发等等,不同机构和公司业务要多少了解一点再选比较好。比如游戏岗几个经典考题(洗牌算法,搭配算法,动态规划,经典数据结构树,链表的考察),服务器研发针对各部门要求会有变化,感觉操作系统会多一些

文章来源于实时数仓架构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值