专栏首页小小挖掘机我在美团的这两年,想和你分享

我在美团的这两年,想和你分享

01

2017.08.14,结束了两周的等待,如愿以偿开始了自己的美团实习生活,本来抱着三五个月走人,争取下一份实习的心态,没想到一直到转为暑期实习生、到通过留用面试、再到年后继续实习,直到今天,我已经在美团度过了615个日夜。这里的人,这里的事,一切都十分美好。

写本文的目的,是想通过自身的实习经历,来总结下一名算法工程师所需要具备的基本的能力,当然,这仅仅是从我本人经历出发,如果你已经对这个岗位有了深刻的认识,那么你可以点击退出;如果你仍然处于迷茫阶段,那么我希望本文能够对你起到一定的帮助。

从我在美团这两年的实习中的所做所见,作为一名应届算法工程师,我认为应该具备下面的几种能力,当然,这种能力针对那些偏业务的算法工程师,而非纯研究型的。

1、算法的基本认识

一名算法工程师,最基本的算法能力还是必须具备的。不过,随着深度学习的发展,传统的方法如SVM等算法在实际应用中已经很少使用,至少这两年间我是没有用过的,模型一般使用的是Xgboost和LightGBM作为Base,随后使用深度学习方法或者强化学习方法进行提升。当然,推荐领域的LR和FM等方法仍然有所使用。所以,树模型是一定要牢固掌握的,然后针对你不同的求职方向,学习一些相关的深度学习模型,以及深度学习模型中一些小trick,如dropout、正则、Batch-Norm等。关于数学,个人感觉深度学习的发展已经开始弱化对于数学的要求,不过基本的梯度下降、反向传播、树模型的推导、LR的推导、FM的推导等,还是必须要掌握的。

2、过硬的代码能力

一名算法工程师,Python无疑是最适合我们的语言,但是是不是只有Python就足够了呢?当然不是,算法工程师,包含算法和工程两个方面。Python可以帮我们实现算法,还需要学习一门语言帮助我们的算法能够应用到线上。在美团,我们使用的是Java语言,作为一名实习生,我还没有机会接触到能够上线的代码,不过在未来,一定是需要负责线上代码的,所以java语言也是需要熟练掌握的。

需要提醒大家的是,尽管你可能觉得一些数据结构的知识,对于一名算法工程师来说仅仅是用来应付面试,在实际工作中并不重要,这么想,其实是大错特错了。我们很可能在不经意间,就会需要用到数据结构的知识,比如这两年我用到最多的就是Trie树。掌握好数据结构,无论是对面试还是将来的工作,都是十分重要的。

3、数据处理和分析能力

一名偏业务的算法工程师,数据处理和分析的能力是必备的。首先,一般我们都会为自己设定一个业务目标,比如整体的转化率,那么我们通常会将此分为各个阶段,并观察每个阶段的情况。比如分析外卖的整体转化率,可以划分为曝光、用户进入商家页、用户进入提交订单页,到最后完成支付等几个阶段分别观察效果,一旦哪个环节出现问题,我们可以快速定位解决。其次,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。在使用机器学习或者深度学习模型时,我们必须从大数据中提取我们的训练数据,计算相应的特征,并分析特征与我们的目标之间可能存在的关系。

在刚去美团的两个月,基本没有接触到模型相关的东西,主要负责的是建立一整套产品的数据指标框架,比如漏斗模型、留存率等等。尽管在当时觉得很枯燥,但是现在想想对自己的提升还是十分重要的。

说了这么多,数据敏感度是可以通过与数据打交道不断培养的,但是基本的工具我们可以提前掌握。在美团,我使用最多的是spark sql和hive,这大概会占据我70%的时间。关于hive,掌握一些常用的函数的使用方法,如concat_ws,row_number,case..when,if,get_json_object等等,对于spark sql,掌握其运行的基本原理,以及一些常见问题的处理方法。首先,学会如何处理数据倾斜,有时候因为一个数据倾斜问题,一整天都浪费在调试一个spark代码中了,其次,学习如何尽量减少spark任务的空间占用,同时加速spark任务运行速度,spark作业在线上调用时,会占用公共资源,你的任务占用的资源越多,别人占用的资源就越少,同时,如果你的任务运行的快,也可以给别人的任务更多的空间。spark可以通过很多语言来实现,不过我建议还是学习一下scala吧,毕竟可以和java无缝衔接。除了spark和hive,掌握一定的excel知识也是必要的。

4、模型的积累和迁移能力

在工作中,模型的积累同样是必要的,现在模型五花八门,如Transformer、Bert、DIEN等都是这几年才提出的新模型,对这些模型,我们需要不断跟进积累。同时,光了解这些模型怎么做的还不行,关键是了解这些模型为什么要这么做。但是,光积累这些模型是不够的,还需要与自己的业务相结合,针对一个业务问题,如果你能快速想到一个可行的解决方案,那么说明你的积累还算凑合,如果你无法想到一个合适的模型,那说明你还差得很远。同时,对于你新学习的模型,学会反思能不能将其部分的思想应用于你的业务问题,并对现有的模型进行改进。

好了,说了这么多,我们怎么能从繁忙的工作生活中,了解到最新的论文信息呢?对于我个人来说,主要有以下几个渠道吧:PaperWeekly公众号、原创号主(从个人看来,许多热门公众号的内容大同小异、送书、送资料、互推这种活动,使得公众号商业化了,这些公众号尽管关注人多,但我并不认为它能带来更多的价值。仅个人观点,也许是我看的少,嘻嘻)、学习交流群名词积累(在我自己的学习交流群,大家在交流的时候会说出一些自己不懂得模型,比如前几天的深度树匹配模型,如果你不懂,把它记下来,回头再详细理解)、分享交流会(在美团,一些交流会是十分有价值的,比如张俊林老师的推荐系统分享、王仲远师兄的知识图谱分享等。如果你没有机会参与这些公司内部的交流活动,那么如DataFun社区提供的免费讲座,可以多报名参加)。

5、产品能力

好吧,人人都是产品经理,我们RD有时候也是可以翻身做主人的,不一定在任何情况下都听产品经理的需求,我们需要对这些产品需求有自身的一个认识。不得不说,我在这方面还是有所欠缺的。并不是每个人都具备天生的产品思维,但只要你多看,多想,多问,相信你的产品能力一定可以有所提升,重在积累。

6、软实力

软实力包括思维能力、沟通能力、表达能力、文化修养、学习能力、团队协作能力等等,上面这些是在工作中大家需要注重培养的。

02

好了,以上是我在美团实习近两年来对于算法工程师这一职位的一点基本的认识。接下来,如果你已经取得了比较好的offer,那么到此你可以退出了,但是如果你还在准备今年或者明年的校招面试,我希望你可以继续看下去,我会和你分享一下去年校招过程中自己的一些经验:

1、笔试

提前批的公司有的是免笔试,而有的是免简历筛选,笔试题型主要有几种: 1、选择题:选择题涵盖的内容还是很多的,基础编程知识如C++和Java、概率论、机器学习基础、深度学习基础、数据结构等等 2、编程题:一般是leetcode中等难度 3、简答题:简答题主要是手推公式和业务理解。

2、面试

我在去年校招参加了十几家公司的面试,收获了10个左右的offer,总体感觉是:公司对于算法工程师的要求越来越高。面试主要考察的点有以下几个方面: 1、实习、论文、比赛:面试官一般会让你先进行自我介绍,然后会根据你简历上写的实习经历、论文、比赛经历进行展开。所以简历上的东西一定要是你亲身经历过的,可以按照STAR法则进行讲解。在这过程中,面试官会从算法理解、业务理解等多个方面考察你。 2、深度学习/机器学习基础:在聊完简历项目之后,往往会考察一些算法的基础。常考的是过拟合的解决、正则项、boosting模型等等,这一块需要你对深度学习/机器学习基础有所了解,同时对常见的模型有深入的认识和理解。对于简单的公式也需要理解和掌握推导(LR、普通神经网络反向传播、RNN和LSTM的前向传播、SVM、XGBoost等等)。 3、手撕代码:手撕代码题各公司的难度不一样,不过一般leetcode的中等难度的题就可以。小编建议,大家一定要把数组、链表、二叉树和动态规划的题目掌握好。 4、智力题:常考的就是概率计算问题。 5、业务理解:这一块小编觉得是非常难的,一般会给你一个场景,让你设计一套算法流程,或者问你对于当前你的项目,后续的工作方向等等。 6、其他:其他的面试官可能会考察一些工程上的问题如多进程、多线程等、spark/hive等等。

3、面经分享

1、阿里(四面未通过):https://www.jianshu.com/p/304e1023c4cb 2、百度核心搜索部(三面未通过):https://www.jianshu.com/p/02d931d5c1c8 3、知乎(三面未通过):https://www.jianshu.com/p/40259bb05357 4、ThoughtWorks(初试+sp加试 通过):https://www.jianshu.com/p/0b5514908683 5、美团留用面试(共一面,通过):https://www.jianshu.com/p/bbe21ff40724 6、便利蜂(共三面,通过):https://www.jianshu.com/p/51e2d16f16a5 7、贝壳(三面+sp假面,通过):https://www.jianshu.com/p/cd0a809cf198 8、一点资讯(共三面,通过):https://www.jianshu.com/p/fffc15c9d31d 9、百度Feed(二面未通过):https://www.jianshu.com/p/65032f77f903 10、猫眼(三面未通过):https://www.jianshu.com/p/c32787be3dc8 11、搜狗(共三面,通过):https://www.jianshu.com/p/8a116eb7fd32 12、小米(共两面,通过):https://www.jianshu.com/p/e34ebebae15f 13、滴滴(共三面,通过):https://www.jianshu.com/p/bc9d5f8206a0 14、拼多多(共两面,通过):https://www.jianshu.com/p/a15bc7d0686a 15、爱奇艺(共三面,通过):https://www.jianshu.com/p/4ceb5de29c76 16、头条(共三面,通过):https://www.jianshu.com/p/5bc533d1bf62

可以看到,个人感觉自身还是有很多不足之处的,总结几次面试失败的原因,主要有两点,首先在于数据机构题掌握的不佳,没有学会举一反三,比如百度的面试、知乎的面试;其次在于对于业务的理解不够深入,还停留在领导派活,埋头苦干的地步,自己对于业务的思考不足导致面试失败的,比如阿里和猫眼的面试。

4、资料推荐

下面推荐一些资料帮你更好的进行复习吧: 1、《统计机器学习》经典中的经典,建议至少读两遍! 2、《百面机器学习》对一些面试常见问题进行了总结和梳理 3、深度学习500问:https://github.com/scutan90/DeepLearning-500-questions/ 4、SVM:http://blog.pluskid.org/?page_id=683 5、李宏毅深度学习课:https://www.bilibili.com/video/av9770302?from=search&seid=9066694202064136038 6、李宏毅强化学习课:https://www.bilibili.com/video/av24724071?from=search&seid=11841282802558935758 7、李宏毅机器学习课:https://www.bilibili.com/video/av35932863?from=search&seid=7464664329294734466 8、线性代数的本质:https://www.bilibili.com/video/av44855426?from=search&seid=15873340646320697328

写在最后

说了这么多,最后希望你在今年的秋天或者未来的某个秋天,能够顺利拿到自己心仪的offer,同时希望你能够不忘初心,砥砺前行!加油!

本文分享自微信公众号 - 小小挖掘机(wAIsjwj),作者:石晓文

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货!最全的AI速查表|神经网络,机器学习,深度学习

    这个速查表可以帮助你为你的任务找到合适的estimator,这个是工作中最困难的地方。流向图帮助你查找文档,estimator也能大致的帮助你更加好的理解你的问...

    石晓文
  • 数据城堡参赛代码实战篇(七)--- xgboost介绍及实战

    小编们最近参加了数据城堡举办的“大学生助学金精准资助预测”比赛,以分组第19名的成绩进入了复赛,很激动有木有!在上一篇文章中,小编介绍了使用sklearn进行数...

    石晓文
  • [学习资源分享]-3Blue1Brown数学课程、李宏毅《深度学习人类语言处理》等

    之前小编就整理过3Blue1Brown推出的《线性代数的本质》课程的学习笔记,除此之外,还有《微积分的本质》、《深度学习》等系列的课程。3Blue1Brown推...

    石晓文
  • 我在美团的这两年,想和你分享

    2017.08.14,结束了两周的等待,如愿以偿开始了自己的美团实习生活,本来抱着三五个月走人,争取下一份实习的心态,没想到一直到转为暑期实习生、到通过留用面试...

    用户1332428
  • 我在美团的这两年,想和你分享

    2017.08.14,结束了两周的等待,如愿以偿开始了自己的美团实习生活,本来抱着三五个月走人,争取下一份实习的心态,没想到一直到转为暑期实习生、到通过留用面试...

    zenRRan
  • 两年美团算法大佬的个人总结与学习建议

    2017.08.14,结束了两周的等待,如愿以偿开始了自己的美团实习生活,本来抱着三五个月走人,争取下一份实习的心态,没想到一直到转为暑期实习生、到通过留用面试...

    五分钟学算法
  • 一文教你提高算法和数据结构技能

    ? 如果你想在算法和数据结构上做得更好,你首先需要做的就是建立一个坚实的基础。这个基础可以通过多种方式学习,通过大学的计算机科学课程,或者参加一些编程训练营,...

    AiTechYun
  • 那些你可能用得上的在线办公神器(二)

    如果想记录工作日志,甚至打造自己的知识管理平台,推荐印象笔记https://www.yinxiang.com,除了笔记还有收藏功能,比如在微信里备份文章,这个在...

    苏生不惑
  • 独家 | 脑洞大开!机器学习与AI突破(附链接)

    本文介绍了近期在机器学习/人工智能领域一些非常有创意的突破,每一个都脑洞大开,不管是否是相关从业人员都值得一读。

    数据派THU
  • 【专知荟萃13】工业学术界用户画像 User Profile 实用知识资料全集(入门/进阶/竞赛/论文/PPT,附PDF下载)

    【导读】主题荟萃知识是专知的核心功能之一,为用户提供AI领域系统性的知识学习服务。主题荟萃为用户提供全网关于该主题的精华(Awesome)知识资料收录整理,使得...

    WZEARW

扫码关注云+社区

领取腾讯云代金券