社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

面经 | OPPO 机器学习算法工程师 6000 字亲述:实力才是你最大的资本

AI职通车 • 6 年前 • 1286 次点击  


记得点击蓝字,关注我们呀~

作者:叉烧,OPPO机器学习算法工程师。


作者分享了自己找工作过程中的经历,分别对数据分析师和算法工程师的能力项以及可以提升的地方给出了可参考的意见,并且对于如何写简历、进行笔试和面试准备,也提出了自己的想法。总而言之,潮水退去后,实力才是决定一个人能走多远的关键。



   写在前面

分别受到学院和学校邀请,我分别在学院和学校进行了两次有关就业经验的报告,虽然我其实我找的工作可能不如很多同学,承蒙各位关照吧。由于时间关系很多内容我没有在现场讲的很细致,所以下面我对两次报告的内容进行了整合,总结复述一下我在报告中提到的内容,供大家参考。

  数据分析师

首先谈到的干货就是数据分析师。说到数据分析师,其实是一个非常吃问题背景、实际问题、领域甚至是经验的职业方向,也是一个在很多领域非常成熟的专业。

1、日常任务

日常的任务就是拿数据、分析数据、展示结果,抛开第一个和第三个,分析数据应该是数据分析师的难点和重点任务。按照部分书籍和文章中谈到的思路,根据问题所在整个管到的阶段,可以分为探索型、诊断型、预测型、决策型4种。
  • 探索型:解决是什么的问题。探索数据中存在的特点,了解目前存在了什么现象,例如一些成果判断、现状分析、竞品分析等,都涉及到探索型数据分析。
  • 诊断型:解决为什么的问题。在探索型中,可能发现了目前存在某些现象,例如某个类型的用户正在流失,此时,诊断型要做的任务就是分析为什么这种类型的用户会流失,找到原因,以便下一步的决策。
  • 预测型:解决会怎样的问题。对未知的未来进行预测,例如公司股票价格的变化等,有了预测型分析的结果,可以对未来有较为理性的预期,为决策提供支持。
  • 决策型:解决怎么做的问题。目前手上可能有是怎么、为什么和会怎样的信息,根据这些信息我们需要采取某些策略,而哪些策略是合适的、可行的、有效的甚至是指的最终执行的,而执行过程中是否有风险和过高的代价等,这时候就需要决策型的分析来讨论这个问题。
虽说分析数据是一个重点过程,但是获取数据和展示结果同样是非常重要的。
俗话说“巧妇难为无米之炊”,数据分析师没有了数据根本没法干活,没有信息何来分析?所以数据的获取是数据分析师工作非常重要的一环,数据的获取渠道也非常讲究,从大型数据仓库到数据库,有时甚至要通过调用数据接口或者是爬虫来获取,获取之后要对数据的质量进行评估,判断数据质量是否足够之支撑后续的分析,这个非常重要,数据有问题,那分析的结果怎么可能可靠,后面的决策怎么可能靠谱。
展示结果同样不是一个简单的任务,展示结果是一个面向读者的任务,读者看你的报告,目标就是为了获取信息,你还给他大片大片的展示数据,要你何用?所以对数据内的关键信息进行抽取、整理、提炼,是非常重要的,必要时候还需要你通过图的方式去展示。另外,一个很重要但是可能有点不合适的角度是,作为结果展示,应该是去展示对你所在立场有利的信息,或者指导读者往你希望的方向去思考的,这就需要你的智慧和技巧了,举个例子吧,盈利100万多不多,如果去年盈利是50万,那今年的就显得多了,但是如果去年是1000万,那你的100万还多吗,其实并不然,所以100万这个数据本身可能没有用提升量或者是提升率强,这就是技巧。

2、必备技能

SQL建议大家都会,这是获取数据的重要技能,绝大部分公司都会使用。
有关数据的操作,excel绝对是最简单的,不要小看他,一方面它的功能其实很强大,另一方面,连excel都不会用,还指望着你回别的吗?这是个基础。另外,spss、sas之类的最好能懂一些,有些excel不会等功能建议你使用它们,毕竟不用敲代码(敲代码是一个很厉害的技能,但是写起来你可能出错,且花时间,你再熟练绝对不会有他点点点快,相信我)。最后另外建议大家会一门语言,建议是python和R,再精简的话,推荐python,会基本操作,numpy和pandas之类的就差不多了。
上面属于日常工具,当然还有一些要会的理论方法,数学统计类的,例如假设检验、参数估计,甚至是回归分析、聚类分析等,需要会从数据中抽取信息,这些方法都要会;另外一些分析方法,例如SWOT分析、漏斗分析之类的,这是标准化思路的方法;另外是数据可视化,一方面要知道怎么展示更有表现力,能支持你的观点,另一方面你要会画,会实现,把图给画出来,前者是思维、经验的,后者基本是技术的,基本的,常用工具根据自己喜好吧,excel能满足基本需求,另外echarts、百度图说之类的可以去了解一下,重点是能画出来,而不求多高端。

3、涨分点

首先是建议大家会写代码,这是一条分水岭,非常明显,如果你会写能比很多人有很大优势,什么叫做会,可以理解为自己有一个思路,要整理数据,然后你可以根据自己的思维能把代码写出来,就够了。
第二个是数据的敏感性,数据分析,其实就是要从海量数据中找到有用的信息,有的时候甚至要对数据进行转化,这个操作,在里面查找数据,是需要数据的敏感性的,这个敏感性说的有点玄学,我自己感觉也不是特别好,但是看到很多人能从同样的数据中找到新的信息其实很厉害。
第三个同样很玄学,业务理解,分析一个问题,必须依靠实际问题,不同场景下会有不同的分析方法和需要的信息,即使是相似的内容数据上也会有不同,例如购买同一产品不同品牌的人,用户互相就会有所不同,那分析目标和内容也有不同,因此对业务理解很重要,而对校招生而言,需要的就是要有理解业务的意识。
第四是数据的解释能力,这个同样很重要,如何将你获取的信息有效传递给读者,尤其是老板,是非常重要的。之前遇到一个人去谈,分析了一个结果,意料之外的,和老板说,老板的回答是“这个结果怎么和常规思维差距这么大?是不是算错了?”,后来又弄了一个别的事情,结果和实际的一致,老板又说“分析出一个我猜都能猜到的结果,要你何用?”,这其实非常尴尬,但其实这里有一个非常重要的点,就是你要传递的信息的形式、说理等,要足够支撑且读者能够接受,例如和常理一致大家都知道,但是常理一般没有数据化的支撑,猜是能猜到股票上涨,但是上涨多少是本身难以猜测的,这就是数据分析的价值,与常理不一致的,则需要你又充足的理由和证据。

4、推荐材料

不展开说了,加粗的是非常推荐看:《精益数据分析》《统计陷阱》《 Python数据分析与数据化运营》《数据挖掘与数据化运营实战 思路、方法、技巧与应用》《数据挖掘:你必须知道的32个经典案例》《从1开始――数据分析师成长之路》《数据挖掘导论》等

  算法工程师

算法工程师这几年无敌火,我也简单谈谈我的感想吧。

1、工作内容

说到工作内容,很多人以为就是不停地机器学习建模之类的,事实上并非如此。数据获取和清洗才是重中之重,建模非常简单也非常迅速,但是前提是你要有可靠的数据和合适的特征工程方法,所以保证数据质量是非常重要的一步。
然后才是建模,这里的建模其实不是那么复杂的机器学习模型,有的时候可能就是一个if-else,一句话,但是在代码里加这句话后,可能会影响别的逻辑,这时候要经过不停地实验才算完事,和面还要通过AB实验等方式去验证。
上线,这是一个互联网中经常提到的名词,作为一名算法工程师,你不是只用python写个模型就完事了,你还要把代码上线,这时候一方面你要写一下java或者是c++的代码,配合你的模型运行。
最后,就是模型维护,包括监控和迭代了,监控新上线的内容有没有按照预期变好,或者是出了什么大问题而变坏,后续继续监控,有必要的话就更新迭代。

2、必备技能

第一个还是提SQL,另外还推荐大家尽量会hadoop全家桶,越多越好吧,但是基本的数据操纵和存储还是要会,例如hdfs,毕竟你是算法工程师,在这里完成数据操纵就好了。
然后是python,这个是肯定要会的,另外是因为涉及到上线,c++和java至少会一个,另外linux操作和shell脚本也要会。
至于算法,应该是绝大部分人都会花很多时间去学的,至于要到什么程度,作为数学系出身的我,我很建议大家把理论和实现都要搞懂,理论是因为只有把模型搞懂了,你才能在现实环境中预判并且选择最好的方法,而实现,不用我多说,你的模型是要给别人用的,那肯定要把代码之类的写好了,所以,机器学习,例如李航老师的,周志华老师的两本经典书,会推会用,针对笔试面试如此,针对现实工作也是如此。
另外推荐大家能往一个领域稍微学点,例如自然语言处理,机器视觉,推荐系统等,有一定深度,对现实应用会很有好处,一方面你有机会实操,另一方面你有优势。

3、涨分点

实践经历,对于学生,最好的实践经历就是实习,如果你确定要找工作了,推荐找个实习干干,如果条件不允许,干点有关工作的科研工作,写一篇好论文,再不济,可以参加点比赛,拿奖最好,没拿奖,把自己的经历总结出来也是很好的,重要的是,你干过。
千万不要做调包侠和调参师。理论不懂,上来就怼模型的,这种人大都单活不过三集,对个人而言,最直接的理由就是,你没有竞争力,因为调参调包太简单了,在这领域的谁都会。
那么提升,那就是对算法有理解(数学能力,公式推导能力还是要会,要选这条路就不要给自己找放松的借口,大家都是这么过来的),然后会快速选择和建模,很重要。
有一种意识,如果你具备了,会超越一些人,就是基线意识。首先,你要知道所有的好坏,都是对比得到的,所以你要体现你的模型好,就一定要有个对比;第二,作为工程师,首要任务是实现功能,满足需求,用户、领导、产品可能不会关心甚至不懂你是怎么实现的,所以最简单、最快捷、最低风险的方法是当下最好的方法,只要达到上线需求就行,觉得还能提升,那就后续迭代升级即可,不要盲目追求高大上,高大上意味着高风险、低效率,因此实现功能才是关键。

4、推荐材料

就推荐一些不常出现但是很厉害的材料吧,这些我都已经看完了。《python文本分析》《花书》雷明的《机器学习与应用》《推荐系统实践》《基于深度学习的自然语言处理》《推荐系统与深度学习》黄文坚的《tensorflow实战》
另外,Github,百度,博客,论文建议大家多看,更新知识,保证自己的领先性,别闷头看书写代码。
在此提醒一句话:数学决定上限,技术决定下限。


  简历tips

首先是命名,按照这个很哲学的思路,命名中包含这三个信息:
  • 我是谁:姓名
  • 我从哪来:院校
  • 我要到哪去:工作意向
然后是写自己的经历,经历都会写,问题怎么写才会更合适,下面是4个tips:
  • 负责内容概述
  • 注重细节,体现真实性,让面试官了解你的角色
  • 专业名词,体现专业性,你是一个专家,就要装一下
  • 能给出数据的尽量给出数据,体现你的能力强弱
另外注意适当增加你和求职工作的匹配度,主要方法是多加入一些求职说明上出现的专有名词
添加一些你有但是别人没有的技术,例如你的英语能力,获奖等。


  笔试tips

首先是要学什么,学啥需要参考的是公司的求职说明,根据求职说明来配备技能,最好有点实践,成果化,写写博客,分享笔记,甚至是写论文专利,都是挺非常好的。
至于学习资源,首先是比较完善的课程和教程,网课,b站,淘宝甚至是b站,都是很好的;另一方面,有些人写的博客、公众号非常不错,例如我的哈哈哈哈;另外,最前沿的东西一定在论文和github上,这个一定要多看。
至于笔试面试的资源,LeetCode,牛客网,赛码网,剑指offer,程序员面试宝典等。
另外,为了更好地通过面试笔试,看一些和面试公司有关的信息,以及HR的书籍,投其所好吧,知己知彼百战不殆。
最后强调一点,看什么不重要,重要的是看完,不要再只记得abandon了。

另外有一些其他的小建议

  • 创造价值是公司和你的目标,学习本身只是辅助你的而已,在面试的时候切记
  • 多渠道找工作,很多人只会以来学校,那你可能会错过很多机会
  • 光靠学校的课程难以突出,你要想有闪光点,就一定要自己学,多问问自己“凭什么公司非要你不可”
  • 多去实践实操,实习>论文>比赛
  • 不盲目追热,分析形势和前景,算法这个领域门槛很高,根据自己的情况选择
  • 网络资源丰富,笔经和面经必看,百度不是测网速用的
  • 部分工作做好加班多的准备
  • 时刻记住诚信


  其他大家想知道的信息

报告上大家提到的问题,以及有些大家后台的提问也会在这里,有些涉及公司机密的我就不多说啦抱歉。
Q1:实习换公司的原因
离开去哪儿是个人原因,没平衡好学校和实习的关系,无奈辞职,非常对不起几位前辈。离开美团是因为自己想在深圳发展,然而美团给不到这个条件吧,否则可能一直待下去。
Q2:公司选择的建议
很多公司因为AI的风口想做事情,但是没有很扎实的技术,但是由于算法这个领域需要一定的门槛,且考虑个人的成长,算法技术不扎实的公司,慎重一些吧。
Q3:跨领域是否适合转算法
个人建议慎重。这块需要比较多的数学基础和计算机基础,这两种专业外的同学最好慎重,因为补起来比较难,也比较花时间,且深度难以把握。当然不做技术做产品运营之类的,倒是没什么问题,但是做产品的一点都不懂技术,可能会尴尬,甚至有生命危险。
Q4:工作选择的心路历程
我从一个学生角度去思考,最重要的毕业!!一定是毕业,不毕业你就完了,好好学习,好好写论文,别挂科,然后是实习,实习的目的是个人成长,有成长的话,尽可能多待,待的时间太短,新手村都没过,业务没熟悉,你压根干不了活,干活了还要有深度,所以尽量少换工作,少中断。离开去哪儿纯属客观原因,美团待了大半年吧,收获不是一般多大。
Q5:负责的项目以及具体工作
由于涉及业务的话可能会涉密,这块我一直保持谨慎态度,所以不会说太多,至于具体的工作,可以参考上面数据分析师和算法工程师里提到的工作内容,可以作为参考。
最后补充一句话:实力是你最大的资本,不要老想着走捷径,最稳的路一定是凭借实力的,即使有浪潮,有风口,但是浪潮总会结束,风总会走,寒冬之下只有实力能陪着你前行。


面经招募



「 AI研习社 」聚集了大量AI人才,或是来自高校工科专业的学生,或是奋斗在行业的开发者,这些不管是职场菜鸟还是业内老手,都希望能在人生重要的抉择面前,有一些前行者的优秀经验可以借鉴,少走一些弯路,多一些选择。

面试是拿到心仪offer的关键,但很多求职者由于缺乏面试经验,常常与期望的offer 失之交臂。为了更好地为大家提供有价值的面试经验,将优秀工程师的成长经验分享给需要的群体,为他们提供有价值的参考,我们将推出有酬征文。

您的文章可通过我们的平台触达到更多的AI学者和开发者,让知识和经验流动起来。如果您有兴趣聊聊自己的求职过程,分享自己的面试经验,请添加微信:bajiaojiao-sz。 


助力企业招募优秀技术人才,扫码参与



点击 阅读原文,入驻职荐。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54998