查看原文
其他

追光 | 33学姐:本科生如何卷入北美大厂做算法?超详细技术干货让你攒满技能点!

有光Ushine 有光Ushine
2024-09-08

·点击蓝字·关注我们 / USHINE

| 采访:沐沐、加一

| 文案:沐沐、加一

| 排版:香玲

| 审核:雨筱、香玲



嘉宾背景

教育背景:

新加坡Singapore University of Technology and Design (SUTD)计算机科学本科


实习经历:

新加坡航空|SWE软件实习

A*STAR|Research实习

某本地Boutique量化公司|SWE软件实习

PayPal|算法工程师暑期实习+一年全职

某Top美厂(FAANG)算法工程师


小红书账号:冰燃



  +

+

导读

Guide

由于33学姐超级无敌的nice和真的有太多干货,所以以下放在公众号的是缩减后的精华帖,对完整内容感兴趣的小伙伴可以复制下方链接到浏览器或点击阅读原文查看~

https://ushinefuture.feishu.cn/docx/doxcnDVHHUB0EU7Cy6A8i3PZBag

完整版针对明确自己想转码 / 想看大佬完整修炼手册的小伙伴,包含了更具体的33学姐的项目和实习经历、每段项目实习的感受、新加坡和其他海外的经验和感受、对算法vs开发的感悟、各种私人Tips等

保证有硬性需求的小伙伴非常受益!




Vol.1 学校&科研经历


Q:作为科班出身的CS人,校内比较重要的相关课程有哪些呢?


因为学校制度的关系,我的学校没有大四,大四的课实际是分布在大二和大三完成的。

大一的CS相关课程主要是产品工业设计和一门Python基础。前者是给学生一个从设计到研发的全过程概览,包括原型图,用户调研,和hands-on的coding。Python基础的课程主要是基本的编程逻辑,包括if/else,loop,recursion等。

大二是重点CS基础课,包括了科班CS人需要的大部分基础知识,比如计算机结构、Java、数据结构与算法、操作系统OS、计算机网络和软件工程。数学方面也包括了进阶的概统。需要动手的项目相比大一也更有难度和工业意义,比如用FPGA写硬件游戏。

因为我个人对算法更感兴趣,所以大三我选的主要是:数据科学,机器学习、人工智能、数据库与大数据、计算机视觉和自然语言处理相关的课程。

总的来说,以上提到的课程都是CS科班出身做DS/ML的必修,从面试的角度来说,像是计算机结构和计算机网络的知识也许考的不会那么多,但其实工作之后会发现都是很重要的基础,所以如果是打算对标科班转行的朋友,最好都学一下。


大一第一门编程课的项目



Q:除了课程之外,33觉得学校教会/提供的最重要的skills/基石有哪些呢?


  • 动手能力

    SUTD在新加坡本科大学里最为著称的一点就是其训练的动手能力,比如我们大一的理论物理课也会让学生去动手做东西,设计课也非常的hands-on的要出一个新产品。

  • 师生比例高

    师生比高让学生可以比较容易的得到老师的指导和关注,教授们也都是世界一流名校的出色博士,很愿意给本科生机会学习。

  • 科研项目的引导

    新加坡大多数理工科大学(包括NUS、NTU、SUTD)在大一或者大二的时候都会有一个类似迷你版FYP的项目机会,会提供一些老师提出的课题供学生选择,对科研和项目感兴趣的同学可以自己报名并选课题(当然也要教授同意),算是一个入门的引导。

  • 就业引导

    Career Office提供了相当多的免费咨询、简历修改、模拟面试和消除信息差的知识。我们从大一开始每天就会收到相当数量的Career Office的邮件,包括一些公司的宣讲会、实习和全职机会、Booth和学校自己办的Workshop的信息。



Q:校内之外,有什么影响33很深的网课和书本吗?比如对非科班同学推荐的自学课程之类的?


我自己用的比较多的平台还是Coursera,最推荐的 CS/AI相关课程是吴恩达老师的Deep Learning.AI,很大程度上帮我奠基了一些神经网络方向的课程(总算能听懂老师学长项目开会讲的东西了TT)。

其他名校的开源网课推荐北大信科前辈的csdiy.wiki的整理,非科班出身的福音。

总的来说,Coursera上很多优质课程的证书在大一大二的起步实习招聘还是有比较大的作用。但到了找全职工作和社招之后,就更多只是锦上添花了。



Q:本科经历的主要课题和比较重要的Takeaway有哪些?


算上之前提到的那个大一的课题,我本科一共有四个课题,但其实参与度比较高的只有大二和大三两个课题,大一的两个课题更多是在学习如何读论文和一些基础知识。

大一两个项目分别是关于高维向量统计学和NLP的,但我当时都没帮上什么忙,还在学习阶段,更多是奠基了我概率和数理方面的基础,培养了读英文论文的语感。自己也抽空读完了李航的《统计学习方法》,算是勉强入门了统计学习打了一点系统的基础。

大二的时候做的是神经网络的安全方向,因为之前寒假上了吴恩达教授神经网络的课程,这次能听懂开会内容了。主要工作是写代码跑实验,作为二作写了一篇论文。但因为还是比较稚嫩水平有限,所以是三年后在学长的反复修改下才投中一个会议(注:写完论文其实是需要自己去寻找和考虑哪些会议/期刊有更大可能收录并投给该会议/期刊,所以这里就是指我的论文其实三年之后才投到会议里)。

大三的时候我跟着数据科学课上认识的教授做了一个对话生成方面的项目,这是我参与的最好的最扎实的一个项目,学到了非常多的关于NLP和神经网络的知识。除了跑代码和实验,这次我也自己亲手写了模型,也更大部分的参与了论文的一线写作。

总的来说,一开始我也是硬学硬读paper,后来要更注重结合课业上的知识,更加深入的理解模型、强化hands on的能力。




Q:有什么关于选择科研方向、加入老师团队的Tips可以给到同学们吗?


我个人选择NLP其实很大程度上就是因为自己对语言感兴趣,所以就我个人的经验来讲,选择方向还是看个人兴趣。但如果是针对非科班或者想转行想尽快积累项目在简历上的同学,可能选比较有压力出paper的教授会更加快一些。也可以参考Google Scholar和H Index。

加入团队的话,需要大致了解一下教授的方向,然后通过上教授的课、自己的network或者直接email联系老师。可以在联系的时候阐述自己的目的、相关的兴趣、对老师方向和团队的了解、以及自己的态度,可以附上简历之类的。

在新加坡的话(个人经验),教授会有一些类似coffee chat作为“面试”,相比硬性知识,他们也更看重学生的态度和参与度。毕竟教授虽然不用花太多钱,但是他要花时间和精力给学生讲知识讲项目,这些也是很珍贵的。如果学生不认真、直接消失,他花在这个学生身上的的精力和时间就都浪费了。当然,也有一些教授或者说因为学生已经大三/大四了,他们要会考一些算法知识和coding知识。




Vol.2 实习&工作经验


Q:从新航到PayPal到现在,可以分享一下自己每段实习和工作的感受和成长吗?


我大一的实习是在新加坡航空的创新实验室做软件工程,但其实当时自己能力也不够,所以更多还只是在起步和锻炼写代码能力的阶段。

大二暑期的时候我面了蛮多不同方向,但最后去A*STAR(新加坡政府的科研机构,是新加坡大多数科研人的必经之处)读了十几篇论文,跑了很多实验,没有做出什么论文结果,但再一次加深了自己对机器学习模型的理解。

大三的时候去一家当地小量化公司做了软件,虽然title是软件工程,但其实做的事情更加倾向于Data Engineering。这也是我后来没有考虑回这家公司的缘故。

后来我拿到了PayPal计算机视觉方向的研究组的全职offer,去那里做了一段实习后转全职(所以我实习和全职做的事情其实差不多)。总的来说,研究组氛围比较轻松,没什么业务的压力。但因为当时老板其实不是一个纯技术人员,所以当时更多是很大程度上提高了自学能力和自我管理的能力,算是能够独立把学校学到的东西应用到实业,也还是很有成就感的。

在PayPal干了一年多之后我跳槽到了现公司,方向也计算机视觉(CV)从到了我更爱的自然语言处理(NLP),组也换成了更有生产压力的业务组。相对来说比较容易学到更多的东西,也可以影响更多的用户。


大三科研期间在自习室读论文



Q:有什么推荐的找工作渠道吗?


我的建议是认识更多人,重视内推和举荐机会。我毕业的时候有4个offer,加上走到终面的还有一些别的,海投+熟人refer+比赛获奖+教授推荐都有,有3个都是和学霸同学们合作或者说有关系的。

如是没有什么network,其实Blind上也有很多大佬发帖,可以直接去跟帖询问是否可以内推(毕竟你过了ta也有奖金拿);LinkedIn也是一个渠道。



Q:33在PayPal和现在的公司的大多数同事的背景大概是什么样呢?关于简历关,33有什么Tips吗?


首先是学校背景。仅代表个人经历,主要是新加坡本地公立大学的IT/CS/EE的本科生、国内985+新加坡硕博、其他国家的top本+新加坡硕博、也有一些美国欧洲的博士。学业奖项也是很大的加分项,或者特别高的GPA。

其次是项目经历。做ML / DS一般都需要一些项目经验,包括跟着教授的科研项目,以及课业的项目和自己学的开源课的项目,还有自己的项目也可以。如果有论文的话会更好,但这不算一个必须项。一般来说也只看一作,一作是最有分量的实力证明,二作三作就只能锦上添花了。

除科研项目之外,Kaggle上会有很多公司来发布的数据科学项目和比赛,在这些比赛中拔得头筹,不管是区域性的前几名,只要有名次都是不错的plus。

Github的开源项目则能明确的证明代码写作能力,Hiring Manager一点进去就能看到;星星则是项目被人收藏的次数,也是代码能力和创造能力的有力支持。另外有极少数人会水星星骗星星,这种就不讨论了,面试官去看看repository里的内容一眼就看出来啦。一般几百星星就很多了。

第三方面,也是(新加坡)最重要的:实习经历。一般来说,大家都有1-2段大厂实习或者领域相关的实习或者比较好的科研机构(比如A*STAR),还有一些非巨头但前景很好的技术厂也是非常solid的实习,比如这边圈子里火过的Visenze和YITU,都是有一阵子疯狂招实习以及大家或多或少都呆过的地方。

总结一下,一定的项目背景以及实习是最主要的,之后是学校和GPA,以及别的提到的点。也要看HR的要求。



Q:关于简历投递后的具体面试准备,33有什么Tips吗?


过了简历,面试的时候就不会那么在乎title和学校了。一般来说,FAANG / 美厂的面试都是很多轮,我当时的体验大概是50%的Leetcode,30%的算法题和20%项目经历。

Leetcode我其实刷的不多,当时基本上是每天1-3道题保持手感,但这几年加起来也就200道,主要在注重钻研和手感。算法题就是复习各种模型的推导。

项目经历的部分会考察软实力,比如候选人的表达能力,性格和心理,与人合作等;除此之外,也能考查到硬实力,毕竟就算之前的理论知识多扎实,公司也会想看你以前做过的项目到底有没有把理论落地、能不能解决实际的工业问题。

书的话,当时主要看的就是剑指Offer和Cracking the coding interview。





Vol.3 算法vs开发和技能树


Q:33认为算法和纯工程的异同有哪些呢?


先科普一下两者主要做什么:比如我在电商网站搜“苹果”,搜索框、确认按钮、从输入框拿到我的搜索文本、把文本从手机传到服务器上、服务器向数据库和算法查询、查询完拿到相关商品信息展示到用户的手机上,这些都是纯工程的工作;而算法工程师的工作就是,收到来自服务器的搜索文本请求后,在海量的数据中,根据文本、用户搜索购买历史、商品相似度、受欢迎程度,等各个数据点,来决定哪些商品是相关的、怎么排序,是水果“苹果”还是手机“苹果”。

共性的话,两者最大的共同点就是工程本身。因为现在业界会期待一个好的算法工程师首先一定也是一个好的工程师,只懂理论还不够,要能把模型根据实际情况落地,做出实际效果和速度,方便他人使用才是硬道理。所以如果是一个大牛级别的算法大佬他肯定工程能力也很强。

不同的地方主要是工作内容和知识 / 论文能力:

  • 现在虽然会要求算法工程师拥有强工程能力,但在工作中是不会写那么多程序和服务的。纯工程师却是纯粹做软件做服务的,更关注工程模块的设计、架构、代码速度、封装、维护,或者是UI的可读性和美观等。而算法的需求在这方面的会更少。

  • 从知识和要求上来说,算法的力量来自大数据、建模、数据分析,所以会需要多学些数学和模型知识,要有论文阅读和复现能力,甚至有些情况下数据科学家岗位的人员只需要做分析报告不需要写出一个程序或者服务。


大二硬件编程项目



Q:算法岗位的分类和技能树有哪些呢?


目前主要的研究方向大概包括Computer Vision CV 计算机视觉 / 图像处理、Natural Language Processing NLP 自然语言处理、Speech Recognition 语音识别和处理,以及传统意义的上的机器学习 ML(一般相关的岗位是利用ML进行数据分析、或者传统公司里的ML岗位)。

但从业务的角度来说,现在的岗位都趋向于多模态。因为现在很少有公司只处理文本/图片/视频/音频了,基本一个app里都是音乐/文字/图片/视频内容全都有,处理的时候可能会分别用各自领域的模型处理,也可能会用多模态模型处理;而且各个方向的模型也在趋同。所以只谈模型的话,我觉得区别不大了;而工业界的算法工程师也更多是按照业务来区分的,比如推广搜(推荐、广告、搜索)、支付等等。

但不论是工业界还是学术界的分类,总的来说技术方面要求的skillset都会包括如下几种:

  • Engineering:Go、Java、(Optional)C / C++

  • ML / DS:Python、Pytorch、Tensorflow、Sklearn、Pandas

  • Data Eng:Spark、HDFS

  • Others:GitHub、Linux、Docker、Cloud Computing

知识方面,一般都会涉及到统计学习模型、深度学习模型、经典的算法、经典的CS知识(操作系统、体系结构、计算机网络、分布式系统、数据库、软件工程等)。

除了以上提到的硬知识和skillset,不同的领域还是会domain knowledge,比如支付和搜索算法工程师也需要不同的行业了解,算是需要时间和工作经验积累吧。






END




关注公众号后台回复进入社群

拉你进相应的一手JD群


有光现已覆盖

全国实习信息直达群:字节、腾讯、阿里、快手、百度、美团、网易、京东、滴滴、小红书、B站、哈啰、大疆、Garena等;

行业群:快消&新消费、金融、战略、咨询、商分、投资、国/外企等;

高校群:海内外上百所高校并已开放各高校的实习信息直达群;

生活社交互助群:生活租房(覆盖北上广深杭等地区)/线下社交/兴趣交流等一系列衍生群;

累计通过群信息入职同学已超过2000+


星标公众号,防止走丢~

走过路过不要错过,为我们点个「在看」吧👇

修改于
继续滑动看下一个
有光Ushine
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存