hyj 发表于 2020-8-31 15:58:53

金九银十,谈一谈面试经验


问题导读

1.本文作者对面试的观点是什么?
2.对于面试是否职位越多越好?
3.面试题目哪些是会,哪些不会,不会的该如何解决?


前言
虽然面试讲究天时地利人和,也有一些机遇和运气。但是我想说,没有哪一种成功是可以来的不费吹灰之力,没有哪一种光鲜是可以一蹴而就的。你所看到的成果,无不是别人一路努力而来的结果。

如果把每次面试都当做一个机遇的话,你靠什么去抓住这个机遇?有一句话说:做正确的事,等待好事发生。感觉把这句话用在面试上,很合适。

其实就是想表达,把功夫用在平时,在点滴工作中积累,沉淀。一年365天,你所用的技术总共也没有几个知识点。

如果每周都积累几个,你还害怕面试吗?

如果你坚持每天都积累,你依然已经成了一个很厉害很厉害很厉害的人~~

说到这儿,感觉面经讲完了,自己都想笑,哈哈。下面我们详细从以下几个方面说一说。


职业发展方向
找工作前,先搞搞清楚自己要面试的职位,比如大数据方向比较常见的:


[*]大数据套件(平台)开发
[*]数仓开发
[*]机器学习


如果是【大数据套件(平台)开发】,那对底层框架原理,源码是要求的,有好多都需要对这些框架进行二次优化开发。
如果是【数仓开发】,那就是数据治理,仓库建模,花样写sql,如果要想让自己更有优势,让人眼前一亮,最好有优化,源码经验。
如果是【机器学习】,那就是得各种算法原理,公式推导,以及在工作中,这些算法的?实际效果是怎么样的,解决了什么业务问题。

我们要专注其中一个方向,一定不要什么方向都写。我见很多简历,要仔细看很多遍,才能发现,噢,他/她可能在数仓方面更擅长一些。因为简历上即写了做算法,也写了做数仓开发,也写平台开发。

但实际上,大家都那么忙,在过简历的时候,不会仔细推敲很多遍。你的简历一定要突出和你面试职位的匹配性,突出你这么多年来,都在做什么。


SQL BOY/SQL GIRL
依照自己的经验,确认你要面试的职位的等级:高开、资深、专家...

这个也算是我对自己的一个复盘,之前,我自己也没好好想想清楚。不同的职级,对能力的要求不一样,这一块的功夫需要在平时工作中、日常生活中去刻意练习。

如果觉得自己在技术方向没有亮点,那就为自己寻找一个亮点,并不断的刻意深入。

大家普遍认为做数仓开发就是sql boy/sql girl ,但实际,数仓开发还有很多可以深入的地方。



[*]你sql写的很好吗?
[*]你敢不敢挑战现场写,并且以最快的速度写出最优化的sql?
[*]你对常用的一些sql的原理都搞的很清楚吗?能经得住拷问吗?
[*]你对仓库建模方向有哪些好的想法和实践?效果怎么样?


如果这些最基本的,都不能搞定,又怎么能觉得数仓开发的工作很浅显呢?那是你在为懒惰,不求上进找的借口吧。给自己列一些标准,如果不能达到,那就努力去练习。

确认目标,并向着目标靠近。


术业有专攻
一定要有自信。
一定要有自信。
一定要有自信。

做数仓开发,每天做的最多的事情就是写sql,但是我没觉得自己有多low。虽然每天写sql最多,并不代表我们只会这些。
一个小小的sql背后,有多少东西需要去搞搞明白:内存管理,sql编译过程,各种参数的原理,各种算子的原理...
之前有优化过好几个后端开发工程师写的sql,他们每天只关注业务逻辑开发,sql能力不是很强,导致一些页面因为sql效率问题,等10几分钟才能展示。

所以,一定要有自信,术业有专攻。


何必跟钱过不去呢
要面试了,最忌讳什么都有印象,什么都会,但又讲不出来。这样你准备十个问题,还不如精通一个问题。

很多时候你觉得自己紧张的忘了,实际上是你根本没有理解并记住啊,有木有?

准备好面试题,用自己认为最好的答案写好,自己对着墙发出声音讲一讲,一直到能非常顺溜的讲十遍。

然后就告诉自己,我已经准备好,克服紧张感。

好好准备面试,何必跟钱过不去呢?你说对不对哇,老铁~~~


面试题目总结
做为一名数据开发人员,我真的很想说,一定要把功夫用在平时,在点滴工作中积累,沉淀。每天要给自己留那么一点时间来思考,总结。

附上总结的大厂面试题,这些题也都是很常见的:


Spark


[*]join 实现有几种呢,源码有研究过吗?底层是怎么实现的
[*]shuffle形式有几种?都做哪些优化
[*]是通过什么管理shuffle中的内存,磁盘的
[*]讲讲spark内存模型?说说你了解这些,对实际的工作有什么帮助?
[*]rdd有哪些特性?
[*]讲讲spark的高可用和高容错
[*]宽依赖,窄依赖都是什么?有什么不同?除了大家都认为的不同点以外,还有哪些不同?
[*]sql运行过程
[*]full outer join原理
[*]spark为什么比hive快
[*]讲讲sparksql优化
[*]讲讲RDD, DAG, Stage
[*]说说groupByKey, reduceByKey
[*]spark是怎么读取文件的?
[*]有没有遇到过spark读取文件,有一些task空跑的现象?
[*]窗口函数中几个rank函数有啥不同
[*]parquet文件和orc文件有啥不同



MR/Hive


[*]mr shuffle 是什么样子?具体原理是什么?为什么要排序?
[*]mr map,reduce数量都什么相关
[*]hdfs存放副本的算法是什么样的?
[*]讲讲hive sql优化
[*]hive 数据倾斜参数原理及解决方案


SQL


[*]花样写sql,跟实际业务有关的
[*]一般情况下,写出一个,然后,他就会问还有没有更优化的方式?
[*]窗口函数,groupingsets cube这些都会用到。有好多是计算滑动的那种
[*]这个sql 在hive中起几个job,为什么是这么几个job?



建模


[*]方法论,数据仓库怎么构建?你是怎么分主题域的?对现在的业务有什么看法?现在的仓库是个什么情况,各个分层有什么特点?为什么这么分?
[*]讲讲三范式
[*]拉链表,缓慢变化维
[*]给你一个新业务,怎么开展?
[*]数据治理
[*]数据质量,口径一致



基础

[*]谈对jvm的理解
[*]链表删除算法
[*]排序算法
[*]Btree简单讲讲



项目

说说项目中你做的比较有价值的东西
你做的字段血缘,这只是针对有sql语句的,那没有sql的(load的,从其它业务库用sqoop拉过来的,mr里解析的),你有没有想过怎么做字段血缘?
你做过印象最深刻的项目,为什么?你在中承担什么角色,发挥了什么作用?还可以优化吗?



原文链接
https://mp.weixin.qq.com/s/zvTMV5YUB8-JHPAo1PaB7g
页: [1]
查看完整版本: 金九银十,谈一谈面试经验