总的来说,这些岗位的日常工作也就是用python 来写scripts。代码在质量上离 production code 还有一定的距离。面试的时候,哪怕是engineer 来考,一般也不会 考的太难。只要逻辑清晰,代码能跑也就让过了。
Level3: Machine Learning Engineer
MLE本身就是engineer,只是侧重点在machine learning 而已。所以,没什么可商量的,coding肯定会考,leetcode肯定得刷,而且是全方位地刷。于此同时,也要准备 system design,只是这里的system 是recommender system 一类的 AIsystem。
Data Analyst 也考 coding?
Data Scientist 的 coding 要掌握到什么程度?
最近一些同学发现,不少公司在analytic data scientist 甚至data analyst
的岗位面试中居然考coding 了。大家不免很紧张,问:准备data analyst 的面试,是不是也要去刷leetcode。我想趁回答这个问题的机会讲讲coding 在data science 领域几个不同层次的应用。
Level1: DA/Analytic DS
对于分析类的岗位,一般来说是不需要什么coding 的。日常工作用的都是用 SQL处理
各种数据,还有Tableau 之类的软件来做data visualization。极少能用的上coding。但是,为什么还会考呢。据我了解,一个主要原因是现在python coding 在数据科学领域应用越来越普遍,大家总感觉 atsome point 会需要用到。所以,hiringmanager 会希望candidate 最好是能有一点coding 的能力,在将来需要用到的时候,至少不会发
怵。
在这些组里,工作主要还是做数据分析。所以,他们所说的coding 指的是能够用
python 来弥补 SQL和Tableau 这些工具一些功能上的不足。考题侧重的不是算法,更
多的是一些python的基本应用。比如用python 来做一些简单的数据处理,或者调用
pandas 之类的软件包做一些数据分析。偶尔也会考一些非常简单的算法题。这些题在
leetcode 的easy 题中也是属于简单的。当然,考点也仍不在于算法,而是在于解决问题的能力。面试官最希望看见的是你之前并没有见过这个题,但是经过一番思考得到一个合理的解决方案,并且把solution 用代码写出来。
面对这种面试,并不需要去刷leetcode,但是只看一些python 入门之类的教学视频也
是不够的。因为coding 需要练习,有一个熟能生巧的过程。针对这个问题,我们把为
machine learning 课程准备的几十道python coding 练习题整理出来,专门给学员在
准备面试的时候练习,效果还不错。之后,我们会把这些题做成公开资源,给大家免费使用。
Level2: General Data Scientist
一般的Data Scientist 是需要经常用python 来处理分析数据和建模的。这些岗位不仅需要能够建立customized functions 来处理各种问题,还需要能够把代码模块化(简
单地说也就是写class)和搭建pipeline。所以,在面试中,在这些岗位是肯定会考
coding 算法题的。candidates在准备的过程中也会需要去刷一些leetcode 的题目。在刷题的时候,我觉得应该把重点放在那些经常用到的一些数据结构上,比如list、
string、array和dictionary。难度以easy 为主,尽量涵盖medium。如果学有余力,也可以看看一些简单的tree 相关的题目。
总的来说,这些岗位的日常工作也就是用python 来写scripts。代码在质量上离
production code 还有一定的距离。面试的时候,哪怕是engineer 来考,一般也不会
考的太难。只要逻辑清晰,代码能跑也就让过了。
Level3: Machine Learning Engineer
MLE本身就是engineer,只是侧重点在machine learning 而已。所以,没什么可商量的,coding肯定会考,leetcode肯定得刷,而且是全方位地刷。于此同时,也要准备
system design,只是这里的system 是recommender system 一类的 AIsystem。
在这些岗位上,是需要写production code 的。代码要求简洁流畅,层次分明。很多时候,面试官从一些很小的细节(比如空格、variable命名方式)就能一眼看得出这个
candidate 的coding 习惯好不好。这也是自己刷leetcode 一个很难解决的问题。因为leetcode 主要是通过test cases 来保证代码的正确性和效率,但是并没有办法
enforce coding style。这也是为什么我们在有leetcode 这些资源的情况下,还是开
了coding 训练项目。一方面就是为了帮助形成好的coding style,另一方面则是帮助
学员快速建立系统的知识体系,避免做一题忘一题的低效重复。
所以,如果发现面试要考coding 的时候不要慌,要理性地针对岗位需求进行准备。虽
然从理论上讲,如果把coding 算法题全部做熟,自然就可以应对所有coding 相关的面试,但实际上coding 练习是一个需要大量时间和精力的积累过程。不可能一蹴而就。
而且,对于数据科学的很多岗位来说,coding只是所需要的技术之一,过度准备coding 会影响别的技术的学习掌握,也不利于有效地找工作。