- java 语言特性,封装继承多态,的个人理解
- 封装:包装把想给别人看的给别人看,不想给的就不给
- 继承:代码复用,类有相同特征可继承
- 多态:相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
- IO 模型
- BIO
- 连接和读写阻塞
- NIO
- 连接操作是异步的,多路复用器注册OP_CONNECT等待后续结果
- 读写操作是异步的
- AIO

3. String 的初始化过程
- 多线程 sleep wait synchronized 个人理解(比较宽泛,把自己能知道的都说)
- sleep 抱着锁 自己会醒
- wait 释放锁 等待别人唤醒
synchronzied 同步关键字 修饰 变量 方法 代码块等,能够保证在同一时刻最多有一个线程施行该段代码
- 自动释放、非中断的
- 根据锁竞争情况 升级锁(无锁、偏向、轻量级、重量级)
- JVM 内存模型,垃圾回收算法
堆 (对象)
虚拟机栈 (为每个java方法创建栈帧 保存局部变量)
方法区(类加载信息)
PC计数器
本地方法栈
标记清除
复制
标记整理
分代回收
- Hdfs 读写流程
- 读
- 写 建立 pipline
- Hdfs HA,中 NN active 节点宕机,DN 宕机,过程中的主备切换,副本复制,涉及到脑裂
- 脑裂(namenode 都处于active)
- ZKFC假死
- 调RPC nn转standby
- ssh上去
- ZKFC假死
- MapReduce 的整个流程,map shuffle reduce
map:
InputFile分割、Record按行读取
map处理完
shuffle:
交给OutputCollect 对key分区《Combiner》写入
环形缓冲区 溢出写
临时文件合并
Reduce
Copy 拉取文件不同Map端的文件
Sort 将分散数据合并排序
Reduce 输出
- 详细的 shuffle 流程,环形缓冲区的,实现细节,kv 存储,赤道的概念,以及中间结果集存储形式
10. Redis 持久化方式,优缺点
AOF 日志
RDB 快照
性能和安全:
RDB不安全,打快照时期宕机GG
AOF中途宕机,也可以通过redis-check-aof工具解决数据一致性
数据量大时 性能RDB>AOF
- Redis 内存淘汰机制
- 键空间
- lru 最近最少使用
- random
- 报错
- 过期键空间
- lru
- random
- ttl
- kafka 从生产到消费的数据模型
- kafka 零拷贝的具体实现,sendfile 指令的整个过程,涉及到 DMA
DMA 是一种无需 CPU 的参与,让外设和系统内存之间进行双向数据传输的硬件机制。
使用 mmap 的目的是将内核中读缓冲区(read buffer)的地址与用户空间的缓冲区(user buffer)进行映射
接利用操作系统的 Page 来实现文件到物理内存的直接映射。完成映射之后你对物理内存的操作会被同步到硬盘上。
使用这种方式可以获取很大的 I/O 提升,省去了用户空间到内核空间复制的开销
- 最后是经典的,大文件,统计频次,这里最后说了一下,可以使用 redis 的 hyperloglog 基数统计
#### 二面(1 小时)
先是询问项目,讲述项目中数据流向,自己负责的部分,遇到的技术难点,以及解决方案。
然后是一道算法题,屏幕共享,在 IDE 编写,
题目:力扣 第 54 题
之后是一道逻辑题
25 匹马,5 个跑道,每次只能跑 5匹,如果用最少的次数选出最快的 3 匹马,讲述过程。
这道题百度有详细答案,不细说了。
#### 三面(1 小时)
项目架构,整个数据流向,服务器配置,从 Nginx 配置,一直到最终 Hbase 存储,全部实现细节。
并且,屏幕共享,分析了入职时凹壳的算法实现过程,并对面试官提出的疑问进行解答。
#### 四面(1 小时)
这位面试官,数据交叉面,不是大数据方向的负责人,所以问的问题,过得倾向 spring
- java 基础一部分知识,相对基础
2. spring IOC AOP
3. spring 中循环依赖的原因,解决方式
4. spring cloud 组件,以及功能
5. alibaba-nacos 优缺点
6. 之后是数据对接协议,这里属于物联网范围
7. tcp 的三次握手,四次挥手
8. 基本的 linux 指令
9. 常用的 java 相关的指令,jstack jmap jps
最后是一道算法题,屏幕共享,IDE 编写
题目:力扣第 92 题,第 102 题
#### 作业帮大数据开发(已 offer)
#### 一面(1 小时,现场)
- 讲讲对 spark 的了解,从 RDD 宽窄依赖,到 shuffle,从 spark wordcount 到整个 spark job on yarn 提交的过程,再到 spark job 提交的源码的过程
2. 细问 shuffle 的实现过程
3. MapReduce 与 spark 的 shuffle 异同
4. spark sql 的执行过程,如果转换为 job 提交
5. spark streaming 消费 kafka 的 offset 提交形式
6. spark streaming 消费 kafka 中,对分区修改,spakr 做出什么变化,删除 topic 重建,有什么变化
7. hive sql 编写,开窗函数,使用 RDD 和 普通 java 去实现
8. Hbase 的读写流程
9. Redis 常用的类型,以及常用 API
10. 布隆过滤器,实现原理
11. redis 事务是否为原子性
12. redis 多路复用到 IO 模型的整个发展,(read-write,poll,epoll)
13. 讲讲项目中自己负责部分,具体的数据流向,遇到的问题,如何解决
14. 口述 力扣第 239 滑动窗口最大值,实现过程
#### 二面(1 小时,现场)
- 讲述项目,数据流向,负责部分
2. Hbase 的整体架构,读写过程
3. 遇到过 Hbase 的 GC 问题吗
4. Hbase 的 region 的 flush 过程
5. Hbase 的 hfile 存储的 KV 形式
6. Hbase 的 Hlog 的存储形式,宕机恢复
7. 这里涉及到一个滴滴的 Hbase 集群的高可用的主备集群的复制,Hlog 的回放
8. spark workcount 读写 hdfs 的整个流程,细化到 InputTextFormat OutputTextFormat 中关键的方法,以及 LineRecordReader
9. 如何修改输入的分区数(这是涉及到一个切片信息 SplitInfo 的实现)
10. mysql 日常 sql 编写注意事项
11. 给定一个 10 层,每个节点有 10 个子节点的目录树,目录结构不变,如何设计 mysql 存储,能够满足,大量查询,给定节点的全部下级节点,给出提示,可以参考 linux 的目录树的存储以及 mysql B+树的存储,能够使用 like 最左匹配。
12. Redis 源码中 string 的实现,zset 实现
作者:大数据峰哥
链接:https://www.zhihu.com/question/442283977/answer/2097733090
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
