面试要注意什么问题??

一、面试要注意什么问题??

找到一份理想的工作是大学毕业生们最大的心愿,而进入那些知名的大企业更是广大毕业生的梦想。如何应付这些企业的面试成为了毕业生们最为关注的话题。

这些名企的面试往往有一定的程序,绝非草草而就。因此,一定要有所准备才能“百战不殆”。而要在面试前得到有关信息,常常采用的有这样几个方法:1.充分利用人际关系,与近年进入该企业工作的师兄师姐沟通,以预测面试题目的方向;2.查询该企业的资料,深入了解该企业的企业文化特点,联系当前情况,自己预测考题;3.利用网络资源,登录该企业网站,查询相关信息及面试题目。从目前的情况来看,最普遍也最为有效的方式,仍然是向往届毕业生咨询相关信息。

面试题往往与各公司的企业文化和重点关注的东西有密切的关系,我们可以做出如下总结:

忠诚度:面临跳槽,企业往往会看重应聘学生对忠诚度的看法。尤其是一些国有大型企业,更为重视员工的忠诚度。在近日康佳集团的招聘中,面试官就提出了“请分析职业技能和忠诚度哪个对企业更重要”的问题。

实践能力:在注重学生学习成绩的同时,相当多的企业非常重视应聘者的实践经历。例如通用电气(中国)有限公司(GE)就表示他们要招聘的绝不是简单的“学习机器”,在校期间实习、兼职、家教的经验都是积累社会经验的好机会,这都应该受到企业的重视。

团队协作精神:经营规模宏大的名企往往非常重视员工的团队协作精神。例如联想集团人力资源部的有关负责人就表示,该公司尤其欢迎具有团队协作精神的应聘者。

二、从小白到机器学习算法工程师,我做了哪些准备

机器学习方面的面试主要分成三个部分: 1. 算法和理论基础 2. 工程实现能力与编码水平 3. 业务理解和思考深度 1. 理论方面,我推荐最经典的一本书《统计学习方法》,这书可能不是最全的,但是讲得最精髓,薄薄一本,适合面试前突击准备。 我认为一些要点是: 统计学习的核心步骤:模型、策略、算法,你应当对logistic、SVM、决策树、KNN及各种聚类方法有深刻的理解。能够随手写出这些算法的核心递归步的伪代码以及他们优化的函数表达式和对偶问题形式。 非统计学习我不太懂,做过复杂网络,但是这个比较深,面试可能很难考到。 数学知识方面,你应当深刻理解矩阵的各种变换,尤其是特征值相关的知识。 算法方面:你应当深刻理解常用的优化方法:梯度下降、牛顿法、各种随机搜索算法(基因、蚁群等等),深刻理解的意思是你要知道梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部等等。 2. 工程实现能力与编码水平 机器学习从工程实现一般来讲都是某种数据结构上的搜索问题。 你应当深刻理解在1中列出的各种算法对应应该采用的数据结构和对应的搜索方法。比如KNN对应的KD树、如何给图结构设计数据结构?如何将算法map-red化等等。 一般来说要么你会写C,而且会用MPI,要么你懂Hadoop,工程上基本都是在这两个平台实现。实在不济你也学个python吧。 3. 非常令人失望地告诉你尽管机器学习主要会考察1和2 但是实际工作中,算法的先进性对真正业务结果的影响,大概不到30%。当然算法必须要足够快,离线算法最好能在4小时内完成,实时算法我没搞过,要求大概更高。 机器学习大多数场景是搜索、广告、垃圾过滤、安全、推荐系统等等。对业务有深刻的理解对你做出来的系统的结果影响超过70%。这里你没做过实际的项目,是完全不可能有任何体会的,我做过一个推荐系统,没有什么算法上的高大上的改进,主要是业务逻辑的创新,直接就提高了很明显的一个CTR(具体数目不太方便透露,总之很明显就是了)。如果你做过实际的项目,一定要主动说出来,主动让面试官知道,这才是最大最大的加分项目。 最后举个例子,阿里内部机器学习挑战赛,无数碾压答主10000倍的大神参赛。最后冠军没有用任何高大上的算法而是基于对数据和业务的深刻理解和极其细致的特征调优利用非常基本的一个算法夺冠。所以啥都不如真正的实操撸几个生产项目啊。

三、如果你是面试官,你怎么去判断一个面试者的深度学习水

作为面试官判断一个面试者的深度学习水平的方法:

1. 在使用一种方法(无论是深度学习或是“传统”方法)的时候,面试者对它的优点和局限性是否都有所认识。在面对不同的问题的时候,我们希望面试者可以通过独立思考做出一个informed choice,而不是因为“上周看了一篇paper是这样做的”或者“BAT/FLAG就是这样做的”。

2. 面试者是否有完整的机器学习项目经验。这意味着从理解需求开始,到收集数据、分析数据,确定学习目标,选择算法、实现、测试并且改进的完整流程。因为我们希望面试者对于机器学习在实际业务中所带来的影响有正确的判断能力。当然,如果是可以通过python/或是结合Java/Scala来完成所有这些事情就更好啦。

3. 面试者是否具备基本的概率/统计/线性代数的知识——数学期望,CLT,Markov Chain,normal/student’s t distribution(只是一些例子),或是PCA/SVD这些很基础的东西。另外(最理想的),希望面试者对于高维空间的一些特性有直觉上的认识。这部分并不是强行要求背公式,只要有理解就可以。毕竟这不是在面试数学系的教职——我们只是希望面试者可以较好地理解论文中的算法,并且正确地实现,最好可以做出改进;另外,在深度学习的调参过程中,比较好的数学sense会有助于理解不同的超参数对于结果的影响。

4. 面试者是否有比较好的编程能力,代码习惯和对计算效率的分析能力。

5. 面试者在机器学习方面,对基本的概念是否有所了解(譬如说,线性回归对于数据的假设是怎样的),以及对于常见的问题有一定的诊断能力(如果训练集的正确率一直上不去,可能会出现哪些问题——在这里,我们希望面试者能够就实际情况,做一些合理的假设,然后将主要的思考逻辑描述清楚)。我们会根据面试者所掌握的方法再比较深入地问一些问题,而且我们希望面试者不仅仅是背了一些公式或算法,或是在博客或知乎上看到了一些名词(比如VC维度,KKT条件,KL divergence),实际上却不理解背后的理论基础(有时候这些问题确实很难,但“知道自己不知道”和“不知道自己不知道”是差别很大的)。打个比方,如果面试者提到核技巧,那么给到一个实际的线性不可分的数据(譬如XOR,或者Swiss Roll),面试者能清楚地设计,并通过实际计算证明某个kernel可以将此数据转化到一个高维并线性可分的空间吗?

6. 在深度学习方面,我们希望面试者具备神经网络的基础知识(BP),以及常见的目标函数,激活函数和优化算法。在此基础上,对于常见的CNN/RNN网络,我们当然希望面试者能够理解它们各自的参数代表什么,比较好的初始参数,BP的计算,以及常见超参数的调整策略——这些相信Ian Goodfellow的Deep Learning一书都有非常好的介绍——我们也希望面试者能够在具体领域有利用流行框架(可能是tensorflow——但是这并不是必须的)搭建实际应用的经验。当然,我们希望面试者读过本领域的paper,并且手动验证过他们的想法,并且可以对他们方法的优缺点进行分析。当然,如果面试者有更多兴趣,我们可以探讨更深入的一些问题,比如如何避免陷入鞍点,比如通过引入随机噪音来避免过拟合,比如CNN的参数压缩,比如RNN对于动力系统的建模,比如基于信息理论的模型解释,等等等等,在这些方面,我们是抱着与面试者互相切磋的心态的。

7. 通常上面我们说的都是监督学习,往往结果是回归或分类。当然,也许面试者还精通RL/transfer learning/unsupervised learning这些内容,那么我们可以逐一讨论。

此外,如果面试者应聘的是某一个特定领域的职位,那么当然地,我们会希望他同时具备很强的领域知识,这里就不展开说明了。

在很短的时间内想要全面地了解一个人确实非常困难。调查显示,往往面试官自以为很准的“感觉”,其实是一个糟糕的performance predictor。我希望可以结合相对客观的基础问题,以及面试者自身的特长,来对面试者的理论和实战能力做一个判断。基础扎实,有实战经验并且有一技之长的面试者通常会是非常理想的候选人。