最近一年多在互联网行业的求职中经常出现这么一句话,叫做“面试造火箭,入职拧螺钉”,在很多人看来,自己费了好大的劲面试进了一家很不错的互联网大厂,但是进去之后发现做的事情都是一些很简单的事情,跟自己当初的想法有着非常大的区别,因此很多人都在感叹着自己是经历了造火箭的面试难度,去做着拧螺钉的活。但是为什么会出现这样的情况呢?下面我就来聊聊我在这件事情上的想法。

为什么面试造火箭

随着做算法的毕业生越来越多,企业对于候选人的要求也越来越高,导致很多时候一个公司的算法岗位可能也就是2个名额,却有上百名同学来竞争,对于一些一线互联网公司而言,甚至平均每一个名额就会有几百名同学投递,这也直接导致了面试难度的加大。而针对于这上百位投递的同学来讲,企业不可能每一位同学都会给到面试机会,那么这个时候就需要通过一系列的筛选机制,去剔除一些质量相对而言不是那么好的同学,因此,很多公司就会从2个方面来入手,第一个就是通过笔试题来筛选掉一部分同学,比如说一套试题的满分是100分,60分及格,那么低于60分的同学可能简历根本都到不了面试官的手里;第二个就是通过卡学历的方式来筛选掉一批,因此,我们可以经常看到在很多招聘的JD中选择要求是985的研究生毕业,或者要求有多少篇论文或比赛的经历也就是这个原因,然后剩下的简历就进入到了面试官的手里。

一般来讲,在一次春招或秋招的过程中,每个岗位经过一系列的筛选之后,可能还会剩下几十名同学,那么这几十名通过就需要进入到面试环节,而这个面试过程在很多同学看来难度堪比造火箭。

经历过最近两年春招和秋招的同学不难发现,近两年的招聘越来越难,而且基本上所有的公司都要经历笔试、机试甚至白板这么几个步骤,然后才能到面试官的最终面试,甚至在面试官的最终面试过程中也可能会让你在白板上手推公式和白板编码,可以说是太难了。其实之所以这么难,其根本原因在于岗位少,人数多,而大家都拼着命的往大厂去挤,因此会造成大厂人满为患的现象。

而在面试的过程中,面试官实际上要考察的是应聘者以下3方面的能力。


基础能力

其实大部分的笔试题大家都会发现,真实难度并不是很难,基本上都是以经典的算法和数据结构基础为主,其实所考察的知识点也就是那么几个,但是在做笔试题的时候,题目中肯定不会特意的为你指明是要用什么算法来解这道题,或者说具体考察的是哪个知识点,更多的是把这些知识点揉在了一起,然后形成一道相对比较综合的题目来做。

另外,大家可能也会发现,最近很多公司在笔试题的时候,无论你考的是什么岗位,所做的笔试题都是一些很基础的题目,并且这些题目和业务都没有什么关系,更多的都是大学里面的计算机基础知识,甚至还会包含一些操作系统和计算机网络等相关的知识。其实企业之所以这么设计,一方面是想照顾到大多数的同学(因为很多公司所有的开发岗都适用同一套试卷),另一方面就是想要考察同学的综合基础能力。

那么为啥要考察基础题呢?实际上,在企业和在学校最大的不同就在于,在企业中我们很多时候不仅仅需要的是你对于自己所熟知的领域的掌握程度,很多时候我们更需要一些相对比较复合型的人才,因为一个真正的系统的落地,肯定也不仅仅是几个算法就能搞定的,这里面会涉及到一些与计算机底层调度相关的内容,比如说,如何去节省能存的开销,如何去优化服务使得时间复杂度更低,面对一些线上的任务,我们还会去考虑一些高并发相关的内容,而一般服务器我们都是使用Linux,这里面又会涉及到Linux服务器中关于用户最大文件限制等相关的内容,例如ulimit这个参数等,而当你服务上线前,还需要考虑到接口的调用方式和安全性问题,这些实际上和计算机网络、操作系统甚至数据结构这些基础性的内容都息息相关,因此,在一个企业中,尤其是比较大的企业中,面试时基础题是必考的。

针对于这些必考的基础题来说,企业需要设置不同难度的题目来区分不同层级的学生,这也就是为什么有的题目比造火箭还要难。说白了,这些题目面试官并不是期待你一定能做出来,但是一旦做出来了,一定是在面试官眼里留下好的印象,也就是所谓的一些惊喜。


编码能力

编码能力可以说是所有与算法相关岗位一定会考察的一种题目类型。因为作为企业来讲,招你进来大部分就是要解决实际的业务问题,而这些业务问题都需要有一定的编码能力才可以完成,这里所说的编码能力不仅仅是大家在学校里所学习到的那些实验级的项目,更重要的是针对于实际的工程问题如何去解决。

在企业面试中,考察一个人的编码能力最快也是最简单的办法就是让求职的同学现场写代码,大家会发现,现在让大家写代码并不是给你一个很具体的算法,让你去写里面的实现,而是给你一个比较有场景性的题目,然后让你去解决实际的问题,这两者从面试官的角度来讲是有本质的区别的。

如果给你一个很具体的算法,让你写里面的实现,这个基本上大部分人都能够写得出来,只要提前准备一下,然后把常考的算法背一下,基本上问题都不大,比如写一个冒泡排序算法,写一个背包算法,这些都是不难的;但是如果要是只给你一个场景,并不告诉你实现需要用什么样的算法,这种难度相对来讲就要大很多了,甚至有些比较难的题目还会将两三个知识点融合在一起考,这种难度就更大了。

大家在做很多笔试题的时候会发现,一般编程题都有3道甚至4道,并且每一道题的难度都不一样,呈递增的趋势,实际上,这就是企业要考察的点,企业是通过这种方式来知道一个求职者对算法的熟悉程度,以及编程的能力。因为,在规定的时间来完成这些比较难的题,确实,不是所有人都可以做到的,而真正都能做出来的,那么一定是求职者中的佼佼者。

但是我想说,这里面实际上也是有一个隐藏的坑。大家虽然不能够把所有的题目都做完或者做对,但是一定要做到每一个题目都有思路,应该能够清楚的知道这个题目所考察的点,以及大致的解决思路,在这里给大家一个建议,当你觉得时间不够的时候,你可以在明知道答不完或者不能写出完整代码的题目中写清楚解题的思路,因为这也是面试官会看的一个地方。

对于一个企业面试官,编程题并不是要得到一个准确的结果,更重要的是想知道你的解题的思路和过程,所以有时候,过程往往比结果更重要。

在企业看来,只有具有良好的基础编程能力,才能更好更快的去学习新的知识,能够更容易去适应企业中的各种复杂的环境,而这样的人,也正是企业想要招的人。


论文及算法能力

论文及算法能力对于一个AI领域的研究生同学来讲是必不可少的。这里的论文我们一般指所应聘的行业或细分领域相关的论文,这里的算法是指其业务算法。比如说,在NLP这个领域中就有很多优秀的论文和模型,比如Bert,Attention等,在面试官对求职者进行考察的时候,往往喜欢问这里面的一些实现的原理、论文的细节甚至里面的一些公式的推导。这些内容其实要想真正的掌握到很深的层次是非常难的,但是作为一名求职的同学来讲,虽然不要求理解里面的底层实现,但是对于底层的理解却是一定要有的。因为在面试官看来,只有理解到这里面的实现原理,等到进入到企业中,才能够很好的去理解业务逻辑中的应用,才能够更好的去做出相应的算法改进。

另一方面,很多时候,我们在面试的时候要求手推公式,其中比较常考的一个点就是SVM和BP算法的手推,那么大家有没有想过,为什么这两个算法的手推考的这么频繁呢?为什么一定要考手推公式呢?

实际上,手推公式的能力能够考察出一个同学对基础和底层的认识能力,而SVM和BP这两个算法实际上是众多算法的始祖。比如SVM算法是在解决分类,尤其是二分类问题上非常经典的一个算法,在深度学习还没有火起来的时候,大部分做分类任务都会用到SVM算法,而后面很多的算法也都是从SVM的基础上延伸而来,因此,SVM算法对于一个AI工程师来讲是必须要掌握的内容。

而BP算法作为后面很多深度学习模型的基础,同样也是需要掌握的,因此,对这两个内容进行手推公式的要求,实际上并不是很过分。

为什么入职拧螺钉

上面我们说了面试造火箭的问题,那么接下来我们再来聊聊为啥入职之后就要拧螺钉。

昨天我在一个面试群里和同学们讨论了一下这个问题,有的同学不以为然,认为对于深度学习来讲,基本上都是在调用现成的框架,所以真正要展现编码能力或者算法能力的地方不是很多。

实际上,有很多同学都有这样的想法,认为做深度学习和机器学习可能就是调用一下现成的包,然后搭建多层的模型,放到服务器上去跑,然后再上线,根本不需要什么代码能力,但是事实是这样吗?于是我和几个群里的小伙伴问了他几个很实际的问题:

你有跑过TensorFlow的分布式吗?

TensorFlow的数据接口怎么写?

怎么拉取HDFS比较快?

给你一个1Pb的数据你怎么读取,怎么快速拉取?

线上模型QPS达不到怎么优化?

这个时候,大家有在想了,这个在实验室根本就接触不到,所以说我不会是正常的,这些东西都是工程上面所用到的内容,我是一个研究生,我做的事情应该和研究相关。其实我感觉,抱着这样心态的人不在少数,大家都认为自己的学历是研究生,所以就应该把主要的经历放在研究上,放在如何提高模型的效果上,但是,很多人没有看清楚的一个问题就是,大部分同学最后还是要回归到企业当中,而在企业当中,不仅仅需要你的研究能力,更需要的是与业务相关的工程化能力。

面试造火箭,入职拧螺钉。这句话虽然经常被求职者拿来用,实际上站在一个企业的角度来讲更是如此。在我看来,一个企业辛辛苦苦的面试了一个同学,这个同学在面试的各个阶段都表现出了自己具有造火箭的能力,于是很高兴的将这位同学招进来,并且薪资还不低。结果,当这位同学进来之后,我们却发现他的能力只能做一些简单的事情,其实站在企业的角度来讲,这也是面试能力和入职之后所体现的能力出现了严重的不匹配,那么这个时候,又不能够把这个人辞退,那么怎么办?只能从一些基础的事情上做起,然后慢慢的成长,最后再把一块的内容交给他来做,从而达到能够承担起更重要的事情的程度。

很多人在想,我感觉我的能力还不错啊,为什么你们却认为我的能力一般呢?实际上站在企业的角度来讲,当然希望能够招到一个能力不错的同学,但凡一个人能力比较强,那么谁还想招一个能力比较差的同学呢?但是我想说的是,在学校里面学的东西与实际企业中所用到的东西很多时候是脱节的。我们就拿一个最简单的数据处理来举例,在学校,我们一般都是去网上下载一些公开的数据集,而这些数据集小则几M,大则几个G,但是在企业中,往往每天生产系统中所产生的数据量就有几个G甚至几十个G了,而我们经常需要一次性处理一周或者一个月的数据,所以这样的数据量在学校是接触不到的,当我们还是去使用学生的思路来做的时候,就会发现,之前跑10个小时就能训练好的模型,现在要跑十几天,试问哪一个企业能够接受一个简单的模型需要十几天才能验证出一个结果的事实呢?

我们拿比较简单的协同过滤这个算法来举例子,做过推荐系统的人都知道,协同过滤算法是推荐系统中的一个比较基础的算法,大家在做实验的时候,一般就是用作者所开源的论文来做复现,每次的效果都不错,于是乎,到了企业,大家也准备用这样的方式进行上线。可真正到了企业里,突然发现,我们用这种方法行不通,当我们使用10万个用户,100万个商品的时候,还没等协同过滤算法计算完相似度,我们就会发现内存爆掉了。于是我们加大内存,想尽各种办法去寻找内存的顶点,发现最后跑完这些需要160GB的内存,而且需要跑20个小时才能跑完,这对于老板来讲肯定是不可接受的,因为不可能因为你一个简单的协同过滤算法,就给你配一个160GB内存的机器,或者一个集群,在企业来看这是划不来的。但是实际上,真的需要这样吗?不是的。我们在企业中,针对于协同过滤算法可以优化的点太多太多了,用空间换内存,增量数据模型,增量训练,算法对角矩阵优化等等,每一个点都能够把时间复杂度和空间复杂度降低一个量级,真正到企业中,你会发现很多高级算法工程师能把160GB的内存开销降低到16GB以内,20个小时能降低到3个小时以内完成,为什么别人可以,你却不行?这实际上就是经验的问题。

 

最后,我想告诉大家,不要再抱怨面试造火箭,入职拧螺钉了,很多时候,大家认为自己发了很多篇论文,有很多学术上的成果,但是在实际的工作中,我们要的是真正的企业落地,而企业落地与在学校真的是大不相同。

因此,是企业在难为我,让我拧螺钉吗?不,说句不中听的话,是因为你的能力真的还达不到造火箭,甚至连点火箭的能力都达不到。

最后给大家一个建议,面向企业编程,才能使未来的路走得更远。

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群请扫码进群(如果是博士或者准备读博士请说明):

【经验】对“面试造火箭,入职拧螺钉”的看法相关推荐

  1. 如何看待程序员“面试造火箭、工作拧螺丝”?| 畅言

    作者 | 桃翁 本文经授权转自前端桃园(ID:fetaoyuan) 很多人总是抱怨面试官问一些平时不常用的知识点,比如算法.网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝. 但是有没有想 ...

  2. 拒绝面试造火箭,工作拧螺丝——Java经典面试题分享『带答案』

    本文转载自:拒绝"面试造火箭,工作拧螺丝"--Java经典面试题分享『带答案』 1. Java三大版本 Java2平台包括标准版(J2SE).企业版(J2EE)和微缩版(J2ME) ...

  3. 面试造火箭,工作拧螺丝?看下这些大厂原题吧(iOS开发方向)

    需求已改活已加,加班通宵看朝霞.终是上线已延期,bug还是改不完. 面试造火箭,工作拧螺丝,虽然我只想拧螺丝,可是我需要用造火箭的技术去寻找拧螺丝的工作,如何能在面试过程中让自己处于不败的地步呢,刷题 ...

  4. 面试造火箭,工作拧螺丝!(窃格瓦拉曾经说过,打工是不可能打工的,这辈子不可能打工的!)

    真让你入职造火箭,你就怂了,拧螺丝挺好,都是从拧螺开始的 无论你在大企业还是小企业,无论你在国企.私企还是外企,只要是打工的,都是在拧螺丝,不管你是高级打工的还是低级打工的! 大家都在拧螺丝,没什么区 ...

  5. 面试造火箭,秋招建大楼!阿里新出《Java权威面试指南》堪称精品!

    前言 假如今年的"铜三铁四"过得匆匆忙忙不理想,那么,在这"金九"的求职季中, 你是否做好充足的准备应对了呢? 莫慌莫慌,"面试造火箭,工作拧螺丝&q ...

  6. 对面试造火箭的一些看法

    很多人总是抱怨面试官问一些平时不常用的知识点,比如算法呀,网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝. 但是有没有想过为什么整个前端圈,或者绝大部分面试,不仅是前端,各种职位都是这样 ...

  7. 强行解释一波面试造火箭

    文章首发于个人博客 很多人总是抱怨面试官问一些平时不常用的知识点,比如算法呀,网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝. 但是有没有想过为什么整个前端圈,或者绝大部分面试,不仅是前 ...

  8. 为什么现在面试总是面试造火箭?

    很多人总是抱怨面试官问一些平时不常用的知识点,比如算法呀,网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝. 但是有没有想过为什么整个前端圈,或者绝大部分面试,不仅是前端,各种职位都是这样 ...

  9. 为什么现在面试都是面试造火箭

    文章首发于个人网站:前端桃园 很多人总是抱怨面试官问一些平时不常用的知识点,比如算法呀,网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝. 但是有没有想过为什么整个前端圈,或者绝大部分面试 ...

最新文章

  1. 原理分析_变色近视眼镜原理分析
  2. JS垃圾回收——和其他语言一样,JavaScript 的 GC 策略也无法避免一个问题:GC 时,停止响应其他操作,这是为了安全考虑...
  3. 怎么样拒绝服务器重新启动?
  4. PMcaff微课堂 | 洋葱淘elya妞,前百度UX Leader:独门创业经验,产品秘籍
  5. 用xshell传输jdk_在JDK 9中将InputStream传输到OutputStream
  6. Java的垃圾回机机制(见过讲得最清楚的)
  7. 在集设浏览学习高水准海报设计,会带给你不一样的灵感!
  8. 简单实现x的n次方pta_数学学霸的解题思路1“降低次方和次元”
  9. sas主板服务器安装系统,自带SAS存储 华硕P6T WS PRO工作站主板
  10. PowerBuilder方式下图像存储功能的研究
  11. Unity3D 场景中图片模糊问题
  12. 阅读Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition(CVPR2020)
  13. 华为最新任免:免去余承东华为云CEO,鸿蒙也有大动作
  14. linux中ln -s 命令详解
  15. 友价商城源代码插件汇总
  16. 什么是单元测试?该怎么做单元测试?
  17. 不求人,手把手教你学会微信WIFI!
  18. 非诚勿扰 11位骗子全是托 愚乐节目 愚弄观众 请勿相信节目内容
  19. CSS中cursor的属性hander和pointer
  20. vue项目中使用trackingjs人脸识别

热门文章

  1. (转)创业需要知道的13句话
  2. 给FlvDownloader加了一个视频预览的功能
  3. 任务管理器taskmgr查看几核
  4. 浏览器在线预览pdf、txt、office文件
  5. 项目需求分析与建议-NABCD模型
  6. python面向编程:类继承、继承案例、单继承下属性查找、super方法
  7. js定时器、高亮修改单元格背景色
  8. 除了盖泡面,kindle还可以帮你提高科研效率
  9. SLAM学习--视觉slam学习教材推荐(附相关技术文档下载链接)
  10. 计算机视觉与深度学习 | ORB特征提取:基于OpenCV+Python(附代码)