(干货满满!文末有资料领取)#大数据# #数据分析# #Python# #开源# #编程# #人工智能#
Hi,我是小匿。
近期我会邀请一些Dathoner来分享下转行与找工作的真实面试经验,帮助大家一起提高知识,拿到满意的offer!
摘要
我的专业是动力工程及工程热物理,19年6月毕业,校招进了一个本专业相关的行业里工作了20个月。20年9月份的时候,决定转行数据分析,开始了前期的资料收集和学习。期间,报了群主的课程,在下班和周末的时候开始学习。但是效率很低,一方面是因为有一些本职工作需要处理,出差频繁;另一方面是自己本身的惰性,有时候工作结束下班后,只想躺倒不动。还有一些心理的因素,彻底放弃之前所学和经历,沉没成本确实很大。21年3月初,我裸辞了,全心全意准备转行。目前收到了几个offer,我从中选择了一家,将在21年5月末入职。
技能
入门技能学习方面,我的计划是跟着课程的主线,辅助书籍/各类官网/百度/谷歌/知乎/CSDN,建立相对完善的基础。现在简单梳理一下我所获得的内容,主要有几大部分,分别是:Excel、MySQL、Python、统计学、数据思维、数据挖掘、项目实践。
Excel
Excel也没什么好说的,我在面试过程中,没有遇到问Excel相关内容的。对于我来说,过往的经历基本很少涉及到Excel,所以学得相对比较认真,重点掌握VLOOKUP和数据透视表。除了课程之外,也看了一些其它的视频资料,网易云课堂免费课程王佩丰Excel实战课1800分钟可以作为补充,这个课程太长了,针对自己的弱项,挑着看就好。
MySQL
数据分析岗位面试前一般都会有笔试,MySQL是笔试的一个重要考察对象。知识点主要是增删查改,核心是“查”。面试过程中,除笔试外,问到较多的问题如下:
SQL执行顺序
SQL优化方法
窗口函数相关
需要注意的是,SQL学完,如果不经常练习,很容易忘记。建议学完之后,每天坚持练习牛客和LeetCode的习题,保持知识点的熟悉程度。网上有很多优秀的总结材料,也可以参考。最好是自己边做题,边总结题型。
Python
Python在面试的时候很少有直接的考察,只是简单的聊一下。但作为数据分析师的核心技能,必须要不断地精进。需要熟悉pandas, matplotlib,pyecharts,numpy,scipy等常见的库。我自己的话,以课程为主线,边看课程,边总结,边实践操作。pandas学了很久,其它的库之前都有接触,学的相对较快。
统计学
统计学主要内容包括:描述统计,概率,抽样与区间估计,假设检验,卡方检验,方差分析,A/B Test等内容。
统计学的内容在面试中很少单独考察,主要是结合具体的情境和案例来考察。我遇到的比较典型的问题如下:
简述贝叶斯定理?该定理有什么作用?再深入一点,Naive Bayes相关问题?
为什么要进行区间估计/假设检验?
第一类错误/第二类错误的概念及两者之间的关系
A/B test。A/B的目的?流程?每个环节需要注意的点?样本量如何确定?
有一组数值型数据,怎样提取有效信息?这里可以从统计描述的角度出发,进行分析
数据思维
这是软性的技能,但也是面试官特别注意的点。由于新转行,没从事过相关的工作,这块很是欠缺,就是将课程内容死记硬背,有时间会翻一下《精益数据分析》这本书。我在这方面比较弱,只是学完了课程中相关的内容,但基本上课程中出现的,我都理解并记住了。后期还需要不断在实际工作中积攒经验,学习和掌握更多的技能。这一块的面试主要是结合实际业务场景展开的,后面会提到。
数据挖掘
这一块内容,多,相对比较难。但也没难到看不懂,需要循序渐进。这块的学习还是以课程为主线,看不懂不明白的地方,百度/谷歌/知乎/CSDN。对我来说,我比较喜欢钻研数学的东西,感觉原理的推导相对比较简单,难的是构造有效特征,以及后面的模型调参。没有思路、没有经验,进行的比较困难。
项目实践
对我来说,上述技能的学习没什么大的问题。简历上写什么?这是我最大的难题,我不可能面试的时候用嘴说,我会什么,会什么。如果没有相关的项目,基本上,简历筛选是不可能过关的。
这方面,我完全是按照课程,跟着做了课程的两个项目。我做了两遍,第一遍,是跟着课程,厘清思路和每个步骤,跟着课程敲代码,总结一些通用性的技能。第二遍,自己新建一个文件夹,从头到尾自己实现了一遍,当然,其中充满了困难,用一步一坎来说也不为过。不知道怎样进行下去了,就对照课程资料回忆巩固一下,再返回来自己实现。
做完之后,自己参考给出的模板,针对这两个项目做了数据分析报告,算法报告和自动化邮件日报系统的报告。这几个文件,每次面试的时候都会有针对性地展示给面试官,将话题向项目报告这个方向上引导。
如果是偏业务分析的岗位,着重谈论自动化邮件日报的项目;如果是偏技术的数据挖掘的岗位,着重谈论算法项目相关内容。
面试
我3月初辞职(辞职之前已经学了一部分),准备的时间比较长,做好了简历和几份报告。但是,做完项目后,前面学的也忘得差不多了,特别是SQL和统计学。不得已又重新复习一遍。好在前期做了详尽的笔记和练习,很快就捡起来了。下面是第二次回顾的时候,整理的一些资料。
随后于5月10日(周一)上午开始投简历,主要在BOSS直聘上。目前陆续面试了8家公司。大厂基本上不鸟我,大多是100~500人的企业,也面过100人之内的小公司。以我仅有的面试经历来说,可分为三种,第一种是打着数据分析的名义招销售,第二种偏向业务,第三种偏向技术。
第一种-钓鱼
这种公司要好好甄别,既打击信心,又浪费时间,在投简历的时候要有针对性和目的性,不要海投,没什么作用。
我遇到了一家小公司,笔试全是概率计算,然后HR就问了:会sql吗?会python吗?会哪种BI?了解NLP算法吗(完全不知道NLP是什么)?会开车吗?能喝酒吗?我递给她的项目介绍也只是简单翻了下,没问一句相关的。随后讲了下公司在行业内多么牛逼,HR面就结束了。随后董事长来了,跟我说:你没有相关经验,非科班出身,概率和统计也没有基础。这时我心里就mmp了,你一个相关问题都没问,拿什么判断我没一点基础呢???很气,也很失落。
随后跟我讲了一大堆他是怎么拉业务、搞项目的,接着说:小伙子,我看你很机灵,我们数据分析师的要求很高,但我这边很缺心思活泛的助理,你好好干,年薪50万不是问题。在前期,你需要好好学习,了解业务,大概能到手4k左右,但你要是能力强,能拉来业务,哪怕一年有一单就够了,提成是非常可观的。WTF???后面又逼逼叨叨了几句就结束了。
回想这次面试,一点价值都没有,既没在面试过程中得到正反馈,浪费一上午的时间,又打击了信心。转行很困难,遇到这样的面试,心情差到了极点。当天做总结的时候,我应该在他说我不匹配数据分析这个岗位时,立马走人,何必听他哔哔,浪费时间。当时也是面薄,想着要有起码的礼节。现在想想,太天真。
希望看到这儿的同学,引以为戒。在投简历的时候进行一定的筛选,远离这样的面试。
第二种-偏业务
JD是数据分析师,要求sql,Excel和BI能力,对Python没有特别强调。这类公司一般都是互联网公司,有自己的数据中台,数据分析师岗位的职责主要是面向特定的业务场景,进行数据分析,以及一些报表的开发。
其中一家的面试过程:
笔试-包括sql,统计,概率,极少数据挖掘
请做一下自我介绍
A/B Test的目的?原理?执行方法?结果分析?
数据指标体系的理解和实践?
谈一下你对埋点的认识?
会哪种bi?了解quick bi吗?
DAU突降,怎么查找分析?回答思路即可
挑一个你简历的项目,讲一讲思路和实现过程?
为什么从上家单位离职?
你的职业规划?
回顾面试的过程,不难发现这类型的工作有很强的针对性,旨在找到有经验,在同一领域做过相同工作的人员。相对来说,整体工作难度不是很大,想要有经验,能极快上手的人员,对新转行人员不太友好。
虽然这家最后也拿到了offer,但是薪资低,给出的理由是没有经验,需要人带,需要时间熟悉业务。
对于这一类型的数据分析工作,个人感觉是更偏重于经验和实际的业务。若要应聘这类岗位,完全可以在数据思维学完之后,就开始投递和面试,没有必要将课程的数据挖掘部分全部学完之后再进行。另外,这类岗位对BI工具也有一定要求,需要自己学习一下。
第三种-偏技术
我遇到的这类公司只有一家,也是我即将入职的这家公司。现将面试过程整理如下:
笔试
有两种题型,选择和简答。试题集中在机器学习这块儿,没有sql。
除了一些基础的问题外,我印象比较深的有:
选择题:Naive Bayes的假设?没接触过这个模型,凭感觉蒙了一个,并在选择题旁空白处写了目前知道的贝叶斯公式和作用。回来后查了下,蒙错了。Naive Bayes的假设是:各特征间相互独立,这也是Naive的来源。下来后把Naive Bayes的原理和实践学习总结了下。
简答题1:SVM的核函数有哪些?又是不知道。在空白处写了:暂时还没了解到SVM,我熟悉的算法有LR,DT,RF,Prophet,Kmeans(++)等。
简答题2:简述数据挖掘的一般流程及注意的点。唯一比较有把握的简答题。
简答题3:$y != x-(x-y)$在什么情况下成立?一脸懵,猜了一个,猜错了。百度得到的答案不全对,答案应该是:x和y是两个不相等的非空集合,并且,y中有不在x中的元素。测试如下,集合是支持减法操作的,相当于去掉交集。同时也测试了列表、元组和字典,这三种类型均不支持减号运算符。
一面-研发中心经理
请先做一下自我介绍
python熟练吗?介绍一下python的基本数据类型?答:列表,元组,字典,集合。其实还有:数字/字符串/布尔
你对数据分析和数据挖掘的看法?
我看你简历中写,会一些基本的机器学习模型。你挑一个自己比较熟悉的,讲一下原理。我选了随机森林RF,按照自己的理解和记忆,依次阐述了:集成学习的分类、监督学习的分类、简单随机抽样(OOB)、决策树从ID3->C4.5->Cart的演变、ID3和C4.5的criterion及缺陷、分类模型的评估指标(混淆矩阵、四个率值、ROC/AUC/f1值)。追问:Cart有什么缺陷?一脸懵,没答上来。
讲一下你了解的聚类算法。回答了Kmeans的原理以及Kmeans++的改进。追问:为什么会有Kmeans++的改进?两者的优点和缺点各是什么?又懵一脸。。。
讲一下你算法比赛项目的思路和实现过程。
现在有一个时间序列,共有30天的数据,每个样本间隔15min。你怎么预测未来7天的数据?听到这道题,已经有点慌了。答:目前我所知道的时间序列预测模型有:ARIMA和Facebook开源的Prophet。讲了arima的实现流程和prophet的一些特点。讲的有点啰嗦,面试官也没打断。讲完这两个模型,接着讲实操:先进行数据探索,看目标变量的分布,均值,百分位数等,看有没有异常值和缺失值,随后进行数据预处理,如果有缺失值,先处理缺失值。随后使用prophet进行预测。其它追问:怎么处理缺失值?prophet算法的输入和输出有哪些?你觉得它的优缺点有哪些?针对时间这个唯一特征,可以新构造哪些特征?这些特征的构造怎样用python实现?这部分问的很细,每个特征构造的思路以及python实现的代码细节。这应该是我本次面试中,表现最差的一部分,对于新构造特征,思路很狭窄,python实现也没有讲出来,代码能力欠缺。
了解哪些可视化库?答:比较了解matplotlib和pyechart。还有吗?暂时没有了。你自动化项目里是用pyechart做的图吧?为什么使用它?答:是的,Echarts是百度开源的工具,基本包含了所有的图表类型,被广泛使用。pyecharts库可以说是连接python和Echarts的桥梁,其语法相对简单,图表比较美观,不用太多的调整即可出图。
你的职业规划?
为什么从上家单位离职?
可以接受出差吗?
你有什么要了解的吗?我问了具体的项目和业务,以及公司数据部门未来的规划。
一面感受:公司氛围较好。面试官真诚,没有咄咄逼人和居高临下,对我答不上来的问题,会进行引导,指出了我的问题,也肯定了我的部分能力。给我的评价:基础还行,代码能力和发散迁移能力有待提高,有较大潜力。结束之前,直接告诉我一面通过了,但你还需要不断地学习实践,发散思维。不管你最后来不来公司,希望你能有所收获。
这次面试,是我选择这家公司最主要的原因。数据部门是核心的部门,有一个能力强的领导,有具体的业务和团队。
二面-研发总监
请做一下自我介绍
你这两个项目是什么时候做的?数据来源?课程中已经讲过了这个问题,我说是大厂朋友给我的。没再追问
算法比赛的结果怎样?答:这是2018年的比赛,我用它来学习、实践数据挖掘的流程,我做的逻辑回归和随机森林模型,在使用模型调参器GridSearchCV的时候,总是报内存错误,还没有做完。这里实事求是了,不敢瞎说,对面大佬气场太强了。
谈一下你对数据行业的认识?
离职的原因?
职业规划?
你有什么想了解的吗?
随后聊了下就结束了,总监面没有问很细节的问题。给我讲了下公司目前的业务和真实的数据产品,一些宏观的东西。后面就是常规的HR面试,谈薪。
总结
我能得到这个offer,自我分析原因为:①相对完备的数据挖掘基础,项目中有时间序列模型,比较契合公司的需求;②学历、专业与应聘岗位所在行业有关联;③自己的职业规划和公司想要的类型相符;④积极主动的态度;⑤自己和公司及面试官的价值观、工作态度比较吻合,传说中的气场相合。
至此,踏出了转行第一步,实现了自己原来的计划,完成了从0到1的转变。经过多场面试,也对数据分析行业有了进一步认识,知道了自己还缺哪些东西。不论是理论还是经验,自己的专业能力积累远远不够,自我评价是堪堪达到了入门的水平,后续还需要付出更多的时间去学习和实践。
转行很困难,大厂都是由于没有经验而过不了简历筛选。夯实基础,多投简历,多面试,练习sql,还是有机会的。
建议不要裸辞,压力太大了。我面试到那家钓鱼公司后,心态快崩了。好在,自己转行的心很坚决,对自己目前的能力储备有比较清楚的认知和自信。当初之所以放弃之前的工作,想转到数据分析行业,是因为确实比较喜欢做这种归类、分析的工作,另外也很看好数据行业的前景。
选择一个正确的方向,日拱一卒,不懈的努力。谨以此文,记录这个特殊的过渡阶段,自勉。
结尾
恭喜这位同学!每一位Dathoner来报喜时我真得非常的开心,一是替这位同学开心,二是让我感受到教学的意义。感谢每位Dathoner,数据之路长着呢,后续,我们一起加油!
另外,准备了不少数据资料,需要的同学可以点击获取哈~
适合小白学习的数据分析免费资料(持续更新)