我现在在一个211学校读本科,学的是数学,特别想去大厂做数据分析,但现在对于这一块基本是零基础,未来应该回去读个研究生,到求职的时候应该还有几年的时间,在这之前,想要顺利拿到大厂的算法岗,我需要做哪些准备呢?有没有过来人可以帮忙总结一下呢?

答主本科学的是金融专业,但深知单纯的金融知识很难让自己拥有核心竞争力,比较好的方式是结合数学或者计算机让自己的复合背景在众多金融应届生中脱颖而出。考研的时候选择的是统计方向,为的是以后机器学习在金融领域流行后可以做金融数据挖掘方面相关的工作。虽然最终还是做了研发工程师,不过这是后话。
在读研之前,我学的都是传统的数学课程,比如常微分,数分,实变函数,运筹学等,也没有合适的实习和项目经历,分析软件也只会用stata和eviews等经济学常用的分析软件。虽然专业和数据岗对口,但不出意外的话顶多也就走到二面。 果不其然,申请腾讯暑期实习的时候只走到二面(关键问题:决策树算法有哪几种,各有什么异同,用自己的话阐述一下),当时没好好上课答不出来,现在看来这个问题真的傻得可以。但是面试官特别nice,可以询问这个岗位对校招生最主要的需求和正式工作时的主要工作内容。
暑期实习折戟后,我根据各大公司的数据岗JD和在面试中对腾讯数据岗具体工作内容的询问进行针对性的知识梳理和技能学习,通过大概半年的努力顺利通过腾讯秋招数据岗四面拿到offer,并且也顺利拿到TMD三家的offer,面试其他公司的数据岗offer也比较轻松。

数据岗的定位

除了小公司招聘的数据分析师(更准确地说应该是数据专员,主要利用excel做数据的筛选,排序,汇总和可视化,最后用ppt进行展示)外,互联网公司的数据岗主要可以分为如下几类:
数据分析师:熟练使用数据分析软件(R/Python,SPSS等传统分析软件很少用了);调用机器学习方法(主流的分类、回归、降维和聚类方法需要能够调包、数据预处理、调参和模型评估);数据库操作(SQL取数、ETL开发、sql调优和hadoop相关技术)
数据研发:大概需要日志存取、数据仓库工作、了解多种数据库和具备较强的编程功底和软件开发能力。(不是很了解,待修正)
数据挖掘:精通机器学习算法原理;熟悉业务知识;较强的编程实现能力;熟练使用linus和shell;特征工程和熟悉机器学习第三方库等
很多公司本身对数据岗的定位不会这么细,所以最好还是尽可能拓宽自己的能力和知识边界,从而在面试中脱颖而出

需要掌握的技能

  1. EXCEL和PPT
这部分属于最基础的技能,使用于迅速处理数据量较小和输出可视化图片的情形,包括但不限于以下技能:
EXCEL函数尤其是VLOOKUP:大部分的函数要熟悉,面试时候最常提起的就是VLOOKUP类的函数(其实就是实现了SQL一个维度匹配的功能),我花了大概三天看完《Excel高效办公:数据处理与分析》,然后找了一份大摩华鑫基金的的Excel练手,全做出来问题就不大了。
VBA:Excel很多重复操作需要通过VBA实现,如果学过其他编程语言的话VBA很简单,有一些指令不清楚的话可以通过“录制宏”的功能实现,网上有很多入门宏的文章,可以找一找学一下:
PPT展示能力:主要就是精简信息的能力,当然简约化和商务化的审美也很重要,不过面试不会问到PPT,可以不急着准备。
  1. 统计学储备
这部分对于我比较简单,都是本科和研究生学的知识,梳理一下知识即可,主要是和应用练习紧密的、容易被面试问到的:
主要的离散分布和连续分布
  • 假设检验:参数检验;非参数检验(正态性检验和分布拟合检验);如何自己构建一个假设检验去解决业务上碰到的问题
  • 参数估计方法:极大似然法;矩估计等
  • 线性代数:特征值与特征向量;矩阵运算的意义
  1. 取数工具:SQL
互联网公司用hive比较多,但基础的SQL查询语句都是通用的,SQL从入门到上手需要一天即可:
零基础应对互联网公司SQL笔试面试
理解SQL的基本语法后,可以刷一下题,这50道题可以让你应付大部分公司的SQL面试了:
互联网校招SQL笔试经典50题及答案解析
剩下的一些进阶内容,一般应届生面试基本不会问,比如Hadoop-Shell命令、Hive调优和MapReduce原理等。 可能有些人会问考计算机数据库二级和三级对面试有帮助吗,我都考了,结论是没有帮助。
  1. 数据分析语言:R/Python
因为这两款都是免费的,所以企业用的会多一点,另外R能做的Python也都能做,甚至更加强大,因此推荐使用Python。
我研究生的时候使用的是R,它对数据框的操作极其人性化,但是在数据预处理和机器学习方面这两款语言的相似度很高,所以从R向Python过渡的朋友也完全不用担心,大概三天就能把Python的基础语法学完,然后直接上手做个小项目把。主要内容包括:
  • 数据预处理:这部分比较杂,主要取决于你数据的质量,包括但不限于二元变换、特征组合、缺失值处理和离异值处理等等
  • 编写函数:在数据分析中经常需要根据自身需求编写复杂函数,这方面R和Python操作都特别方便
  • 可视化:R的话主要是ggplot包,python主要是matplotlib和pyecharts包,熟能生巧
  • 机器学习算法实现:无非就是数据预处理、调包、调参和模型评估,用过几次就知道了
  • 爬虫:公司一般少用爬虫,但面试还挺喜欢问的,建议先学学如何构建自己的代理IP池,然后做一些简单的爬取(比如我用爬虫一周给CSDN主页刷了100万访问,也可以和我同学一样爬取知乎“胸大是什么体验”下面的图片),我比较少用爬虫,所以也不是特别了解,可以找一些喜欢爬虫的小伙伴咨询一下
  1. 机器学习算法原理
这部分花费的时间是最多的,但也是最重要的。其他的技能顶多算“技”,无非就是熟能生巧。机器学习原理算是“术”,对你看待问题的方式和数据分析的能力都有潜移默化的影响,而校招无非就是想找一些这样厚积薄发的“潜力股”。
  • 机器学习必知必会:比方说损失函数、凸优化、正则化等等,
  • 机器算法原理:分两种,一个是能用简单的语言向你的面试官阐述清楚算法最核心的原理(如果说不出来的话,大概是没完全掌握),另一个是能完成算法的推导(例如Xgboost原理推导)。
必看的书无非就是《统计学习方法》、《西瓜书》、《数据挖掘导论》等,静下心来慢慢看就好
  1. 项目经历/实习经历
实践出真知,而且这两块都没有的话简历这关也不好过。如果你想进大厂的话,应该是大厂实习>较好的项目经历>小厂实习>>一般的项目经历。
这块因人而异,推荐一些渠道去丰富简历:
  • 参加一些统计建模比赛
  • kaggle/天池等线上的数据挖掘项目
  • 大厂的暑期实习(哪怕没拿到实习,有个面经也可以知道自己的不足之处)
  1. 其他的加分项
有一些东西不是必须的,但是写在简历还是相当吸睛(就是面试官基本会问:看你简历上写了这个,你掌握程度如何?),对你顺利拿到offer帮助还是挺大的。这里主要列举我会的或者我了解到的一些技能,仅供参考:
  • coding能力:实习或者正式工作中,是不可能有人会手把手教你一门编程语言的,但是数据挖掘确实需要一定的coding能力,所以掌握一门编程语言还是比较吃香的。我个人推荐c++、golang(性能优先)、python和java(效率优先)。比如说我在hive中编写udf就需要用到java。
  • 计算机知识:如果你是个计算机专业的话就挺吃香的,比如数据结构,计算机基础和网络协议等。
  • Linus和shell:工作中大部分的任务都需要用到Linus系统,shell脚本的编写能力也是很重要的。而两个工具虽然不难,但是特别杂,所以很多数据岗的JD上都对此有所要求。
  • 外语能力:有时候需要查外网,看文献,所以强英语读写能力还是挺重要的。

写在最后

以上写的这些只是工具,大厂对应届生的第一要求其实是学习能力强、抗压能力强和聪明。可能有一些东西写得有纰漏,有时间再完善一下,祝你能找到合适的offer

扫一扫,添加应统联盟官方微信 【小统】,在朋友圈遇见更多精彩内容~

继续阅读
阅读原文