能答这些题,可以到硅谷面试机器学习岗位了


来源:优达学城Udacity

你对自己有多大的信心和把握?如何知道自己几斤几两?试着做做下面这些(技术总监们不想被你知道的)题目,如果你全部会做的话,可以尝试申请硅谷公司的技术面试了!

 

计算机科学典型问题

 

  • 如何判断一个而链表中是否有环?

  • 给定一棵二叉查找树中的两个元素,求它们的最近公共祖先。

  • 给一个栈排序

  • 基于比较的排序算法的时间复杂度是什么?证明?

  • 如何求一个带权图中两个结点直接按的最短路径?如果有些权值是负的怎么办?

  • 求一个字符串中所有的回文子串。

     

对这些问题你都要能够推导你的解法的时间和空间复杂度(大 O 表示法),并且尽量用最低的复杂度解决。

 

只有通过大量的练习才能将这些不同类型的问题烂熟于胸,从而在面试中迅速地给出一个高效的解法。常用的算法面试准备平台有 InterviewBit、LeetCode、Interview Cake、Pramp、interviewing.io 等。

 

概率论和统计典型问题
 

 

  • 给出一个群体中男性和女性各自的平均身高,求整个群体的平均身高。

  • 一次调查表明意大利三分之一的汽车都是法拉利,并且在那之中一半的车都是红色的。如果你在意大利的街头看到一辆红色的汽车驶来,请问它是法拉利的可能性有多大?

  • 你试图找出在自己的网站上放置版头的最佳方案。变量包括版头的尺寸(大、中、小)以及放置的位置(顶部、中间、底部)。假定需要 95% 的置信水平,请问你至少需要多少次访问和点击来确定某个方案比其他的组合都要好?

 

很多机器学习算法都以概率论和统计作为理论基础。对于这些基础知识有清晰的概念是极为重要的。当然同时你也要能够将这些抽象的概念与现实联系起来。

 

数据建模和评估典型问题
 
  • 一位农民想搞明白是什么因素影响了他的牛奶产量。他记录了每天的气温(30 - 40 度)、湿度(60 - 90%)、饲料消耗(2000 - 2500 千克)以及牛奶产量(500 - 1000 升)。

    • 假设问题是要预测每天的牛奶产量,你会如何处理数据并建立模型?

    • 这是一个什么类型的机器学习问题?

  • 你的公司在开发一个面部表情识别系统。这个系统接受 1920 x 1080 的图片作为输入,并告诉用户图片中的人脸处于以下哪种情绪状态:平常、高兴、悲伤、愤怒和恐惧。当图片中没有人脸时系统要能够分辨这种情况。

    • 这是一个什么类型的机器学习问题?

    • 如果每个像素点由 3 个值来表示(RGB),那么输入数据的原始维度有多大?有办法降维吗?

    • 如何对系统的输出进行编码?为什么?

  • 过去几个世纪的气象数据展现出一种循环的气温模式:一会升高一会下降。对于这样的数据(一个年平均气温的序列),你会如何建模并预测未来 5 年的平均气温?

  • 你在一家在线新闻网站工作,需要从各处收集文本,并将不同来源的内容聚集成一篇报道。你会如何设计这样一个系统?会用到哪些机器学习技术?

 

应用机器学习算法和库
 
  • 你用一个给定的数据集训练一个单隐层的神经网络,发现网络的权值在训练中强烈地震荡(有时在负值和正值之间变化)。为了解决这个问题你需要调整哪个参数?

  • 支持向量机的训练在本质上是在最优化哪个值?

  • LASSO 回归用 L1-norm 作为惩罚项,而岭回归(Ridge Regression)则使用 L2-norm 作为惩罚项。这两者哪个更有可能得到一个稀疏(某些项的系数为 0)的模型?

  • 在用反向传播法训练一个 10 层的神经网络时,你发现前 3 层的权值完全没有变化,而 4 ~ 6 层的权值则变化得非常慢。这是为什么?如何解决?

  • 你手上有一个关于小麦产出的数据集,包括年降雨量 R、平均海拔 A 以及小麦产量 O。你经过初步分析认为产量跟年降雨量的平方以及平均海报的对数之间存在关系,即:O = β_0 + β_1 x R^2 + β_2 x log(A)。能用线性回归求出系数 β 吗?

 

你可以通过像 Kaggle 比赛那样的数据科学和机器学习挑战来了解各种各样的问题和它们之间的细微差别。多多参加这些比赛,并尝试应用不同的机器学习模型。

 

软件工程和系统设计典型问题

 

  • 你有一个电商网站,当用户点击一个商品打开详情页面时,你想基于商品特征和用户的购买历史为用户推荐 5 个其他的商品显示在页面的底部。你需要哪些服务和数据表来实现这个功能?请写一个查询语句或一段过程式代码来返回所要推荐的 5 个商品。

  • 对于 YouTube 那样的在线视频网站,你会收集哪些数据来衡量用户的参与度和视频的人气度?

  • 一个简单的垃圾邮件检测系统是这样的:它每次处理一封邮件,统计不同单词的出现频率(Term frequency),并将这些频率与之前已经被标注为垃圾 / 正常邮件的那些频率进行比较。现在需要对这系统进行拓展来处理海量的邮件流量,请设计一个 Map-Reduce 方案在一个集群上部署这个系统。

  • 你要生成一个实时的热力图,来展示用户正在浏览和点击一个网页的哪些部分。在客户端和服务端分别需要哪些组件 / 服务 / API 来实现这个功能?
    CPDA课程海报