大数据面试题2

1自我介绍
2项目介绍
3数据量+集群配置
4遇到过哪些问题,反正数据倾斜
5 chlikhouse的计算引擎
6接触过运维吗
7flink版本
8flink内存 ,托管内存干什么用的?
9spark处理了哪些业务
10flink类加载,两个类型了解吗
11java垃圾回收机制
12你感觉你的优势是什么
13你工作的三年最有成就感的事

应聘者二 2022-11-26

(1)介绍下你们项目的人员组成
(2)你们集群规模
(3)你们集群做了那些优化
(4)常用编程语言,java有哪些设计模式,简单介绍下
(5)简单介绍下flink内存
(6)flink做了哪些优化
(7)你有什么想问的

应聘者三 2022-11-26

(1)自我介绍
(2)Yarn资源配置(具体参数,具体到RS与NM的内存配置大小,)
(3)Yarn调度器, 你们选择的那个,你们有几条队列
(4)Yarn高可用配置了吗, 如何避免ResourceManager挂掉,挂掉之后如何处理(ResourceManager中具体参数设置)
(5)数据量 ,集群规模,
(6)flink内存 模型,托管内存干什么用的?
(7)java垃圾回收机制了解吗
(8)Flink使用那些算子(结合具体代码讲使用流程)
(9)Java设计模式了解吗, 具体举例
(10)实时跟离线共用一套吗, 如何做资源隔离
(11)大数据有多少人

1)自我介绍
(2)介绍最近项目
(3)kafka(数据乱序,重复)
(4)maxwell sqoop flinkcdc…还知道那些?有什么区别?
(5)datax衔接maxwell怎么做到数据不丢失
(6)数仓建模
(7)数仓没层存储方式,snappy为什么解压缩快
(8)业务总线矩阵怎么构建的
(9)合理设计rowkey,预分区,预分区怎么做的
(10)配置表那些维度放到redis?怎么知道谁是最近用过的
(11)flink反压,具体做过哪些?
(12)flink除了窗口,延迟时间,测输出流还有那些解决数据迟到问题
(13)为什么用ck?ck为什么快?
(14)hive数据倾斜具体场景,解决?
(15)select * from A表和select* from B 速度相差10倍 什么原因?
(16)配置表工具类怎么做的?

1.数仓的概念
2.业务域怎么分的?
3.关于主题的说法,如何划分,
4.ADS的表如何分类,提交什么需求就叫什么表?
4.各层有多少张表,数据量
5.数仓跑了多久
6.hadoop的基本原理。hadoop3跑的啥,tez还是spark
7.RDD的基本原理,弹性怎么理解
8.宽依赖和窄依赖
9.spark数据倾斜的问题
10.结果表: 客服名称,客户数 ,未完成对话数, 平均响应时间
msg_tab: from_id, to_id, msg_time, msg
server_tab server_id,server_name
消息表:发送消息的ID,接收消息的ID,消息的时间,消息内容
客服 和 客户都可以发送消息,接收消息
客服表:客服ID,客服名称
统计指标:统计每一个客服:客户数:服务的客户数
未完成对话数:客户发送消息,客服没有回复的
平均响应时间:客户发送消息,客服多久回复 的平均值

12. 2-8定律,20%的人手里掌握着80%的财富
场景:一张表有两个字段,user_Id,money ,统计掌握80%财富的 那20%的人
如何统计? 用money排序  用sum()over()累加自己和比自己高的人的money  直到累积值超过总money的80%

13.对大数据岗位的理解,职业规划

应聘者二 2022-11-26

(1)自我介绍
(2)介绍一下实时
(3)介绍下你们的异步IO和旁路缓存介绍数据一致性离线实时
(4)架构是一套吗
(5)遇到的数据倾斜
(6)存储用的是什么
(7)了解多线程吗
(8)算法:整数数组个其中一个是单一的  剩下的都是两个如[9,9,1,2,2,3,3] 求出这个数是多少
(9)有什么问我的

应聘者三 2022-11-26

(1)介绍项目
(2)hadoop写流程
(3)shuffle讲解,几次归并?几次排序?
(4)spark的广播变量,广播变量的优势?
(5)用户画像的标签分类?性别可以定义为属性标签吗?
(6)用Java写一下归并排序

应聘者四 2022-11-26

(1)自我介绍
(2)项目介绍
(3)spark的使用场景
(4)hadoop高可用 hdfs的启动进程
(5)hive是怎么集成spark的
(6)hive读取元数据
(7)多线程
(8)java 高效读写用什么数据集
(9)每天跑的数据量
(10)集群规模

(1)自我介绍
(2)项目中做过哪些工作?
(3)可以接受运维岗吗?
(4)hive和普通数据库的比较?
(5)hive调优?
(6)hive内部表和外部表的区别?一般用什么表?
(7)hdfs读写数据流程?
(8)Kafka的ack机制?
(9)Kafka的高可用?
(10)Kafka数据保证不重复?
(11)Flink和sparkstreaming的区别?
(12)讲讲flink的wartermark?
(13)flink是必须依赖hadoop吗?在平时工作中依赖hadoop吗
(14)flink遇到数据倾斜吗?
(15)说说hbase的rowkey设计原则以及预分区?
(16)讲讲spark的rdd
(17)讲讲rdd的宽依赖和窄依赖
(18)讲讲shuffle
(19)shuffle的优化
(20)spark里面的groupbykey和reducebykey有什么区别?哪个更好,为什么?
(21)工作中是否经常与客户交流?
(22)lnuix命令经常用吗?shell编程用过吗?
(23)awk怎么用的?批量替换用什么命令?假设我们有一个文件,有几千行,要替换其中一个单词,怎么做?
(24)一个目录下有上万个文件,只保留最近七天的,怎么做?
(25)MySQl索引的分类?
(26)有过关系型数据库写过SQL或者优化过的经验吗?27.讲讲java的gc机制?
(27)java的重载和重写的区别?

应聘者二 2022-11-26

(1)项目介绍
(2)hive分区和分桶的区别
(3)hive的文件格式(建表的存储格式)有哪些?,从压缩格式上看呢有什么区别?
(4)平时有遇到数据倾斜吗?
(5)flume三大组件,source有哪些,channel有哪些,有啥区别,sink
(6)flume拦截器
(7)kafka几大要素(架构)
(8)kafka数据安全的机制(消费者角度offset)
(9)怎么发现HDFS小文件,不处理怎么样,怎么处理
(10)公司hdfs上允许多少个文件块存在,达到多少会报小文件过多
(11)sparkRDD说一下
(12)CDH用的版本
(13)linux命令
(14)写sql思路(统计每个部门的大于30的女性个数)
(15)hive如何更新数据(创建临时表)
(16)shell脚本有写过吗

应聘者三 2022-11-26

(1)几年经验了,那年毕业的,全日制本科吗
(2)工作中主要职责是什么
(3)最熟悉的组件是什么
(4)spark提交流程
(5)spark作业提交模式
(6)sparkaction算子和转换算子
(7)wrdcount调用算子有哪些,步骤
(8)kafka的幂等性怎么理解,用在什么场景下
(9)除了幂等还有什么能够保证kafka消费数据一致性
(10)FlinkCDC的原理
(11)hive的优化
(12)平时用的开发语言是什么,用来多长时间
(13)对一站式集成类项目从上到下规划,比如云大数据,云大数据方案,解决架构
(14)对服务器网络层面有理解吗,服务器底层网络规划有经验吗,现在使用的服务器有哪些型号,网络出口有哪些
(15)操作系统用的那个
(16)linux脚本有了解吗
(17)数据导入导出脚本涉及到的命令有哪些,列举一下
(18)awk作用
(19)替换文本中指定字符串,查看进程命令
(20)查看当前节点的网络流量
(21)数据库的四种隔离级别
(22)mysql数据库索引失效的情况
(23)mysql主从复制的机制是什么
(24)后面问了下上家公司情况,离职原因,期望薪资等

应聘者四 2022-11-26

(1)java的接口和抽象类的区别
(2) hdfs的端口号
(3) hbase的读写
(4) hbase的合并
(5) hadoop的配置文件,都配置了什么?
(6) Hadoop集群都遇到了什么问题,怎么解决?
(7) dfs和hdfs的区别
(8) sql的join有哪几种,有什么区别
(9) spark为什么mr快
 (10)  开发工具,用没用过Github?

1)实时项目串讲。
(2)你在项目中负责哪些。
(3)你们公司实时都统计过哪些指标? 你们的日活怎么统计的?怎么统计某一时刻的访问量?
(4)你们窗口里面做了哪些处理
(5)如果窗口已经关掉了,还有数据没到怎么办
(6)日志的数据格式是怎么存的
(7)flume怎么监听日志文件的变化?
(8)提交flink jar包的时候一般设置哪些参数
(9)flink的并行度,jm,tm内存等都是怎么去设置的?
(10)一般flink设置多少并发?
(11)瞬时数据量最多能达到多少?
(12)日志里做没做过数据清洗?
(13)你们第二个项目中spark的作用是什么?
(14)spark运行的流程是什么?
(15)读到大文件的时候怎么处理的? 切分     跟mr的切分一样吗?
(16)spark的很多算子,它怎么去划分各个阶段?
(17)哪些算子会重新分区?
(18)map和map partition的区别?  map partition处理一个分区的数据,他跟map不一样吗,不是一条一条的处理吗?
(19)hive的自定义函数写过吗?  写完自定义函数怎么去应用?
(20)hive的文件用哪种压缩方式?
(21)gzip的文件有多大? 10%
(22)hive读gzip文件会切片吗?   gzip不支持切片
(23)切片怎么切呢?
(24)数据里面带换行符的采集的时候怎么办?
(25)你们写的shell脚本多吗?

1)项目介绍
(2)开窗函数有那些
(3)hadoop组件
(4)ods ads层多少张表
(5)hive数据倾斜
(6)hive优化

1)hadoop中的小文件问题,如何产生,如何处理
(2)hive中很多个分区,分区中很多小文件,如何解决,如何将小文件合并(直接新建一个表,读取原来的表,进行小文件合并,再将合并后的文件导入原来的位置)
(3)oracal–>kafka—>mysql, 如果下游Mysql中的数据被误删,如何快速恢复(指定offset消费,重新生成消费者组,从头消费,mysql中去重)
(4)数据库中的数据去重问题(我回答的分组之后,Hive开窗排序取最新)
(5)问了rank 与 rownumber的区别

1)自我介绍
(2)讲一下项目
(3)事务型事实表和累计型事实表的区别
(4)实时的dim层可以不可以用直接用fliksql从主流里面拿数据,用where条件,然后把对应的字段直接匹配到维度整合后的那个宽表里面?
(5)为什么不做维度整合?
(6)水位线是解决什么问题的?
(7)Mapreduce的机制?
(8)数据倾斜在哪个阶段产生?

1)介绍项目
(2)hadoop的配置文件有哪些?
(3)liux常用命令
(4)脚本查看最新文件
(5)kafka应答机制
(6)写过Java吗,知道springboot吗?
(7)买过金融理财产品吗?为什么买

1)自我介绍
(2)介绍你做过的项目
(3)你们hadoop集群用的开源还是商业
(4)Hadoop,zookper用的那个版本
(5)磁盘坏了怎么办
(6)hive优化
(7)查看集群健康情况的命令
(8)string string buffer stringbuilder的区别

1)自我介绍
(2)介绍你做过的项目
(3)你们hadoop集群用的开源还是商业
(4)Hadoop,zookper用的那个版本
(5)磁盘坏了怎么办
(6)hive优化
(7)查看集群健康情况的命令
(8)string string buffer stringbuilder的区别

1.自我介绍
2.介绍公司项目(实时)
3.用flink做什么
4.离线用hive
5.flink算子
6.flink sql flink api
7.项目上线遇到什么问题
8.redis的ttl设置
9.用java开发
10.java掌握程度
11.熟不熟悉kafka
12.具体说一下kafka(组成,版本,多少台,业务数据多少,多少条数,offset消费方式)
12.数据重复消费测试
13.kafka的leader和follower  topic
14.如果一个leader挂了,kafka
15.kafka的leader的选举流程
16.kafka的分区策略
17.业务数据多少个分区
18.遇到过节点挂点的情况吗
19.flink的taskma  jobma  内存分配  cpu分配
20.实时项目日志数据怎么处理维度数据
21.flink cdc 原理
22.kafka有啥作用   我说的萧峰缓存,可以重复消费,存储数据量大,
23.kafka读写快不快,为啥
25.hbase和hive对比
26.hbase数据热点
27.关系型数据库用什么比较多  mysql
28.mysql和hbase区别
29.java类加载顺序
30.java版本
31.java的函数式编程
32.A系统topic数据经过清洗后放到另一个topic,b系统没有数据,如何排查,一开始能读取,后来不能读取
33.个人倾向实时还是离线
34.还有什么要问我的

应聘者二 2022-11-18

1.自我介绍
2.介绍公司项目(实时)
3.为什么要旁路缓存+异步io
4.redis缓存数据保留时长
5.flink开发卡住时间长的问题
6.flink作业分配资源
7.资源不足造成的反压
8.flink用java还是scala
9.java熟悉?
10.kafka了解
11.实时数仓几个topic
12.业务数据一天多少量
13.kafka版本
14.集群台数
15.一个topic分区和副本各自作用
16.一个topic可能被两个消费者消费吗?消费者组
17.kafka集群挂掉
18.kafka精准一次消费
19.kafka  offset存储在哪  还有什么高并发?
20.flink算子
21.我说了flink算子有keyby  问我底层原理
22.flinkcdc
23.离线  hive和hbase区别  问我hive是数据库吗?
24.hive删除表 数据会删除吗
25.habse行和列 都有哪些角色  或者说一个表的组成
26.mysql使用过吗
27.场景
a系统数据库 cdc组件采集一个表到一个kafka topic
flink对kafka数据做简单清洗 写到另一个topic
b系统来读另一个topic数据  b系统读不到数据了  问题在哪?
28.broker中的leader选举机制
29.想从事什么工作
30.问我java脚本开发能接受吗
31.问我java类加载顺序
32.我有什么问题

应聘者三 2022-11-18

1.自我介绍
2.spark开发
3.有没有做过spark读文件 做操作
4.flink实时批量操作有没有做过,我说做过开一天窗口的
然后问一天窗口数据量会不会很大,数据量的问题
问按天统计给多少资源
5.数据量多少  我说日活50w
然后flink中日活50w 这个状态保存在哪
怎么统计日活
然后rocksDB 了解深吗
6.flink基于什么  k8s  还是yarn
7.rocksDB是新搭的还是内部的
8.flink挂了还有rocksDB吗?在哪存着
9.开发语言
10.java基本数据类型
11.char几个字节
12.int字节
13.int  float double 区别
14.int float区别
15.float存储数据遇到的问题?double存储数据遇到的问题?
16.java怎么判断两个对象是否相等
如果是两个student对象内容都一样 相等吗
17.常用的集合类型
18.list set区别  set如何去重
19.list实现类
20.Arraylist 删除大于10的数字    需要说代码
21.flink写代码的流程   main函数里面怎么写  需要说出来  具体代码
22.flink读kafka  说具体代码
23.flink数据 往哪里写
24.想把flink数据积攒缓存10s 再写入clickhouse 怎么实现
25.windowall 怎么理解的
26.flink精准一次性
27.代码上线流程
28.有运维团队?
29.作业的管理权归运维还是开发?
30.作业跑失败 处理流程

1.java引用数据类型和什么什么数据类型区别
2.数据量:有多大,问我内存问我硬盘
3.spark为什么叫弹性集合
4.kafka为什么那么快
5.kadka的broke如果有一个leader挂掉了,剩下follow怎么均衡分配
(88条消息) 【Kafka】kafka 重平衡(Rebalance)_九师兄的博客-CSDN博客_kafka 官网rebalance
6.java集合有哪些。
7.java的hashmap底层怎么可以能够不重复
8.kafka精准一次性,性能不好怎么办
9.scala什么和java的静态类很像
10.hbase:读写流程
11.怎么调优hbase的读流程
12.blockcache有几类
13.如果这边刷写hbase挂了怎么办怎么保证不丢失

.上来就说用scala版spark core开发
2.实时数仓怎么计算的
3.体温检测场景题
4.实时数仓延迟
5.卡夫卡每秒多少数据
6.开发过flume源码吗
7.ck稀疏索引
8.Clickhouse的稀疏索引以及"8192"的含义 - 简书 (jianshu.com)
9.hbase读流程
10.hbase二级索引的协处理器开发过吗
11.ES做二级索引
12.coprocessors
13.hive udaf写过吗
14.flume怎么使用的 写过其中的类吗,拦截器哪个线程调用的
15.spark任务划分
16.java数据结构算法,反射,多态 ,多态对应的设计模式,字典树

1.介绍一下实时项目?
2.问我mysql的binlog在哪开的?
3.说到可视化的时候,问我mapper干啥的?
4.sql写的怎么样?
5.问我在公司学到了什么?
6.数据峰值多少?带宽多大?
7.搞了哪些优化?

自我介绍
最近的一个项目
框架
每层做什么
你日常在工作中干什么?

1.hadoop的调优
从HDFS 小文件
shuffle
这2个方面来回答

2.实时 中选用Hbase存储维度表的数据?
列举各种数据库的区别:
mysql
redis
clickhouse
hbase

3.在项目中哪些地方用Clickhouse?
优点?

4.在项目中 为什么使用maxwell / kfk 做一个中间件 不直接使用 Flinkcdc拉取数据?

5.选用redis的一个原因是什么?
分析:从旁路缓存来答问题 优点 如何实现的?

6.由于某个表的数据量特别大,导致oom,节点挂了怎么处理?

从几个点着手解决:
1.Heap size 调整大一点,一般这个碰到的问题比较多
2.Map端oom ,一般是处理的切片太大了
3.Shuffle时候oom, 一般是map输出的数据量比较大
4.Reduce的oom ,reduce 处理的数据量太大

7.跑任务特别慢?
mr任务:yarn 看状态 跟数据量的一个大小 以及运行的一个时间长度

8.hudi相关?
为什么要使用数据湖

9.非技术类问题:
离职的一个原因?
日常有什么兴趣爱好?

24.1 学长1

1)基本介绍

金山云2.21号下午4点:电话面试

部门主要是做数据平台,二次开发改源代码

面试时长:1小时

2)技术部分:

(1)HashMap,HashTable,ConcurrentHashMap区别,HashMap扩容;注解的使用和内部原理

(2)Spark 任务划分,Job提交流程;

(3)根据进程名杀死进程;查看端口号占用情况;

(4)Flume如何保证数据不丢;TailDir如何保证数据完整性;记不清了,是读取一个Postion

(5)Flink如何保证exactly-once语义; Flink和Spark的区别;

(6)Kylin和Druid的使用场景和原理;CDH集群监控相关问题;

(7)介绍调节Kafka速率和开启背压机制;广播变量原理;项目性能调优(调参一直被怼);一些集群部署的事情

(8)JVM的参数调优;GC种类和算法(讲讲标记-清除原理);

(9)两个数组找出中位数;两个线程交替打印递增自然数;

3)金山云2.25号上午11点:电话面试

(1)介绍一个最擅长得项目,用到哪些大数据组件

(2)用Azkaban和其他调度工具的优劣,如何保证某个job挂掉后断点继续跑任务?

(3)Spark用过的算子

(4)Presto了解吗?

(5)HashMap和HashTable的区别?ConcurrentHashMap了解多少?一面和二面都被问到

(6)对网络编程,NIO,BIO等并发相关的理解。

(7)八个硬币找出最重的(分两组二分查找)

(8)一个N阶楼梯,可以步长为1/2的走,有多少种走法?(斐波那契数列)

22.1 学长1

快手:视频面试

1)一面:50分钟

(1)介绍项目

(2)Flink为什么用aggregate()不用process()

(3)自定义UDF,UDTF实现步骤,有哪些方法?UDTF中的ObjectInspector了解吗?

(4)Flume丢不丢数据?PUT,TAKE事务

(5)SQL题:

1. id department salary manager_id 找出员工薪水比领导薪水高的人员(单表join)

2. student course score 找出哪些学生课程比平均课程成绩高?(记不太清了,用到子查询)

(6)快手的数仓分了3层,OLAP用的是Druid,数据量每天达到PB级,上千个指标,平均每个人跑几百个指标吧。

2)二面:1小时

(1)手撕SQL

①A-天极增量表: uid,module_name,location,date

目标-B全量表: uid,module_name,first_entry_date,first_location

找出两个第一次插入到B表

②user:uid,age,date

 order:order_id,order_money,location,date,其中location:{"city","xx"}

双十一场景,找出北京市双十一年龄范围在20-25岁的人中 的人数,人均销售额大于1000的人

③URL: http://www.a.com/home?key1=v1&key2=v2 ?后面的数据做切分,存放到一个JSON中返回,要求用UDF函数

④找出一个List中的最大值和最小值并返回

(2)问到了几个场景题

①Flink设计题

②HBase使用场景

③Redis使用场景

④Druid的一些东西

(3)最后问到了职业规划,闲聊

22.2 学长2

1)技术

(1)自我介绍

(2)问了下离线数仓的架构

(3)问了Hive四层架构

(4)问了业务系统8张表的更新方式

2)场景题:

(1)使用SQL或者SparkRdd写出代码

正在上传…重新上传取消正在上传…重新上传取消

(2)两张表,怎么使用SparkRDD的方式实现Join,代码

Table1  

uid,dept_id

Table2

dept_id,dept_name

(3)使用MR或者Spark实现countDistinct(例如求uid数量)

22.3 学长3

现有一个用户活跃表user_active、用户注册表user_regist,

表中分区字段都为p_date(yyyy-MM-dd),用户字段均为user_id;

设计一张1-180天注册活跃留存表;

select regist_date

     ,date_diff

     ,user_count/regist_count as rate

from (

   select t1.regist_date

         ,max(t1.regist_count) as regist_count

         ,datediff(t2.active_date, t1.regist_date) as date_diff

         ,count(*) as user_count

   from (

       select user_id

             ,regist_date

             ,count(*) over(partition by regist_date) as regist_count

       from user_regist

       where dt >= date_sub(current_date(), 180)

   ) t1

   left join (

       select user_id

             ,to_date(active_date) as active_date

       from user_active

       where dt >= date_sub(current_date(), 180)

       group by user_id, to_date(active_date)

   ) t2 on t1.user_id = t2.user_id

   where datediff(t2.active_date, t1.regist_date) >=1

   and datediff(t2.active_date, t1.regist_date) <= 180

   group by t1.regist_date, datediff(t2.active_date, t1.regist_date)

) t

二面 下周1

-- 统计面试几个人,多长时间 ,

-- 日志表

-- 点击开始面试 emp_id, user_id, session_id ,click_time

-- 点击关闭 emp_id, user_id, session_id ,click_time  -一次会话

-- 计算: 点击会出现重复数据, 会有多个点击 点击时间会不一样,求最后一个时间

--       关闭的时候,第一个点击时间

-- 每个面试官,每天 多长时间面试

select t1.dt as report_date

     ,t1.emp_id

     ,sum(unix_timestamp(t2.max_click_time, 'yyyy-MM-dd HH:mm:ss') -  

         unix_timestamp(t1.min_click_time, 'yyyy-MM-dd HH:mm:ss')) as inv_time

from (

   select dt

         ,emp_id

         ,session_id

         ,max(click_time) as min_click_time

   from start_log

   group by dt, emp_id, session_id

) t1

left join (

   select dt

         ,emp_id

         ,session_id

         ,min(click_time) as max_click_time

   from end_log

   group by dt, emp_id, session_id

) t2 on t1.dt = t2.dt and t1.emp_id = t2.emp_id and t1.session_id = t2.session_id

group by t1.dt, t1.emp_id

#

面试官描述,我提醒下,先问清楚我需求,一旦你开始写,就不要问我了?

然后我简单问了个问题?

最后面试官说,有个主意事项的,同一个session_id可能对应多个user_id, 因此需要按照人员进行划分,

我表示,我以为每次个用户只有唯一的session_id会话id

三面 本周3

主要问的都是围绕着从业经历,从java到大数据的原因

目前项目的架构,自己做的什么东西,

数据质量有接触吗?怎么理解的

零零碎碎的面试的都是些 类似宏观上的东西,也没问什么废话

1)技术部分

(1)HDFS架构理解(基础)

(2)HDFS源码/工作原理(高级)

(3)MapReduce架构理解(基础)

(4)MapReduce源码/工作原理/Shuffle原理(高级)

(5)MapReduce二次排序(编程,必选)

(6)YARN架构理解(基础)

(7)YARN源码/工作原理(高级)

(8)HBase架构理解(基础)

(9)HBase源码/工作原理(高级)

(10)HBase性能优化(高级)

(11)Hive原理理解(基础)

(12)Hive性能优化(高级)

(13)Flume架构理解(可选)

(14)Kafka架构理解(可选)

(15)Spark RDD理解(基础)

(16)Spark reduceByKey与groupByKey区别(基础)

(17)Spark Broadcast与Accumulator功能(基础)

(18)Spark工作原理(高级)

(19)Spark Shuffle原理(高级)

(20)Spark源码理解/贡献(高级)

(21)Spark性能优化/数据倾斜(高级)

2)项目部分

2.1)数仓理论

(1)数据仓库分层架构(初级)

(2)事实表与维度表(初级)

(3)星型模型与雪花模型 (初级)

(4)日增量表与日全量表 (初级)

(5)拉链表 (初级)

(6)缓慢变化维 (初级)

(7)两种建模理论(初级)

(8)data-vault理论(高级)

2.2)数仓周边系统

(1)血缘关系

(2)调度系统

(3)展示,olap(kylin)

(4)指标管理

(5)数据质量管理 (高级)

(6)元数据管理,调度系统元数据,任务运行数据,表存储数据,数据字典等

3)手写SQL部分

(1)点:窗口函数,行列转换,聚合函数

加一点复杂的:collect_set,split,case when,聚合函数,union等

(2)函数考察

eg: rank, dense_rank, row_number区别 (基础)

行列转换 (基础)

sort by,distribute by,order by,clustered by区别

(3)3个表关联,写下大概的mr过程 (中级)

(4)去重,2个写法的区别:

select count(distinct id) from t1;

select count(1) from ( select id from t1 group by id) a (高级)

(5)map join 原理 (基础)

(6)bloom filter去重,原理(高级)

(7)hive tunning

4)场景部分

(1)Job,Reduce长时间百分之99;

(2)Reduce的3个阶段,Reduce百分之90+,又降下去,反复几次

(3)Map一直百分之90多,之后报错

21.1 学长1

上海科锐国际外派美团点评

1)面试前HR给的重点

(1)SQL要强;

(2)分层是否有参与;

(3)熟悉哪些框架;

(4)项目的数据量有多少;

(5)调度工具用到哪些;

(6)数据源在哪里;

(7)数据可视化怎么做;

(8)跟Java怎么对接;

(9)面试官还会现场出一些题目,现场做

2)一面:

(1)问Spark,Flink优劣势,

(2)Flink如何处理乱序数据,

(3)Flink内存溢出怎么办,

(4)Flink有没有试过优化,

(5)Flink精准一次消费,

(6)建模理论,用过什么模型,雪花和星型的分别解决什么问题。

(7)用过什么工具进行数据迁移,导入导出。

(8)数仓大体干了什么,自己做了哪些指标,

(9)SQL题:用Hive解析Json字符串 或者  七天连续登陆用户

3)二面:

基本情况:去了是帮美团点评做和银行对接的数据仓库,数据量大,面试是完全和美团点评面试,签合同是和科瑞国际签约。

(听内部消息说尚大好像已经进去了两个,目前HR说还缺两个数据开发岗位)

21.2 学长2

美团金融

第一轮:

输入: 表T(user_id, timestamp), 用户在某一页面的所有曝光历史记录

输出: 2020年1月份1~31日,指标: 首次曝光用户数量,次1-7日留存用户数量

#

select t1.min_visit_date

     ,sum(if(t1.min_visit_date == t2.visit_date, 1, 0)) as base_count

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 1, 1, 0)) as liucun_day01

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 2, 1, 0)) as liucun_day02

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 3, 1, 0)) as liucun_day03

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 4, 1, 0)) as liucun_day04

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 5, 1, 0)) as liucun_day05

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 6, 1, 0)) as liucun_day06

     ,sum(if(datediff(t2.visit_date, t1.min_visit_date) = 7, 1, 0)) as liucun_day07

from (

   select user_id

         ,min(to_date(timestamp)) as min_visit_date

   from visit_info

   group by user_id

   having min_visit_date >= '2020-01-01' and min_visit_date <= '2020-01-31'

) t1

left join (

   select user_id

         ,to_date(timestamp) as visit_date

   from visit_info

   where to_date(timestamp) >= '2020-01-01'

   group by user_id, to_date(timestamp) -- 去重

) t2 on t1.user_id = t2.user_id

group by t1.min_visit_date;

第二轮

求:每个uid上一笔成功订单id,没有的记录为null,

状态值:1-成功 0-失败

id time       uid is_suc 结果列[最终展示结果]

1  2020-01-01 1    1     Null

2  2020-01-02 1    0     1

3  2020-01-03 1    0     1

4  2020-01-04 1    1     1

5  2020-01-05 1    0     4

6  2020-01-06 2    0     Null

7  2020-01-07 2    1     Null

8  2020-01-08 2    0     7

#

我开始理解错题目了。我以为求上一个正确的状态值

实际上计算的是上一个状态是正确的id,还要面试给过了

drop table visit_info;

create table visit_info

  as

select 1 as id, '2020-01-01' as visit_date, '1' as user_id, 1 as is_suc

union all

select 2 as id, '2020-01-02' as visit_date, '1' as user_id, 0 as is_suc

union all

select 3 as id, '2020-01-03' as visit_date, '1' as user_id, 0 as is_suc

union all

select 4 as id, '2020-01-04' as visit_date, '1' as user_id, 1 as is_suc

union all

select 5 as id, '2020-01-05' as visit_date, '1' as user_id, 0 as is_suc

union all

select 6 as id, '2020-01-06' as visit_date, '2' as user_id, 0 as is_suc

union all

select 7 as id, '2020-01-07' as visit_date, '2' as user_id, 1 as is_suc

union all

select 8 as id, '2020-01-08' as visit_date, '2' as user_id, 0 as is_suc

;

select t1.id

     ,t1.visit_date

     ,t1.user_id

     ,t1.is_suc

     ,max(if(datediff(t1.visit_date, t2.visit_date) <= 0, Null, t2.id)) as result_flag

from visit_info t1

left join (

     select id

           ,visit_date

           ,user_id

     from visit_info

     where is_suc = 1

) t2 on t1.user_id = t2.user_id

group by t1.id ,t1.visit_date,t1.user_id,t1.is_suc

;

t1.id t1.visit_date t1.user_id t1.is_suc result_flag

1 2020-01-01 1 1 NULL

2 2020-01-02 1 0 1

3 2020-01-03 1 0 1

4 2020-01-04 1 1 1

5 2020-01-05 1 0 4

6 2020-01-06 2 0 NULL

7 2020-01-07 2 1 NULL

8 2020-01-08 2 0 7

第三轮:

确定是 技术面

面试官有点奇怪,开头就问为啥没考研,大四实习了吗?成绩很差吗?

什么专业?为什么学习java? 为什么又做大数据开发?为什么在某个公司要离职?

基本没问什么项目, 我尽量回答,最后问了HR 说沟通下,后续有其他部门的offer,就不管这个部门了, 应该是三面挂了

21.3 学长3

美团bp数据中心

一轮说自己写个top10

写完了说有啥问题吗?

我说挺好的?

row_number 如果order by 多个字段一样有问题吗?

然后就解释了一波 row_number, rank, dense_rank的区别

第2轮没有写sql, 问的都是项目内容

21.4 学长4

美团财务集市的面试题

第一轮

面试官不怎么问sql, 就说咱们随便来一个吧

dptid, user_id, age

求每个部门年龄的top10

第二轮,第三轮

也没写sql,面试官问的原理大部分都是基础的东西,觉得我准备的很充足,表达的欲望就是想要你,虽然方向不偏向数仓

第四轮交叉面

应该是个大佬,据说交叉面是定级的

面试偏向于管理方向,比如给你一个团队,你怎么带?怎么安排,我坦诚没带过,然后就回复 假如让你带,你构思下?

最后面试过了,因为选择了其他部门,这个就没进行HR面

21.5 学长5

美团外卖

第一轮:

create table if not exists tmpA(

wm_order_id bigint comment '订单id',

wm_poi_id bigint comment '商家id',

userid string comment '用户id',

month string comment '月份,格式:yyyyMM',

actual_amt double comment '实付金额',

dt string comment '日期,格式:yyyyMMdd'

)

row format delimited fields terminated by ",";

1.统计每月支付额排名前3的用户清单

2.展示每个用户每月的最大实付金额和截止到该月的总实付金额

-- 1.统计每月支付额排名前3的用户清单

select month

     ,useid

     ,actual_amt

     ,rn

from (

   select month

         ,useid

         ,actual_amt

         ,row_number()over(partition by month order by actual_amt desc) as rn

   from (

       select month

             ,useid

             ,sum(actual_amt) as actual_amt  

       from tmpA

       group by month, userid

   ) t

) t

where rn <= 3

;

-- 2. 展示每个用户每月的最大实付金额和截止到该月的总实付金额

select useid

     ,month

     ,max(month_max_actual_amt) as month_max_actual_amt

     ,max(total_actual_amt) as total_actual_amt

from (

select month

      ,useid

      ,max(actual_amt)over(partition by month, useid) as  month_max_actual_amt

      ,sum(actual_amt)over(partition by useid order by month) as total_actual_amt

from tmpA

) t

group by month, useid

;

第二轮:

有个table 有两个字段 dt(yyyyMMdd), jieqi(内容为汉字 比如 立春, 小寒 记录每年农历的24节气)

表中记录了5年的数据

求: 增加一个season列,比如 春,夏,秋,冬,可以根据 立春 和 立夏 之间划分 春 诸如此类的划分;

展示行效果如下

dt        jieqi  season

2020xxxx  立春    春

select t1.dt

  ,t1.jieqi

  ,t2.season

from info t1

left join (

select dt

      ,jieqi

      ,season

      ,lead(dt, 1, '99991231') over(order by dt) as next_dt

from (

 select dt

       ,jieqi

       ,case when jieqi = '立春' then '春'

             when jieqi = '立夏' then '夏'

             when jieqi = '立秋' then '秋'

             else '冬' end as season  

 from info

 where jieqi in ('立春','立夏','立秋','立冬')

) t

) t2

where t1.dt >= t2.dt and t1.dt < t2.next_dt

二面偏向java,问了一些java的

比如list, set, map的理解

并发容器CopyWriteArrayList的原理,又延伸了下 mysql数据的读写锁是怎么回事?写的时候,如何读的?

sql注入怎么理解的?

能否写个3个线程交替打印的代码?

回答的很不好,还是给过了

第三轮:

tord表: 字段为 ord_id, ord_time, usr_id, dt

增量存储的交易记录表,记录每个月新增用户首单在未来30天的复购交易额;

#

展示字段: 统计月, 复购交易金额

比如 求 7月份的时候,7月1号新增的,求 2~31号的,2号新增的求 3~8-1号的

insert into table order_amt_info partition (dt)

select substr(t1.min_info.col1,1,7) as report_month

     ,sum(t2.amt) as amt

     ,substr(t1.min_info.col1,1,7) as dt

from (

   select usr_id

         ,min(struct(min_ord_time, ord_id)) as min_info

   from tord

   group by usr_id

   having min_ord_time >= '2020-07-01' and min_ord_time <= '2020-07-31'

) t1

left join (

   select ord_id

         ,to_date(ord_time) as ord_time

         ,usr_id

         ,amt

   from tord

   where dt >= '2020-07-01'

) t2 on t1.usr_id = t2.usr_id and t1.min_info.col2 = t2.ord_id

where datediff(t2.ord_time, t1.min_ord_time) >= 1

and datediff(t2.ord_time, t1.min_ord_time) <= 30

group by substr(t1.min_ord_time,1,7)

第三题的衍生发问

延伸题目

从上述的表中构建一个 增量表 记录

fusr: user_id, f_ord_time, dt  - 增量的分区,每个分区存当日首购用户

延伸题目

fusr: user_id, f_ord_time,f_ord_amt,  dt  - 增量的分区,每个分区存当日首购用户以及首单的金额

初始化全量的 收购用户

insert into table order_amt_info partition (dt)

select user_id

     ,to_date(min_info.col1) as f_ord_time

     ,min_info.col2 as f_ord_amt

     ,to_date(min_info.col1) as dt

from (

   select user_id

         ,min(struct(ord_time, amt)) as min_info

   from tord

   where dt < '2020-07-01'

   group by user_id

) t

构建后续的每日增量数据

insert into table order_amt_info partition (dt='${}')

select t1.user_id

     ,to_date(t1.min_info.col1) as f_ord_time

     ,t1.min_info.col2 as f_ord_amt

from (

   select user_id

         ,min(struct(ord_time, amt)) as min_info

   from tord

   where dt = '${}'

   group by user_id

) t1

left join (

   select user_id

   from order_amt_info

   where dt <  '${}'

) t2 on t1.user_id = t2.user_id

where t2.user_id is null

;

继续延伸

用户im: 用户发起会话数,用户参与会话数,用户发起消息数,用户参与消息数,发起会话用户数,参与会话用户数

log:misid,sentid,reid,mis_time,dt

dim:uid,idtype(poi,usr,dlvr)

模型设计 - 出一张公共表:

按照自己的思路展开就好,不是sql题目

数仓岗

1)项目部分

(1)为什么用双层Flume

(2)日志标准化在哪里做最好

(3)Hive海量数据(一个分区)怎么导入MySQL

(4)遇到过那些坑,自己认为做过有价值的地方

(5)MapReduce

(6)怎样可以让运维自己做查询

)技术部分

(1)对Java的理解

(2)Java线程的理解

(3)对池的了解(线程池、数据库连接池),Java线程池是怎么实现的,Java线程池都有哪些组件,具体作用是什么

(4)对Spring框架的理解

(5)WebServer端收集的日志放在哪里

2)项目部分

(1)介绍下项目,项目中用的那些技术点

3)手写部分

(1)手绘Hadoop架构

.1.1 一面

1)自我介绍

2)技术部分

(1)让我介绍下Sqoop,说他没见过

(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上

(3)让我介绍下项目中的指标,都是怎么实现的

4)手写算法部分

(1)让我写链表的反转

(2)接下来让我手写单例

5)是否有问题问面试官

(1)最后说有没有问题要问他

问1:我就问他们大数据是做什么,一天的数据量有多大

问2:我就又问他们怎么定义的垃圾数据

7.1.2 二面

1)自我介绍

2)技术部分

(1)介绍MapReduce的运行过程

3)项目部分

(1)项目框架介绍

(2)问我写的公司做什么的

(3)他又问具体都卖什么

(4)问我上家公司做大数据的有多少人

(5)问我公司在哪

(6)问我一天的数据量有多大

(7)又问我一天的访问量有多少

4)手写算法部分

(1)手写二分查找

(2)让我用Shell写一个脚本,对文本中无序的一列数字排序

5)是否有问题问面试官

(1)最后说他没问题了,我有什么要问他的没

7.1.3 三面

1)自我介绍

(1)自我介绍

(2)问我哪一年毕业的,公司有多少人

(3)问我为什么要做这个,什么专业的

2)技术部分

(1)问我Kafka用的那个版本

(2)问我ZooKeeper的常用命令

(3)问我myisam和innodb的区别

(4)他又问我一句如果单线程访问,myisam和innodb那个性能好一点

(5)问我Redis常用的命令

(6)问我为什么要用Redis

(7)问我了解HBase不

(8)然后问我机械硬盘和SSD硬盘的差别了解不

(9)然后他又问我机械硬盘每秒读取次数多少知道不

3)项目部分

(1)问我一天的数据量有多大

(2)问我Azkaban一天调度多少个任务

(3)然后他问我这么一个问题,他说你做这些项目需要埋点日志的对吧,然后说如果后台的人不愿意给你加这个埋点,嫌麻烦,你怎么办

4)场景题,手写SQL

场景1:是这样的,一张表三个字段,分别是学生名字、科目名字、科目得分,让我用sql把总分最高的找出来

5)平时学习习惯

6)是否有问题问面试官

(1)最后他说他差不多了,我有什么要问他的没

7.1.4 四面

1)自我介绍

2)技术部分

(1)介绍MapReduce的运行流程

(2)让我说下myisam和innodb的区别

(3)然后看着简历说你知道HDFS的存储过程,我说需不需要我说一下

3)项目部分

让我介绍下我写的三个项目都是干啥的

4)平时学习习惯

(1)问我喜不喜欢技术

(2)问我喜欢跟人打交道还是喜欢跟机器打交道

7.1.5 五面HR

1)自我介绍

2)人事高频问题

(1)有没有别的offer,面试几家了

(2)问我什么时候辞职的

(3)问我为什么现在才找工作

(4)上家薪资多少

7.2 学长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)字符串反转

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

7.4 学长4

1)项目介绍

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

2)技术部分

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

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

(3)使用MR写出Join过程

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

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

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

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

6.1 学长1

1)笔试部分(基础题)

(1)请用图形的方式表示出Java运行时数据区

(2)以上哪些数据区在空间不足的情况下会抛出异常?

(3)Java工程出现内存泄露如何排查?请写出你知道的排查工具以及方法

(4)以下代码的输出结果是什么?

String str1=new StringBuilder("58").append("ganji").toString();

System.out.println(str1.intern == str1);

String str2=new StringBuilder("ja").append("va").toString();

System.out.println(str2.intern == str2);

(5)在Scala中有一种函数其参数可以为参数,这样的函数称为高阶函数,请参照scala中常见map函数实现一个名为mymap的高阶函数,mymap接收两个参数值,第一个函数(x:Int)=>3*x,第二个为Int型数据。在mymap函数体内将第一个参数作用于第二个参数。

2)笔试部分(算法)

(1)给定两个只含有0和1字符的字符串,实现二进制加法。如:

String str1 = "101"

String str2 = "11"

实现binarySum(String s1,String s2),使得输入以上字符时返回字符串"1000"。

(2)给定一个整型数组array(没有重复元素),再给出一个目标值target,数组array中有两个元素的加和等于target,要求返回这两个元素的下标。如array = {1,2,4,6,3} target = 8,则返回[1,3]。

3)笔试部分(大数据相关)

(1)现有一张Hive表,表里面有两个字段uuid和ts,分隔符为\001分别表示用户唯一标识和用户来访的时间戳。

有如下需求

(a)要求计算每个用户的最后一次来访时间,用MapReduce实现(写完整的代码)

(b)你所写的代码有没有优化的空间?如果有,请写出优化方法。

(2)用Spark实现WordCount。

(3)Spark-Streaming+Kafka实现实时计算这种方案中通过什么方式保证数据的准确性?

(4)分别列举Hadoop和Spark中的文件缓存方式。

(5)HDFS的一致性是指什么?有几种语义?

(6)基于Yarn的推测执行是怎么实现的?描述其大致算法。

QUESTION NO:1

publicclass Test1{
 public static void changeStr(String str){
  str="welcome"; 
 }
 public static void main(String[] args)(
  String str="1234"; 
  changeStr(str); 
  System. out. println(str);
 }
}

输出结果:

QUESTION NO:2

public class Test2{
 static boolean foo(char c){
  System out print(c);
 return true;
}
public static void main(String[] argv){
 int i=0;
 for(foo('A');foo('B') &&(i< 2);foo('C')){
  i++;
 foo('D');

输出结果:

6.2 学长2

1、一面(学长面)

1)技术部分

(1)HashMap如何遍历。

(2)SparkStreaming窗口操作的3个时段设定分别是什么,问到倍数这块

2)项目部分

(1)讲了一下推荐项目怎么回事

(2)因为是招数仓这块的,所以三轮数仓都问了

3)算法部分

(1)快排或冒泡排序,我讲的是快排

4)情景部分

(1)设定了一个情景,手写SQL,比较简单吧

2、二面

1)技术部分

(1)flatMap和map的区别

(2)A表joinB表,用MR是如何处理的

(3)Yarn的资源调度

(4)Hbase有put方法,那如何批量put数据进hbase里,用什么方法

(5)NameNode的HA,一台挂掉之后,另一台会丢失数据吗,挂掉之前有一部分日志为更新

(6)问了Kafka的消费速度

(7)Kafka分区

(8)问了HDFS的块你们设置的是多大

(9)问了Spark版本,说一直是这个版本吗

(10)Sparksql什么时候不能读到Hive的数据

2)项目部分

(1)你们数仓之间的数据是怎么调度的

3)情景部分

(1)设置了一个情景,让写SQL

3、三面

项目组负责人

(1)要招数仓和算法的,所以主要问了数仓。

(2)数仓的DM为何不由数据组来设计封装,你觉得是数据组封装有什么不妥吗

(3)HBase里面你们都存了具体哪些业务数据,他说这些数据我觉得存到redis或者mysql中也行呀,为什么要非要用HBase,然后问了我你认为多少的数据量适合用HBase

(4)结合你这个HBase里存储的数据,说一下你们的rowkey怎么设计的

6.3 学长3

1)技术部分

(1)对Hadoop各组件之间通信RPC协议了解

(2)Hadoop的读数据流程

(3)传输过程中DataNode挂掉怎么办

(4)HBase源码

(5)HBase构建二级索引如何保证索引与数据的一致

(6)JVM架构,堆内存,GC算法,问平时会不会调GC算法

(7)-Xms和-Xmx设置一个和设置两个而且两个设置的都是一样有什么区别吗

(8)查看当前Java内存各个代的内存比例

(9)查看线程堆栈的命令

(10)查看Java进程里边对象的大小,

(11)堆内存泄露怎么看,除了Dump出来用MAT还有什么简单的方法

(12)Java进程用户反馈请求服务很慢,但是代码不是你开发的你怎么排查问题,

多线程,实现线程同步的方法

2)算法部分

(1)问对数据结构和算法了解吗,堆栈和链表什么的

6.4 学长4

一面:

sparkstreaming 用了哪些算子

flatmap与map的区别

dwd 的是啥 dws s是啥, dwt t是什么

你们获取kafka Offset的API是什么

HBase创建表时,rowkey的设计

ODS层干了什么

yarn工作机制说一下

kylin怎么用的

superset怎么用的

说一下JVM重用的参数

你们合并文件用的哪个参数 merge.mapred.files

Hive使用时遇到过什么困难

sparkstream如果进行精确一次性消费

5.1 学长1

1)笔试部分

(1)列举几种数据倾斜的情况,并解释为什么会倾斜,以及如何解决?

(2)解释一下SQL运行步骤,是否有优化空间,如果有,如何优化:

SELECT a.id, b.name FROM a LEFT OUTER JOIN b ON a.id = b.id WHERE a.dt = ‘2016-01-01’ AND b.dt = ‘2016-01-01’;

(3)已知表a是一张内部表,如何将它转换成外部表?请写出相应的Hive语句

(4)用select做查询是,用哪个函数给值喂null的数据设置默认值?

(5)Hive中,建的表为压缩表,但是输入文件为非压缩格式,会产生怎样的现象或者结果?

(6)订单详情表ord_det(order_id订单号,sku_id商品编号,sale_qtty销售数量,dt日期分区)任务计算2016年1月1日商品销量的Top100,并按销量降级排序

(7)某日志的格式如下:

pin|-|request_tm|-url|-|sku_id|-|amount

分隔符为‘|-|’,

数据样例为:

张三|-|q2013-11-23 11:59:30|-|www.jd.com|-|100023|-|110.15

假设本地数据文件为sample.txt,先将其导入到hive的test库的表t_sample中,并计算每个用户的总消费金额,写出详细过程包括表结构

(8)test.log日志中内容如下左列所示,使用awk输出右列4行数据

10-3-jd-dv

2-4-jd-dv  10-4-jd-dv

5-7-pv-click 5-7-pv-click

36-24-pv-uv

37-24-pv-uv 37-24-pv-uv

24-3-uv-mq 24-3-uv-mq

(9)Storm的分组策略有哪些?

5.2 学长2

1)笔试部分

(1)HiveSQL语句中select from where group by having order by的执行顺序

(2)Hive中MapJoin的原理和实际应用

(3)写出你常用的HDFS命令

(4)使用Linux命令查询file1里面空行的所在行号

(5)有文件chengji.txt内容如下:

张三 40

李四 50

王五 60

请使用Linux命令计算第二列的和并输出

(6)在Linux环境下有文件/home/dim_city.txt如何加载dim_city外部表中,HDFS路径/user/dim/dim_city

(7)请列出正常工作的hadoop集群中hadoop都分别需要启动哪些进程,他们的作用分别是什么,尽可能写的全面些

(8)数据仓库的整体架构是什么,其中最重要的是哪个环节

5.3 学长3

1)笔试部分(京东金融)

(1)数据按照业务含义可以分为时点数和时期数,在一般情况下,下列哪些数据属于时点数?

A.昨天的订单量  B.昨天的库存量

C.昨天的点击量  D.昨天的访问次数

(2)About hadoop map/reduce,The right answer is?

A.reduce的数量必须大于零

B.reduce总是在所有map完成之后再执行

C.combiner过程实际也是reduce 过程

D.Mapper的数量由输入的文件个数决定

(3)Hive中的元数据不包括?

A.表的名字 B.表的外键

C.表的列  D.分区及其属性

(4)Hive中如何限制查询条数?

A、TOP B、limit  C、rownum D、only

(5)关于hivesql以下说法正确的是:

A.cluster by不会对字段进行排序

B order by只保证每个reducer的输出有序,不保证全局有序

C sortby是全局有序

D distribute by制定规则字段,将相同组数据分发到同一reducer

(6)下面SQL的运行结果是什么?

Select a.id,b.name from (select id from table_id) a left semi join (select id, name from table_nm) b on a.id=b.id

table_id
id
1
2

table_id
id name
1 wzb

A 、(a,ok) B、(2,null) C、(1,ok & & 2,null) D、以上结果均不对

(7)你处理过的最大数据量是多少?处理时是否遇到问题,采取了哪些优化的方案?

(8)列举Hive几种数据倾斜的场景以及解决方案?

5.4 学长4

1)技术部分

(1)你们Spark哪个版本

(2)SparkStreaming如何和Kafka对接

(3)Kafka消费过的消息如何再消费

(4)Redis版本多少

(5)CDH版本多少

(6)集群怎么部署的

(7)数据倾斜怎么处理

(8)MR和Spark的Shuffle的区别

(9)MR环形数组怎么设置最大能设置多大

(10)Redis分布式锁怎么实现

(11)Rdd和dateset的区别

(12)说说Scala伴生对象

(13)解释Scala的模式匹配

(14)谈谈Scala隐士转换

(15)Yarn的组件说说他们的功能

(16)Spark一个Excutor给多大内存

(17)Spark几种部署模式还有他们的区别

(18)你运行程序是client还是cluster 为什么

(19)说出git的几个常用命名

(20)git如何切换分支

(21)对Hive的理解做过哪些优化

4)算法部分

(1)用Idea写快速排序

5)手写代码部分

(1)手写Spark WordCount

6)项目部分

(1)整个业务数据的流向

7)场景部分

(1)现有两张大表所有字段都得保留不能再过滤了join操作就发生OOM怎么解决

(2)Session日志分析如何求出用户访问的Page路径

(3)三表的join求销量,order——id的统计(记得不了)就是三表join求统计吧

5.5 学长5

1)一面

(1)HDFS、MR、Yarn的理解

(2)MR的WordCount简单描述

(3)Kafka快的原因,零拷贝的原理

(4)Redis的数据类型

(5)Kafka的isr队列

(6)Spark的运行模式,WordCount的简单描述

(7)基本上是简历的东西

2)二面

基本上和简历无关,问的算法,我不懂,没办法整理

5.6 学长6

1)京东数科二面

(1)最近一两年内你做过感觉最有趣或者让你记忆深刻的项目,挑一个说一说。我说的是SparkStreaming实时计算(李老师讲的在线教育那个项目,我给稍微改了改成电商项目了)。

(2)有关于Spark、Kafka、MySQL的项目你感觉那个比较熟练一点。我回答我的是对spark比较感兴趣。

(3)做这个项目用的是Spark的哪个版本?

(4)这个版本里用Kafka用的是那种消费方式。

(5)可以简单讲一下direct大概的一个设计套路。

(6)如果说我每隔一百条或者一千条,记录偏移量,如果跑到八百条宕掉了,有可能重复消费,针对receiver优势能不能解决这一点?

(7)如果dsteam方式去拉取Reduce拉取出去,那有多少个线程从Kafka里拖数据?

(8)平时除了用Spark比较多,用Hive也不少,平时会涉及到调参优化方面有哪些?

(9)你能介绍一下Flume的架构或者设计。

(10)用代码实现一个类似于Flink水位线的机制。

(11)有做过依赖调解的工作吗?比如说有没有碰到问题说引用自己一个依赖,但是在别的地方用了一个其他的依赖由于版本不统一,不能兼容该怎么办

(12)最近为什么会想到说换一个工作。(离职原因)

(13)你有什么想问我们的。

4.1 学长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)遇到垃圾日志怎么办(假如说有人恶意制造日志,怎么处理。我说的黑名单机制,那个面试官貌似还挺满意)

4.2 学长2

1)基本信息介绍

(1)百度:视频面试

(2)面试周期:5天

(3)面试次数:6次

(4)面试总时长:3小时

2)百度一面二面(印象中的一些问题):

(1)自定义UDF、UDTF

(2)如何确定计算数据的准确性?

(3)建立数仓的目的

(4)自定义拦截器步骤

(5)SpringMVC

(6)设计网站前后端交互问题

(7)Linux常用命令

3)百度三面(部门负责人):

(1)在没有PM的情况下如何对指标做拆分去分析?

(2)介绍了他们部门的工作内容

4)百度四面hrbp:

(1)介绍工作经历+工作遇到的困难+对所应聘职位的理解+分析指标提出时间和原因+离职原因等问题

5)百度五面业务总裁:

(1)某一天日活下降10%,需要从哪些维度分析,如何分析?不用说技术

6)百度六面Recuriter面:

(1)上家薪资+期望薪资+职级+对数据分析和指标分析的理解+职业规划等问题。

4.3 学长3

1)基本信息介绍

(1)11月17号度小满金融(原百度金融,A轮公司)

(2)面试地点:西北旺百度科技园旁

(3)面试时长:2个半小时

(4)面试次数:3次

2)一面:

(1)一面中规中距,有手写SQL环节,还有SparkStreaming常用算子解决实际问题。大概1个多小时。

(2)手写SQL考的是:

 三个字段: area、year、temperature,统计每个地区的温度最高的对应的年份。

 写的用rank函数,一个子查询,险过。

3)二面:

因为面的是架构师,所以二面问的是几个组件的版本号和几个大数据组件的安装过程和配置文件细节,还有HA的几个进程的作用,比较难。大概20分钟

4)三面:

问了自定义UDAF,UDTF,和数仓开放性问题,和三面主管说了毕业时间,并说了未签订劳务合同,他说怎么没签合同呢,太后悔了,最后走的时候说hr可能过不去,给我争取一下。大概30分钟。

强烈推荐度小满金融公司,环境Top5,面试官很厉害。

4.4 学长4

1)笔试正在上传…重新上传取消转存失败重新上传取消

(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)

2)二面:

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内,所有用户末次活跃日期和倒数第二次的差值

4.5 学长5

一面:

   讲项目

   kafka精确一次性

   数据量

   log日志类型,存的什么数据

   spark streaming怎么做的实时

   hbase rowkey你是怎么设计的

   namenode 重启流程

   hdfs读流程

   flume拦截器怎么写的

   flume结构

   两道算法:

   窗口求中位数, 说流式处理底层求热点问题常用到

   

   一个树形结构,一个节点可以监听它的父节点和子节点,问最小监听数量

3.1 学长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)

3.2 学长2

阿里三面

第一题,亿级的交易订单量,每笔都有金额,快速找出top1000,要求不是简单的排序然后求出top1000,代码要有健壮性;提示注意是top1000不是top10。Map和Reduce分别做Treemap

第二题:有两个约1000万行记录的4到5G文件,JVM只有32M,在内存不溢出的情况下,找出相似的条数并打印出来。布隆过滤器

第三题,有一个双十一的天猫场景,我要做实时和离线两种分析方向,从数据建模、计算性能、元数据管理、数据质量上讲一讲基本架构设计成什么样子。

阿里四面

第一题,岛上有100个囚犯,他们都是蓝眼睛,但是他们都只能看到别人眼睛的颜色,并不能知道自己的眼睛颜色,而且他们之间不能去谈论眼睛颜色的话题,规定每天晚上都可以有一个人去找守卫说出自己的眼睛颜色,如果错了被杀死,如果对了被释放。但是大家在没有十足的把握前都不敢去找守卫,有一天,一个医生对他们说你们之中至少有一个蓝眼睛,然后N天,这些人都获救了,为什么?这句话对他们有什么影响?

第二题,有100层楼梯,从其中一层摔下鸡蛋的时候鸡蛋会碎,并且次层之上的都会碎,次层之下的都不会碎,如果你有一个鸡蛋、两个鸡蛋、三个鸡蛋,你会怎么去找出这个楼层,最多要试多少次

3.3 学长3(杭州)

1)自我介绍

2)技术部分

(1)对未来的职业规划是怎样的?

(2)数仓的流程?你所做的事情?

(3)能讲一下做DW层的案例吗?如何建模的?

(4)讲一下交易的例子吧?

(5)做交易的话模型怎么设计的?

(6)物流的信息,链路的跟踪在不在你的交易表里边?

(7)退款的数据放在哪个表里?

(8)数仓的模型 是怎么建模的?

(9)记录交易的,整体的链路,到底设计了几张表?

(10)拉链表的原理?

(11)拉链表整合的方式?

(12)你在之前的公司遇到的痛点有哪些?(我讲的数据倾斜)

(13)数据倾斜怎么解决的啊?

(14)Join的等倾斜,Join的key,关联键,如果倾斜的话,能直接打散,如果Map端解决不了呢?Mapjoin解决不了怎么办?两个都是大表怎么解决数据倾斜?

(15)MR原理?

(16)Map端做的最重要的事情是什么?

(17)有没有其他你特别擅长的?

(18)怎么提前你SQL写的特别好呢?

(19)建索引要注意哪些事情?

(20)你有啥要问我的吗?

2.1 学长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 区别

注:可参考数据工厂的“帮助中心》集群hive》hive使用优化》hive使用注意事项”

2.2 学长2

1)笔试题

用HiveSQL实现

(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字段的值

2.3 学长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呢,代码又怎么写

2.4 学长4

1)技术部分

(1)你们数仓用什么建模方法,说出常见的建模方法?

(2)维度建模有什么好处? 为什么选择这个?比如最后业务需求要增加一个维度,我们需要做什么工作?

(3)怎么判断一个需求能不能实现,你们的判断标准是什么?需求变更要做什么

(4)增加一个维度后发现查询的速度变得非常慢,是什么原因导致的?

(5)你们ADS层的数据量每天的数据量有多大?ADS层再MySQL中的表是怎么创建的?有什么注意事项?索引怎么创建的?  

(6)你知道Spark的宽窄依赖吗? 有没有把宽依赖转化为窄依赖的例子?

(7)Spark参数调优做了些什么 ?

2)算法部分

(1)一个list [1,5,5,7,9] 去重,并计算时间空间复杂度

(2)单链表的反转

.1 学长1

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)数仓任务报错和监控(调度系统捕捉错误,电话短信告之值班人员)

1.2 学长2

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)

1.3 学长3

(1)MySQL引擎是什么,常用的是哪个innodb,知道原理吗

(2)MySQL优化,怎么建索引?选择合适的字段属性。对于某些文本字段可以设成ENUM类型(MySQL中被当做数值型数据来处理)。使用连接join代替子查询 。使用索引:innodb支持哈希索引、b+树索引、全文索引。

BTree和B+Tree

(3)手写sql...

user_id     login_date

1              20200325

查询出用户连续三天登录的用户

表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的优化,项目中怎么优化的

(15)然后就问了用MR怎么实现join,手写代码

(16)数据倾斜怎么处理的,

(17)碰到过oom情况吗,什么原因导致的,怎么处理的

(18)Hbase有那些组件,

(19)什么场景会用到Hbase

(20)Hbase的读写流程,大概说一下

(21)Spark,任务提交的流程,

(22)Spark的两种核心Shuffle,未优化的和优化的

(23)常用的数据结构都有哪些,

怎么实现一个list,

怎么实现一个map

map一般什么场景使用

用过树这种结构吗,什么场景用到的

(24)算法

字符串中第一个出现三次且仅出现三次

反转一个链表

两个链表第一次交叉的节点,

(25)用Cannal监控mysql之后,Scala怎么通过SparkStreaming去消费的

(26)你们这个项目spark计算完之后存HBase怎么设计的

(27)HBase你们在项目中怎么设计rowkey的

1.4 学长4

一面

(1)算法:给2个有序数组,合并成一个有序数组

延伸:给n个有序数组,合并成一个有序数组

(2)sql:

班级 学号 科目 分数

求某个班级总分最高的前五名

其他:

(3)精准一次性消费

(4)数据倾斜

二面

(1)主要问项目中是否丢数据,怎么做的数据治理,监控,问了一个算法,一个SQL

(2)算法是有序数组查找目标值,我的做法是二分查找

(3)sql是给用户的观看视频的时长,统计观看时间在0-1分钟的用户数,1-10分钟的用户数

三面:

(1)选型为什么是spark而不是Flink,有哪些优缺点(我项目上写的spark)

(2)HBASE为什么快(列式存储,内存,lsm树)

(3)消费不到kafka数据怎么办

(4)kafka怎么监控,重分区

(5)g1回收器和cms区别

(6)jvm调整过没有

1.5 头条猎头

1.数据仓库的基础理论:建模,分层
2.flink容错机制
3.spark调优,数据倾斜的处理方式
4.sql编程考察
5.算法:聚类kmeans
6.二叉树算法
7.Java 线程问题,包括线程安全,锁,和线程池,问得很细。
8.Hbasse和mysql区别和存储原理
9.kafka的底层原理,kafka如何保证全局消费数据有序
10.redis底层原理,如何预估数据量
11.yarn底层原理,执行流程和,yarn底层使用的算法
12.算法基础建模有哪些,如何进行数据挖掘
13.链表反转排序 leetcode原题
14.sql 连续日期活跃用户
15.hive udf udaf udtf spark
16.任务提交过程
17.回文函数
18.hive 数据倾斜
19.redis 跳表
20.spring ioc
21.spring 需要单例设置的参数
22.线程池几个配置参数含义
23.mysql 事务 a b 客户端提交事务处理
24.storm 实时
25.java 并发包
26.hive 如何转mr
27.线程 可重入理解
28.算法题 一个LRU 一个深度优先搜索
29.flink 的watermark shardGroup的概念
30.kafka如何保证消息的有序行高可用
31.数据倾斜如何处理
32.flink watermark 和barries 和checkpoint
33.flink和spark的区别
34.jvm常见的垃圾回收算法
35.heap怎么分带的
36.kafka调优

都是根据简历上的内容面的,写了什么就问什么,写的东西一定要懂的深,问得比较细,基本上全问了,面了一个多小时

1.flume怎么实现断点续传的,文件名发生变化会重复消费,它底层是怎么判断的,怎么解决
2.flume配置了几台节点,都是干什么用的,三个组件都怎么选择的,拦截器怎么实现的,KafkaCHannel有没有什么坏处
3.给出几个字段:用户id,订单等信息,让你求复购率、用户留存等指标(结合上数仓建模)
面试官给了最佳答案:意思就是只写sql不够好,要把指标细分成你要在哪一层建那些表,怎么规划,就是要结合维度建模理论来讲,这块问的比较细
4.spark的几种shuffle介绍一下,
5.那些spark的transform、action算子会导致shuffle,怎么解决的
6.结合上hive sql,讲一下MapReduce的原理,结合上项目上的问题进行调优,讲的要细
其他的都是比较常规的,这个岗位是做腾讯地图相关的大数据开发,重点就在离线的数仓建模上问的很细,然后实时很少,用的是spark sql

你可能感兴趣的:(大数据,java,开发语言)