机器学习工程师求职面试

文章目录
  1. 1. 前言
  2. 2. 简历项目
    1. 2.1. 项目资源
    2. 2.2. 简历模板
    3. 2.3. 技巧
  3. 3. 简历项目提交
    1. 3.1. 提交说明
    2. 3.2. 分享简历
  4. 4. 求职信项目
    1. 4.1. 提交
  5. 5. GitHub个人资料项目
  6. 6. GitHub项目提交
    1. 6.1. 提交说明
    2. 6.2. 项目资源
  7. 7. 领英个人资料项目
  8. 8. 领英项目提交
    1. 8.1. 反馈
    2. 8.2. 提交
  9. 9. 技术面试项目
  10. 10. 技术面试项目提交
    1. 10.1. 提交说明
  11. 11. 机器学习模拟面试
  12. 12. 坚持练习!
    1. 12.1. 书籍
    2. 12.2. Web 资源
    3. 12.3. 在线实践平台
  13. 13. 面试项目提交
    1. 13.1. 提交说明
    2. 13.2. 面试问题(共 7 个)
    3. 13.3. 提交
    4. 13.4. 项目资源
    5. 13.5. 接下来
  14. 14. 书签

前言

本文转载自优达学城《机器学习工程师》

简历项目

在工作申请和应聘中,简历是必备品。一份好的简历,必须契合岗位需求。在这个项目中,你需要找到一条招聘信息,然后根据岗位的职责要求,更改你的简历。一旦你完成此项目,你就成功学会了定向寻找的方法,你就可以随时去找工作了!

项目资源

1、项目评审标准。优达学城的项目导师将根据此评审标准检查你的项目。
2、项目检查表。提交项目前,你可以对照这个检查表检查你的项目。
3、职业资源中心。在这里找到更多关于如何改进你的简历的贴士。

简历模板

从零开始编写你自己的简历,这样你的简历一定是独一无二的

技巧

在介绍你参与过的项目和工作经验时,尽量使用点列表(bullet points):

简历项目提交

说明:此项目目前仅提供英文审阅服务,你需要用英文完成项目。

项目导师会根据该评估准则(与你制作简历时遵循的清单相符)对你的简历项目进行审核。

提交说明

1、在优达学城职业资源中心找到一个招聘岗位,要么是你现在就可以申请的,要么是你在纳米学位毕业后会申请的。判断这个岗位是否适合你。(注:如果你初步判断有75%的可能可以达到该工作要求,那么你就可能就是一个很好的候选人,你就该去试一下!)
2、根据这个岗位的具体要求,修改完善你的简历。
3、在提交时,在“给审核人留言”一项中复制并粘贴岗位内容,或是直接放置链接。
4、参考:在简历中删除敏感信息,例如你的电话号码。
5、提交 pdf 版本的简历。

分享简历

优达学城与雇主合作,雇主可以通过你的专业资料与优达学城学员和毕业生联系。 一旦你完成了简历审核,请务必将你已审核的简历更新到你的个人资料中!

求职信项目

在这个项目中,你需要撰写一封求职信来描述你所具备的各项技能。更重要的是在信中陈述你对这份工作的热情。我们建议你针对一个你在网上找到工作描述来撰写这封求职信。我们希望所有的学生能够通过练习撰写求职信来学习如何把你的技能与工作职位的要求联系起来。

说明:此项目目前仅提供英文审阅服务,你需要用英文完成项目。

项目导师会根据该评估准则(与你制作简历时遵循的清单相符)对你的简历项目进行审核。

提交

准备好提交求职信后,你需要:

1、删除/匿名化你的求职信上的所有个人联系人信息,以防泄漏隐私。
2、创建 PDF 格式的简历,这样你的简历在不同操作系统/软件/屏幕中有一致的版面样式。
3、点击下方的“提交项目”按钮,并根据说明操作。
4、在“告知审核员”中,请包括任何有关你的职业目标(如申请的工作或领域),或任何有意偏离评估准则情况的详细信息。

注意:我们最多需要一周的时间来对项目进行评分,但多数情况下无需一周。项目评审完成后,你会收到电子邮件。如果你在提交项目时遇到问题,或者想查看提交状态,请发送电子邮件至 support@youdaxue.com

GitHub个人资料项目

你的GitHub个人资料展示你创建的项目,并让他人了解你的工作风格和提交频率。通过展示你对 GitHub 的熟悉程度,其他开发人员和招聘经理能够知道你拥有他们需要能力,你就是他们正在寻找的人。你的代码库应表明你认真对待项目,并且能够编写干净、格式正确的代码。请查看 GitHub 上的这篇出色的博客文章,了解如何用 GitHub 帮助你持续学习,发展职业生涯。

为何要完成此 GitHub 个人资料项目?
GitHub 越来越多地被用作招聘平台以及潜在雇主查看你的作品的方式。它还是与其他开发人员建立联系和展示你的技能的好地方。

我应该做什么?
你应该以招聘人员或用人部门经理的眼光查看你的 GitHub 个人资料,重点关注你的个人资料、项目和代码如何将你描绘成公司的潜在候选人或项目的协作者。

为此,你需要更新你的 GitHub 个人资料,让其显得专业并适合用于求职。你还要完善项目,让它们方便招聘人员和对你的工作感兴趣的任何其他人浏览。因此,你需要添加自述文件和格式正确的提交说明。

如何完成此 GitHub 个人资料项目?
在纳米学位课程的此阶段,我们假设你掌握了 Git 和 GitHub 的基础知识:如何克隆代码库,如何初始化代码库,如何提交并提供说明,以及如何向 GitHub 上传代码库。如果不了解这些基础知识,请查看我们的如何使用 Git 和 GitHub 课程。

首先通读 Udacity GitHub 个人资料检查表大致了解 GitHub 个人资料的目标和任务。

查看整个检查表;勾选已完成的每一项。对于未完成的项,修复并更新 GitHub 个人资料。建议你阅读此博客文章,了解有关 GitHub 这个在线平台的更多详细信息。还建议你查看职业资源中心,获取有关更新 GitHub 个人资料的更多指导。

如何在 GitHub 上创建 readme 文档?
如果对如何在 GitHub 上创建 readme 文档不熟悉,可按照下面的说明开始创建:
1、单击某个项目并滚动到下面的文件列表。如果尚未创建自述文件,将会看到类似这样的图像:

2、单击添加自述文件按钮。
3、在自述文件中,解释项目的目标,有关如何使用或查看项目的说明,以及寻求何种类型的协作。自述文件是使用 Markdown 编写的;请查看 GitHub 的 Markdown 指南了解详细信息。

完善个人资料的途径?
GitHub 能够快速、直观地显示你的代码库活动。因此,强烈建议开发人员显示活动。你在此项目中完成的任务只是一个开端。GitHub会突出显示你在上一年的活动,因此我们有两条长期建议:
1、每天提交细微的增量更改。像下图这样的绿色提交图表表明你正积极地向项目中添加内容。

2、向开源代码库供稿。对于招聘人员,这是一个重要的积极信号。它表明你能够很好地与他人合作,并且更重要的是,它表明你真的对编码充满热情,愿意在业余时间不计报酬地做这件事。如果想知道如何开始,请查看 GitHub 指南

GitHub项目提交

你的 GitHub 主页是呈现给潜在雇主的“关键证据”,证明你会是一个很好的职位候选人,因为他们可以从中看到你过往工作的细节。 许多招聘人员使用 GitHub 搜寻候选者,许多纳米学位毕业生都因为他们在 GitHub 上的活跃记录获得了工作机会。 此外,通常,你与其他程序员使用 GitHub 合作完成项目的——这将显示你能够在工作中与工程团队的其他成员合作。

在此项目中,我们将指导你如何从招聘经理或人事部门经理的角度审视你的的 GitHub 主页,重点关注你的个人资料、项目和代码,以及它们如何能证明你是公司的潜在候选人或项目需要的工程师。虽然这个项目和其他职业发展项目一样是可选的,但我们建议所有学生都能完成此项目。

说明:此项目目前仅提供英文审阅服务,你需要用英文完成项目作业。

提交说明

1、在你已经连续编程至少两周后再提交此项目,这样审阅者才能向你提供有效的点评。
2、在项目提交页面中输入你的 GitHub 个人主页(https://github.com/username)。

项目资源

1、项目评审标准。优达学城项目导师会依据此评审标准审阅你的项目。
2、项目检查表。对照此检查表,检查你是否已经满足项目要求。
3、职业资源中心。你可以找到关于如何改善你的个人主页的进一步的信息。

领英个人资料项目

你已经创建(或更新)了领英个人资料,它简明、清晰,精彩地讲述了你最好的一面,接下来你就可以提交它以供评审了!

这是一个可选项目。仅当你希望获得有关领英个人资料的反馈时,才应提交。这最适合想要找工作或想改进其领英个人资料的学生。

为何要完成此领英个人资料项目?
领英是世界上最大的在线职业社交网络,在全球拥有 3 亿用户。最重要的是,它不仅仅是一份传统简历!领英还让你能够在线推销自己的成就,同时增强自己的职业社交网络。

95% 以上的招聘人员使用领英作为招聘工具。你的简历只能概述你的职业生涯,而 领英却可以生动地描绘你的情况,无论你有何背景。由于许多行业领导者都是领英社区的积极投稿人,因此 领英还让你有机会创建个人品牌,让潜在雇主与你联系并获得有关行业趋势的见解。

我应该做什么?
你的领英个人资料应该帮助你在使用正确关键字的搜索结果中突显出来,并指示你不仅有相应的资质,而且积极上进。为了实现这些目标,请记住 3-30-180 规则。它是指招聘人员只在你的领英个人资料上花很短的时间。招聘人员花 3 秒钟来决定是否继续查看你的个人资料,花30 秒钟阅读第一遍,然后花 180 秒钟决定是否与你联系。有关 3-30-180 规则的更多信息,请参阅优达学城的这篇博客文章

如何完成此领英个人资料项目?
首先通读 优达学城领英个人资料检查表,大致了解领英个人资料的目标和任务。还应检查同行的个人资料,了解如何推介你自己和你的技能。

如果是从头开始创建领英个人资料,请转到下一部分。如果是更新领英个人资料,可以跳到拥有领英个人资料后部分。

如果是从头开始创建领英个人资料
创建一个帐户,并登录领英

拥有领英个人资料后
查看整个优达学城领英个人资料检查表;勾选已完成的每一项。对于未完成的项,修复并更新你的 领英个人资料。勾选所有项后,移到下一部分。有关更多指导,请查看职业资源中心获取更多建议和资源。

领英项目提交

在这个项目中,你将站在招聘经理或者人力部门的角度来审视自己的领英个人资料,将着重点放在自己的工作经验,教育背景以及兴趣爱好上,向他人展示你是一个有潜力,有合作力的应聘者。虽然这个项目和其他职业发展项目一样是可选的,但我们推荐所有学员更新自己的领英个人资料,展示你新掌握的技能。

说明:此项目目前仅提供英文审阅服务,你需要用英文完成项目作业。

反馈

优达学城项目导师会根据该标准(与你制作领英简介时遵循的清单相符)对你的领英简介项目进行审核。

提交

准备好提交领英个人资料后:

1、若要提交,请点击下方的“提交项目”按钮,并根据说明操作。
2、在“告知评审员”中,请包括任何有关你的职业目标(如预期工作领域)的详细信息。

注意:我们最多需要一周的时间来对项目进行评分,但多数情况下无需一周。项目评审完成后,你会收到电子邮件。如果你在提交项目时遇到问题,或者想查看提交状态,请发送电子邮件至 support@youdaxue.com

技术面试项目

对于此实战项目,你需要回答五个技术面试问题,这些问题涉及的是技术面试课程中讨论的各种主题。你应该用 Python 写出清晰高效的答案,并用文字解释代码的效率和设计理由。我们将安排合格的审核者检查你的答案,并针对任何精彩之处或欠缺的方面做出反馈:你的解决方案是最高效的吗?你很好地解释了你的想法吗?你的代码简洁易懂吗?

请回答以下问题:

问题 1: 假设有两个字符串 s 和 t,请判断 t 的变形词是否是 s 的子字符串。例如:如果 s = “udacity”,t = “ad”,则函数返回 True。你的函数定义应该为:“question1(s, t)”,并返回布尔值 True 或 False。

问题 2: 设有字符串 a,请找到 a 中存在的最长回文子字符串。你的函数定义应该类似于“question2(a)”,并返回字符串。

问题 3: 假设有个无向图 G,请找出 G 中的最小生成树。最小生成树是指连通图表中的所有顶点且边的总权值最小的子图。你的函数应该以邻接表为输入,并返回一个邻接表,表的格式如下:{‘A’:[(‘B’,2)],’B’:[(‘A’,2),(‘C’,5)],’C’:[(‘B’,5)]}。顶点表示为唯一字符串。函数定义应为“question3(G)”。

问题 4: 请在二分查找树中找到两个节点之间的最近共同祖先。最近共同祖先是指同时为两个节点的祖先且离根最远的节点。例如,根节点是树上所有节点的共同祖先,但是如果两个节点都是根节点左侧子节点的子孙,则该左侧子节点可能是最低共同祖先。你可以假设两个节点都在树中,该树本身遵守的是 BST 规则。函数定义应该为“question4(T, r, n1, n2)”,其中 T 是用矩阵表示的树,列表的索引等于该节点中存储的整数,1 表示子节点,r 是表示根节点的非负整数,n1 和 n2 是表示这两个节点的非负整数,二者没有特定的顺序。例如,一个测试条件可以为 question4([[0,1,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[0,0,0,0,0]],3,1,4),答案应为 3。

问题 5: 从单链表中找到倒数第 m 个元素。例如,如果单链表中有 5 个元素,则倒数第 3 个元素也是正数地 3 个元素。该函数的定义应为“question5(ll, m)”,其中 ll 是链表中的第一个节点,m 是“倒数第 m 个元素”。你应该复制粘贴下面的 Node 类,并用它来表示链表中的节点。请返回该位置的节点对应的值。

1
2
3
4
class Node(object):
def __init__(self, data):
self.data = data
self.next = None

技术面试项目提交

对于此项目,请回答五个技术面试问题,内容涵盖了技术面试课程中讨论的各种话题。请用 Python 写出简洁高效的答案,并用文字解释下代码的效率和设计理由。我们会安排一位合格的审阅人员检查你的答案,并对其中的亮点或不足之处做出反馈——你的解决方案是效率最高的吗?清晰地解释了自己的思路了吗?你的代码简洁、易于读懂吗?

提交说明

1、对于每个问题,请用 Python(版本 2)写出解决方案。所有解决方案的函数名称都应为“question1”、“question1”等等。可以根据需要创建其他辅助函数或类。代码解决方案必须放在称为“solutions.py”的文件内。

2、在同一 .py 文件中,请为每个解决方案提供至少 3 个测试案例。对于每个测试案例,请写出函数调用,输入值为你要测试的内容,并输出到控制台上,例如“print question1()”。在下一行,注释掉你预期会从该函数调用中获得的输出。至少有两个测试案例必须是极端情况,例如输入为 null 值、空输入值、非常大的值等等。

3、在单独的文本文件(称为“explanations.txt”)里写上每个问题的说明。不用详细解释所提供的代码,但是请说明代码中各个决策背后的原因。例如,为何使用该数据结构?同时还需要解释下解决方案的效率(时间效率和空间效率)。

4、将 Python 文件和文本文件压缩为 .zip 文件,然后提交了。

请参阅此处的评估标准

机器学习模拟面试

具体内容看视频。

坚持练习!

你在该课程中完成的面试准备练习只是牛刀小试,我们会鼓励你进行更多练习。我们还准备了以下资源列表,可供你进行其他练习。而且如果你还知道其他资源,请不吝告知。并非所有资源都适合你所申请的工作,因此请务必在开始练习前进行调查!

书籍

Web 资源

在线实践平台

不断练习的过程中,你要尽量全面地模仿真正的面试。例如你应该尝试与朋友一起练习行为问题,而不是一个人闷头练习。还要尝试使用计时方法,以确保给出的答案条理清晰,简明扼要。对于技术问题,你要尝试使用白板或在线文本编辑器,而非 IDE 和编译器进行编码。

现在我们开始面试排练!

面试项目提交

雇主通过面试来判断你是否适合这份工作,以及是否已经做好准备。面试不是一场考试,而是你和雇主之间的对话。建立你自己的策略,为面试到来的那一天做好准备吧!

说明:此项目目前仅提供英文审阅服务,你需要用英文完成项目作业。

提交说明

1、在下面的招聘网站中,选择一个你想要在毕业后去应聘的职位。

  • The Udacity Career Network on AfterCollege
  • FirstJob
  • R-users
  • kaggle
  • Jr.DevJobs
  • LaunchCode
  • Whitetruffle
  • AngelList
  • HIRED
  • Dice

2、假装你在接受一场真正的面试,回答下方的面试问题。
3、将你的回答保存为 .pdf 或 .txt 格式提交。
4、提交时,将你选择的招聘启事的的链接复制粘贴到给审阅者的补充说明(Notes to reviewer)中。

面试问题(共 7 个)

想象你在面试中回答以下问题,用你认为适当的两三段话解释和说明你的答案。对于编码答案,请解释你在编写代码时所作的相关选择。

问题 1 – 我们采用 A/B 测试方法测试了我们公司产品页面上两种不同风格的注册按钮。100 名访客访问了 A 页面,其中有 20 名点击了按钮;然而,70 名访客访问了 B 页面,且仅有 15 名点击了按钮。那么你能肯定地说 A 或 B 页面是更好的选择吗?为什么?

问题 2 - 你能否设计一个计划,仅靠观察推文来对 Twitter 用户进行分组?你没有任何可用的人口、地理或其他识别信息,只能利用他们发布的纯文本消息及每条消息的时间戳。

在 JSON 格式中,它们是这样的:

1
2
3
4
5
{
"user_id": 3,
"timestamp": "2016-03-22_11-31-20",
"tweet": "It's #dinner-time!"
}

假设你收到一些这样的推文流,请描述一下收集和分析它们的过程,你会采用什么转换/算法,你如何训练和测试你的模型及展示结果。

问题 3 - 在分类设置中,给定一个加标签示例数据集及你尝试拟合的机器学习模型,说明检测和防止过拟合的策略。

问题 4 - 你的团队正在为你们的旗舰 3D 建模工具设计下一代用户体验。特别是,你的任务是实现一个智能上下文菜单,它能够学习建模者的菜单选项使用,然后显示最有益的选项。例如,我经常使用“编辑”>“表面”>“光滑表面”(Edit > Surface > Smooth Surface),而我希望只要右击就会出现一个“光滑表面”选项,就像“剪切”、“复制”和“粘贴”一样。注意并不是所有命令在所有上下文下均有意义,例如我需要选择一个表面才对它进行光滑处理。那么,你如何设计一个能够执行这种行为的学习系统/代理。

问题 5 - 通过一个情景举例说明正则化对学习好的模型的必要性,以及提供一个正则化没有意义的情景。

问题 6 -你附近的杂货店想向顾客有针对性地发放对他们来说有用的优惠券。假设你可以访问每位顾客的购买历史和店铺商品目录,你将设计怎样一个系统,来决定发放哪些优惠券?你如何衡量这个系统的性能?

问题 7 - 选择一个公司,然后描述你想应聘的该公司内的机器学习工程师职位(假设有)。现在,如果你已成功应聘,并从今天开始任职,在你看来,你的职位在下一年会有怎样的发展?你的长期职业目标是什么,这个职位如何帮助你实现长期目标?

提交

当你准备提交项目,点击下方“提交项目”,上传一份 PDF 文件。如果有任何与提交项目相关的疑问,或想查看提交状态,请向我们发送电子邮件询问(support@youdaxue.com)。

项目资源

项目评审标准。优达学城的项目导师会依据此评审标准审阅你的项目。你可以在提交前自行检查自己是否已达到所有标准。
职业资源中心。你可以在这里找到更多有关准备面试的资源和贴士。

接下来

面试练习并不是只在你求职时才需要做的事情, 在你的整个职业生涯中,你都需要继续提高自己的面试技巧。抓住每一个机会,思考和与人交流你的职业目标。在申请一个职位之前,请思考清楚自己为什么要申请——这将极大地帮助你为面试做好准备。

书签

Interview Guide: Machine Learning
https://career-resource-center.udacity.com/interview-courses-and-guides/machine-learning

职业资源中心 - 简历
https://career-resource-center.udacity.com/resume

职业资源中心 - 求职信
https://career-resource-center.udacity.com/cover-letters

LinkedIn and GitHub Profiles
https://career-resource-center.udacity.com/linkedin-github-profiles