1.自我介绍
2.结对编程
面试之前会给一个 GitHub 仓库,需要提前下载,配置环境,运行代码,熟悉代码。
2.1 讲一下代码是干什么的
提前熟悉理解即可。
2.2 知道 TDD 吗
测试驱动开发。建议提前学习 B 站视频。
2.3 重构代码,实现三个需求
按照测试驱动开发的方法:
- 先写测试样例并运行-不通过;
- 修改业务逻辑代码;
- 运行测试代码,不通过返回第二步骤,直到通过测试。
3.介绍简历上的项目
项目中用到了 Elasticsearch、ClickHouse、Spark,后面的问题基于自己的项目。
4.ES 和 CH 有什么区别
都可以用于复杂查询,实时计算返回结果。
Elasticsearch 提供全文检索功能,最擅长的主要是完全搜索场景(where过滤后的记录数较少),在内存富裕运行环境下可以展现出非常出色的并发查询能力。但是在大规模数据的分析场景下(where过滤后的记录数较多),ClickHouse 凭借极致的列存和向量化计算会有更加出色的并发表现,并且查询支持完备度也更好。ClickHouse 的并发处理能力立足于磁盘吞吐,而 Elasticsearch 的并发处理能力立足于内存 Cache,这使得两者的成本区间有很大差异,ClickHouse 更加适合低成本、大数据量的分析场景,它能够充分利用磁盘的带宽能力。数据导入和存储成本上,ClickHouse 更加具有绝对的优势。
项目中 ES 用来点查,CH 查时间区间,实时计算。
5.Spark 的数据倾斜怎么判断
6.怎么区分数据节点故障和数据倾斜
即:分布式计算,某个节点故障,例如千兆带宽变成百兆导致某个节点上的 task 执行缓慢,怎么区分这种情况。
7.Spark 的架构、任务提交的流程
8.Spark 调优用过哪些
9.笛卡尔积是什么,笛卡尔积的 MapReduce 过程是怎么样的,Shuffle 过程是怎么样的
笛卡尔积通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合。
Map-only:笛卡尔积只有 Map 阶段。
图片摘自 MapReduce Design Patterns。公众号回复 806 获取 PDF。
点击此处关注微信公众号。