同事们,打球来讲的话激烈但水平一般,下次从投篮方面碾压,并且不要选择毒瘤队友
1.深入了解数仓开发
技术要求:
1、编程语言
由于很多大数据组件都是由Java编写,所以Java是必须要学会的,而且要较为深入。这里的深入并不是只工程能力,而是要把Java SE学明白,这里就有很多八股需要背。sql也需要非常熟练,不过这部分基本都是使用,八股不多。Scala和Python我觉得是锦上添花,可学可不学。
八股例:
Java的GC有哪些,有什么特点?
Java多线程和线程池?
hashmap的底层实现?
列表扩容机制?
sql执行流程?
2、算法能力
这个没得说,最简单的办法就是刷lc或牛客,至少要刷完面试高频的题,很多面试都有手撕算法,在会写的同时也要有一定的理解,不熟练的话面试紧张很容易写不出来。在数仓方向与后端不同,也需要对sql熟练,面试基本上都会手撕sql,个人理解sql比算法要简单不少,但也需要一定的积累。偶尔也会遇到一点非算法的手撕,比如写个饿汉单例,或写个分词计数(MapReduce或Spark)。
3、大数据组件
hadoop系列要背一些面经的,hdfs、MapReduce、yarn、hive、zookeeper等,这里有不少面经需要背,也是最能体现你熟悉大数据领域的地方。其次离线数仓要学好spark,实时数仓要学spark stream和flink。其他的像MySQL(很重要)、redis、Kafka(mq)、clickhouse等等也是体现你能力的地方,体现你的专业。
八股例:
mr中shuffle的具体流程?三次排序?分别是什么排序?
spark的宽窄依赖?如何划分stage?比mr优势在哪?
hdfs的容灾策略?读写流程?fsimage和editlog?
MySQL版本链?为什么使用B+树?
数据倾斜?怎么解决?怎么设计表
redis雪崩?
4、数仓模型
这是一个非常重要的部分,以至于我单独拿出来。因为这是考察面试者到底懂不懂数仓最直接的问题。至少学好阿里的one data数仓模型,至少要懂每层是在干什么,为什么要这么设计。
八股例:
讲一下数仓模型?为什么这么分层?
维度是什么?维度建模是什么?
数仓建模的流程步骤?
给你一个场景,你会怎么设计?
星型、雪花、星座模型?
5、相关项目
需要做至少一个数仓的项目,b站上很多,找一个至少看明白,写在简历上(面试官问一些刁钻问题的时候能清晰回答不露馅)。项目是必须要有的,即使你的项目在面试官看来像个玩具,但如果连相关项目都没有,面试官也没有办法(许多公司面试时都明确要求要问项目)。
6、计算机基础
很多同学注重语言和大数据组件的学习,忘记了计网、操作系统等这些才是学生最该熟练掌握的,这是体现个人知识扎实程度的部分,非常关键。这里也会有一些八股需要背,对于科班同学来说,学好课上的知识就基本OK,但对非科班的同学来说就稍微麻烦一些,需要花些时间。
八股例:
TCP与udp?三招四挥?http与https?
七层模型?
页?线程与进程?
7、面试技巧
注意不要问不该问的,一定不要过于谦卑,要自信但不要自傲。如果你能跟面试官聊一些他都感兴趣的东西,那就基本上成功了!
总结
如果上面的一些八股你都差不多能答上来,那很有机会找个不错的实习,我找实习的时候也就差不多这样(不过今年不知道会不会更卷,不敢打包票)
如果是实习,可以根据情况少学一些,但也要至少对Java,mr,hdfs等有较为深刻的认识,算法sql也要过关。