面试不可以一刀切,招人也不是考试,不要用死的标准来考人。
面试的目的是了解应聘者的优点、缺点和与工作岗位的匹配度,以及,更重要的是是否适合与团队成员一起工作。
prototype 还是 JavaScript 语言基础的东西,面试者不会,说明他对 JavaScript 并不熟悉。
但是对 JavaScript 不熟悉不代表就不能在其他方面优秀,所以单凭一点,不会立即把一个人给否定掉。
不过不管用不用,最好他还是能把这块补起来,前端还是应该熟悉 JavaScript。
大家相爱相生。
2. 如果招个砌墙的小工,就不要强求人家读建筑学原理。
如果招个高阶的阶位,问这个问题 好象有点掉价?
面试应该搞清楚「为什么」而不是停留在「是什么」。不懂 prototype chain 属于「是什么」,你应该去深挖「为什么」,答案有可能是因为别人已经改用 ES6 class。在知道「为什么」以后你才能结合职位需求分析这个人是否适合。(我已经很久没碰过 prototype,因为在 Facebook 我们觉得 decorator pattern 比继承要好,所以大家看到 React 组件都是一层一层封装上去的但很少做继承。)
此外面试不应该问概念题或太过偏离实际应用的题目,只有实际应用会遇到的题目才能真实反映面试者解决问题的能力。这方面我超喜欢 Facebook 的前端面试题,无论是考 coding 还是 system design 的题目都是基于实际应用场景的。(可惜我不能举例,否则就漏题了。)
As multiple comments suggest that they feel uncomfortable reading Chinese mixed with English, here is the pure English answer for you (believe or not, I actually feel uncomfortable writing in mixed languages either). Enjoy.
A common problem in tech interviews among Chinese company: technical details are overly emphasized, and problem solving skills are highly overlooked.
As a multi-year interviewer worked in Amazon/Microsoft, my experience is, do not ask too many questions covering those tech details when interviewing candidates with 5+ years experience - more specifically, don't ask anything that can easily be googled or found in common docs/wikis. Makes no sense.
Instead, simply provide a real-world problem - can be coding, system design or behavioral question, or whatever that is a "real problem", and focus on how the candidate solves the problem. Try to get an idea of his/her thought process, diving deep/thinking big, and the ability to handle challenges under pressure.
Here's a problem example -
"Design a health QR code system for the entire province. Your design needs to cover both Frontend and Backend. Request type, avg/peak load and other required information are provided. How would you choose proper tech stacks? Draw architecture diagrams and explain your design choices."
And here are some follow-up questions:
"What if the peak traffic increases significantly (i.e. 1000 times)?"
"What is the bottleneck of your design from both availability and performance perspective? How would you solve it?"
"If you need to maintain same performance with 30% budget cut, how would you modify the system?"
"Are there any other improvements can you think of, if there's no budget limit?"
The candidate needs to complete everything within 1 hour, whiteboard drawing, without diving too deep into tech details.
PS: I was asked similar type of questions when I first interviewed with Azure. After being hired, I realized that the question is actually the prototype of my manager's pet project. So I took it over and built it myself.
I personally believe that this type of questions is more capable of evaluating the candidate's potential in multiple aspects within 1 hour, and way better than asking those questions that is too trivial and can easily be googled - candidates that are nominated by their problem solving skills are able to grab them later in their career without a hitch.
原答案:
国内搞技术面试的普遍的一个问题:过度重视technical details,而严重轻视problem solving skills
在Amazon和Microsoft做了n年面试官的经验告诉我,面试那些有5年以上工作经验的人,不要问太具体的技术细节,尤其是那种查查文档或者随便一google就可以知道的,没有意义
扔给他一个问题,看他现场怎么解决就行了,可以是coding,可以是system design,甚至还可以是behavior,重点在于,从他解决一个问题的思路和过程,看他的思考广度和深度,以及做事的风格
举个国内人比较容易理解的例子,要求设计一个面向全省的健康码系统,前后端都需要包含,大致需求(request类型和频率,avg和peak load等等)都给出,问:你会如何选择tech stack,说明原因,然后画出architecture diagram并解释每个workflow的流程。
然后扩展问题可以是:(1)如果突然peak traffic增加1000倍你有什么应对措施;(2)你的设计里面bottleneck是哪里,从availability和performance两方面分析,以及有没有什么办法解决?(3)如果现在告诉你预算不够,需要砍掉30%预算保持基本相同的performance,你会选择改变哪些部分?为什么?(4)如果不考虑预算限制,这个系统你还有什么改进的地方?
上述所有内容需要在一个小时内完成,whiteboard drawing,不需要过度深入tech details
顺便,我当时面Azure,就被问到过类似这样的题目,进组了我才发现那个问题的原型是老板想做但没resource的一个project,后来我就把这个project接过来当自己的pet project慢慢做了
这种问题能够非常综合地考察candidate能力,一个小时可以问出非常多的干货,远远好于问一大堆无聊的,google查一下就能知道的技术细节,从这种题目中筛选出来的人,以后再学习这些东西对他们来说简直易如反掌
有些人说,这样的面试是想盗用求职者的点子。
有以上想法的人,你的话充分体现了你的见识水平——首先,你大概从来没有在一个制度很正规的企业工作过,其次,你严重低估了这些世界级大厂的staff/principal engineer的水平
我们每次面试前,每个人要分配面试的内容,考察的方面,等等,如果面试的职位很重要,还要开Pre-brief,老板,Recruiter和Bar-Raiser会再三确认每个人准备的面试题和考察的方向是否吻合,以及复杂度和难度适不适合这个职位,以及你准备的答案是什么,是不是合理等等。但凡有自己想不出来准备盗用求职者的点子的,在这一步就会被卡掉(因为Bar Raiser一看你准备的答案就觉得你在胡来),搞不好还会被从这场的面试官拿掉,最差甚至可能取消当面试官的资格,直接回炉重新培训
每次面试后的debrief之前,要写一个完整的面试报告,报告是有一个固定模板的,每个考察的方面是否达到要求,为什么达到,都需要列举完整的证据,包括代码片段,设计样例等等。这个东西是不可能编的,因为如果你编得太离谱,debrief的时候跟其他几个面试官一对,发现求职者其他几轮表现和你这轮差太远,你这一次面试的结果就直接作废了
然后关于system design类的题目,通常是两大类,一类是比较典型的模型,这种用来考察求职者是否有基本的经验,以及考虑问题是否全面,准备是否到位;另一类是组里现成的项目,或者已经过了design review正在等人手开始做的,这种一般用来面试senior及以上级别的职位,需要一定的创造力。但是,毕竟一场面试只有1个小时,1个小时内能想到的东西,离那种由principal engineer牵头,下面几个senior搞了几个星期,返工n轮,最后才终于拿出来的design,差得不是一星半点。如果有人一个小时能拿出来的东西能够超过一群十多年经验的人搞了n个星期才搞出来的东西,那他应该去面试一个国际级大公司的首席架构,而不是来面一个普通的senior engineer
我是来抬杠的,作为一个超过5年的全栈,至少自己是这么认为的,我还真不懂你问的这些,啥闭包,啥vue实现原理一窍不通。但要说写代码,确实看了那些开源项目只能说一句靠看不懂,大神呀。问题是要说平时你用的到的业务,我也敢说至少70%能做到的我也能做到,还能做的更好。
从一个中小企业来说,也招过不少人,招来的专业前端的,或者是说朋友呆过的一些规模大一点的公司,其实很多人的技术也就那样。包括一些带过的人,人家一样能进阿里、饿了么这样的大公司(说这个的意思是一些你认为能进大厂就是很牛的人,其实真的未必有啥差距,大多数的时候跟人的选择有关系,只要你别太差,只要你就是一心要进大厂,总会有机会的,大厂也需要人做基础的活)。
不会这些知识就等于干不了活么,你要问问自己招别人来干嘛的?你要是想招一个架构回来,能像饿了么那样给开发一套组件库那你就尽情的往深了问,如果你只是要招个人回来用饿了么写业务,你不如多问问他对业务的理解,对组件封装的理解,常用到的优化技巧,一些常用的第三方组件熟不熟悉等等。只要能用、会用,未必就比你招的那些懂原理弱,学了这么多年东西,还没有真正深入了解过原理,这是弱点,但也造成了另一种极端——实用。有些人学东西喜欢拿着书慢慢啃,有些人喜欢别跟我扯这些理论,我没空,上手干它就是了。
现在企业招人,一方面感觉招不到合适的,一方面真有合适的人家也未必看的上你的工资。咱还是实用一些,有多少钱干多少事。你都是招人的Leader了,全局方向难道还要别人来帮你搞定,那公司要你来干嘛,真是公司钱多烧的么,招一个用着顺手的就行,啥原理不原理的最好别懂,因为都懂了绝对也看不上你这公司了,我都懂这些原理了我去阿里做架构不爽么。
照猫画虎,你定好项目框架,下属能在你的规范下接着实现其它的逻辑,他们实现的合不合理,你该怎么优化这些远比这个人懂不懂啥原理强的多,如果能招到一个经常能给你提点优化建议并且有能力把这个优化实现的人,那绝对捡到宝了。
说这个的意思不是说让个人以后就不要了解原理,而是说作为招人这个事你真没有必要拿原理出来说事。脱离场景讲原理就是不讲道理,你不如问个现实的某种情况下让应聘的来处理看看他是怎么应用这个场景的。
今天专门了解了一下闭包,其实这个概念在今天之前让我讲原理我也很懵逼,但之前一直也有在用,比如设计一些插件的时候,从java转过来的特别能理解这个现象,面向对象编程,默认就会考虑属于对象的属性的安全问题,防止被其它地方修改需要对外提供操作属性的方法。这就是说一直有用,但真不一定能入的了某些面试官的法眼。如果你让我给你设计一个功能插件我会,但你要让我给你讲闭包的原理我可能都不清楚原来这个东西就是闭包。
某五常核大国一个月内叫嚣核威慑四次。作为领国的我们p也没放一个。
日本跟他有领土纠纷也算领国之一,又没核武器。
那日本人咋整?总要找个大腿抱的吧。
抱我们?还是抱那个占着北方四岛的核大国?
还是抱美帝?
要是按我们外交部的说辞,那日本人只有一条路了,
自己造核武器。
这个作为中国愿意看到吗?
wjb的人现在都是整网红路线不整专业了么。
这个故事里面,没有一个人是正确的。
这个问题下面,每个人都在讨论对错,互相甩锅。
然而这个社会上,没有任何一个角色的人,可以帮到这个家庭。
没有人可以帮助孩子,也没有人可以帮助父母。
人们反对语言暴力,反对肢体暴力,反对禁闭管教,
人们几乎反对所有“极端方案”,却没有人任何人给出正确的解决方案。
这个案例里,父母的行为,已经做到了一个正常父母,甚至高素质父母能做到的一切。这个故事在一次“长记性”的暴力殴打之后得到了控制。
然而如果这样都控制不住呢?
比如打过之后,依然没用,女儿开始逃学,抽烟,夜不归宿;家里人没有办法,把她锁在家里关禁闭,她用床单当绳索从3楼爬出去,离家出走几天不回家。家长该怎么办?
这其实不是一个假设,
这是豫章书院事件中,那个“只是有点早恋”的当事人,在接受我的采访时口诉的故事。
实际上不管是送去杨永信还是送去豫章的孩子,他们的故事和这个新闻都类似,甚至有过之而不及。
在从爱的感动,到灵魂交流,再到科学教育法,最后到心理咨询师;
当“正确”的方法都无效之后,还有谁能帮助这些人?
这些人是少数,可能只有千分之一;
同时也不是少数,千万人口的城市,儿童近百万,千分之一就意味着数千家庭需要面对这种极端情况。
在豫章书院之后,我也在试图寻找这件事的答案。
我对话了豫章书院当事人sona的心理咨询师,她告诉我sona不该送去那样的地方,但同时也认为有些人需要在那里管教。
我找了浙大的儿童心理学教授,他告诉我心理辅导和更好的教育可以解决大部分问题,但是解决不了所有问题。我们的讨论中,出现“驯服人类的方法”这样极限的闭门话题。
一位在工读学校工作了14年的高级教师,他给出的答案更令我惊悚。靠”管“能解决的问题不会送来工读学校。工读学校的作用是把这帮人关到18岁,等他们出去了就能判刑了。
这段时间我看了大量教育学的书籍。但我发现,整个社会对正常儿童的教育信息非常丰富;对于异常儿童和家庭的帮助方案近乎于玄学;而对极端状况的研究,几乎是一片空白。
回到主题,
如何看待这个问题?
这件事的背后,是整个社会对叛逆少年研究和帮助的空白。我们有海量的关于对错的讨论,有海量政治正确的讨论,却没有任何一个方案禁得起“如果这样做无效呢?”的反问。
父母无处求助,孩子无处管教。声称能给出帮助方案的机构,全部诉诸暴力而被网友围剿。
如果学术上不解决这个问题,社会角色不能良好的补位,这样的悲剧永远不会是最后一次。
而这个问题下,现在所有的争论其实都毫无意义。