随着秋招提前批、正式批逐步开始,7月中旬开始投递到9月初,我拿到了第一份大厂的正式意向Offer。到国庆节前为止,陆续收到了5,6个Offer意向。趁着国庆放假期间,也做了一些自我总结,在这里分享给大家。
1.准备简历
简历是你与面试官建立第一印象的关键工具,应保证内容的饱满和编写风格清晰简洁。简历内容主要凸显两个点,一是与岗位的匹配度,二是能力的展示。
就大数据开发方向而言,需要掌握的技能主要有以下几个点:
①计算机基础及Java编程语言及SQL语言:重点掌握计算机网络、数据结构、面向对象编程思想、Java基础、JVM、多线程、SQL基础。
②大数据组件:Hadoop框架(HDFS、Mapreduce、Yarn),离线方向主要是Hive、Spark,实时方向主要是Spark Streaming、Flink,另外就是一些常用的组件比如Sqoop、Flume、Kafka等。
③数据仓库:数仓分层思想、维度建模、数据建模等。
④优化:数仓优化、SQL优化等。
其次,简历中需要包括自己的一些经历以凸显自身能力。根据自身情况从学科竞赛、实习经历、项目经历、科研成果角度展现如独立思考能力、团队协作能力、沟通能力等。
2.岗位投递
秋招一般包括提前批和正式批,提前批的招聘信息通常会在暑假期间发布,部分公司提前批会免笔试,而正式批一般在九月份发布,及时关注互联网公司招聘信息投递简历。简历投递后会一般会经历测评和笔试阶段,测评需保证前后的一致,笔试题型一般包括计算机基础、SQL基础、算法题等。
这里的投递渠道我参考的涤生资料库,如下:
3.面试环节
面试环节主要包括以下几个过程:
①自我介绍:针对简历经历进行自我介绍,保证表达清楚、语速恰当。
②面试官提问:针对技能点进行以及项目经历提问。
1)技能点提问(占比20%):背八股即可。可参考涤生的八股总结,最常问的包括Hadoop架构相关、Mapreduce读写过程、Hive执行过程、Java基础等。
2)项目经历提问(占比80%):结合项目+八股回答。最常问的包括数仓分层理论、维度建模、事实表维度表区别、Hive SQL优化等。项目经历这块是面试官最关心的点,一般也会根据项目去深挖,所以在面试前需要对项目进行完整的复盘,数仓相关的八股能结合案例回答,比如数仓在项目中怎么分层的。梳理每一个优化SQL涉及场景,包括数据来源、带来的问题、优化原理、最终效果。
③手撕算法或SQL:算法题一般中等难度,难度小于笔试,常见的重点题需要掌握,比如快排、区间合并等。SQL题一般会给具体的场景,常见的考题包括连续登录问题、分组统计、关联等。
可参考:秋天的第一道SQL题,数开面试必考系列一(社招校招均适用)
值得推荐,这资料绝了,针对性极强还不乏增强扩展!
面试技巧
①问八股时,适当扩充回答内容。
②问数仓时,结合业务流程+数仓理论回答。
③问优化时,怎么发现的、优化前存在问题、优化的原理、优化后的效果。
4.经典面试题回答示例
1.数据倾斜
①产生本质:数据分布不均匀
②现象:任务卡在某个进度不动;已完成Reduce与未完成Reduce的执行时间相差很大。
③定位:对业务涉及的数据量以及可能发生倾斜的算子提前感知;根据执行计划的stage定位到对应的算子;
④解决方案:结合业务场景考虑过滤或者打散。针对空key或与业务无关的key导致的倾斜可以直接过滤;针对group by或join产生的数据倾斜,可以将热点key打散然后提高并行度缓解数据倾斜。
2.指标产出时效性的保证
①数据模型角度:针对指标产出整个链路涉及的事实表、维度表梳理,结合数据量对业务涉及sql逻辑优化。
②运维角度:提升优先级,保证指标计算不因资源不足影响时效性。
③监控角度:配置相应规则,一旦指标产出延迟及时告警排查。
④值班角度:安排人员对核心指标链路执行情况实时监控。
3.数仓分层优点?
①数据角度:提升整体数据质量,复杂数据模型被拆解到多层完成,保证复用性,减少重复开发。
②开发人员角度:帮助业务线人员清晰认知业务流程,明确口径定义,减少沟通成本。
③企业角度:从全局视角审视业务,方便后续决策。
4.Hive中内外表区别?
①内部表创建不需要用external修饰,外部表则需要
②内部表存储位置由hive配置指定,而外部表存储位置一般由用户指定,如果未指定,也会存储在hive配置路径中。
③内部表由hive自身管理,删除的时候会删除元数据和数据文件,而外部表删除只会删除元数据,数据文件不会被删除。
④对于中间结果表一般定义为内部表,而对于日志文件一般使用外部表。
5.Mapreduce工作原理
1)输入与Map:
1.客户端根据切片算法、切分大小对文件进行切分。
2.根据切片个数确定Map任务个数,每个Map以键值对形式读入数据,根据业务逻辑进行处理映射成新的键值对。
2)Map端Shuffle:
3.每个Map会开启一个100M的环形缓冲区,数据输出到环形缓冲区,写满80%进行溢写到磁盘同时在溢写前进行快速排序。
4.Combine(可选):在不影响最终计算结果情况下,可以考虑使用Combine操作使输出更加紧凑。
5.归并:将每个Map的多次溢写文件归并生成一个已分区并且已排序的大文件,采用归并排序保证有序。
3)Reduce端Shuffle:
6.Copy:Reduce启动copy线程,从MapTask中复制输出,只要Map任务完成,即可开始复制其输出。
7.归并:Copy过来的数据在磁盘上利用归并排序进行merge保证有序。
4)Reduce与输出
8.按照MapReduce语义,会针对已根据键排好序的key构造Value迭代器,然后执行Reduce端业务逻辑输出写入到文件系统。
我个人的面试示例就展示这么多了,希望大家结合自己的情况参考,预祝大家在金秋10月都拿到理想的Offer!
最后附上几张日常各阶段大佬的日常辅导截图:
标签:24,数仓,上岸,Map,Reduce,SQL,秋招,简历,优化 From: https://blog.51cto.com/u_15346267/8079921