数仓方向实习或求职需要准备什么?(小白向)
前情提要:本文主要面向想在数仓方向求职的牛油,仅是我的个人理解和想法,欢迎提出建议和修改意见
近期有周围同学和个别牛友有问我:“数据仓库岗位需要准备什么才能找到实习或工作”,我在牛客上没有找到面向小白的比较清晰的解答,所以试着回忆一下我的去年春招(实习)和今年秋招我做的准备,并试着做一点总结,看能不能解决大家的部分疑惑。
首先,实习和秋招都面过多个互联网大厂,发现实习和正式的难度差距不是很大的。不要抱着“我随便学学就能找到实习”或“实习应该不需要会许多技术栈吧,我大概了解一下大数据组件就好”的想法。我大概觉得实习是秋招的70%难度(感觉日常实习跟暑期实习难度差不太多),都是需要手撕算法和背八股的,实习需要至少提前2个月准备比较稳妥,而秋招/春招则需要更多的时间,相关方向实习是求职最好的敲门砖。
实习和求职所需准备
(每一项我会列举几个面试常问的问题,可以对比一下自己的情况)
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也要过关。
求职则可以根据想投的职位jd,深入学习一下,我认为知识深度大于广度,与其去把所有OLAP都涉猎一点,不如深入钻研一下某组件,让面试官眼前一亮。
#数据人的面试交流地##投递实习岗位前的准备##我的实习求职记录##大数据##大数据开发#