谈谈现在前端的面试

2018-07-20 12:45:41 +08:00
 ianva

有帖子在聊现在的前端面试,所以想开帖聊聊,最近开始准备面试,所以还是有感触。前几天面试一个远程职位,因为之前休息了一年,没写什么代码,但觉得自己毕竟有这么年的经验了,也没做任何的准备,结果是确实什么都记不起来了,问到的东西只能答个模糊,比如 angular 怎么操作 dom 的我都记不得了,写了 3,4 年的 angular 代码,一年没写代码,没复习也什么不记得了,正常下来我的感觉自己都被当成骗子了,简历上的和答的出的差太多,问个闭包和 this 我也没说出啥特别的来,但毕竟自己写过库,和实现过 mixin, aop 的 class,读过 sicp,写过 lisp 的,整个面下来感觉啥都不懂的混子了,但其实整个面试下来所有问题提前看看,刷下面试题有个了解也很轻松的就过,但你说能考察出什么能力来,真没有。

另外一个体验是外企的公司,他们的做法很好,先给个题目,让做一个小项目,把需求,和要求用到的技术都列好,这我就很轻松的做了,因为借着项目顺手就复习了一遍,把新技术也顺手学学就用上了。

所以说很多时候面试其实很多时候都是只能谈到一些概念,一些技术名词,还有一些新的 api 这些哪怕是没用过,花个几分钟上网看看就会了的东西到真的没多少比要,但面试官却很在意,现在我也有感触了因为以前自己面试别人其实也是差不多。

先让别人做项目我到觉得是个很好的办法,能了解别人的编码习惯,能了解别人解决问题的思路,能了解搭建项目的思路,比如很多库和框架,那怕是没用过,其实如果项目里能轻松上手,还有自己的独特见解,那也能力很好,而这些东西其实很多时候口头面试是无法了解的,更别提刷题的了。

另一方面关于新技术的,这个时代确实是,这个时代就是这样原生的意义也没有这么大,因为现在已经不需要操作 dom 了,而且现在前端基本接手了后端的很大一部分工作,后端只用提供 api 就可以了,其实这个时代更需要的是了解业务层,和处理业务层的复杂的逻辑,理清复杂的状态的能力了,当然这个也和公司的目标有关系。所以自己也有感慨,这么多年的前端的经历都是一些概念性的被淘汰,一些 hack 的东西被淘汰的过程,从 ie6 那些 haslayout 的问题,到现在的 dom 都不太用自己操作了,api,hack 这些东西真的没有这么多用出,我看有面试题谈到 css 的 selector,之前做小程序有感触,一共就没给几个 selecotor 的规则支持,还不是能开发的水起风生的,这些东西是解决开发效率的问题,学习估计也就是查询一下 css 属性的时间一分钟都用不了,这些真的不是重要的的问题。

4703 次点击
所在节点    问与答
33 条回复
abmin521
2018-07-20 13:30:37 +08:00
花个几分钟上网看看就会了的东西到真的没多少必要,但面试官却很在意

当然你不能一直说这个需要我查查,面试和考试一样,不完全给定范围的背诵,也就是造飞机
Egg
2018-07-20 13:35:31 +08:00
所以很多面向搜索引擎写代码的就很头疼。。。因为太多了实在记不住啊(平时又忙),只有思路了。
当然这些话也不能说。
ianva
2018-07-20 13:39:43 +08:00
@abmin521 其实讨论的不是这个,因为基础的自然是要记住,但是它不代表能力,知道不代表多强,不知道也只能说没有关注这一个点,但写代码是编程能力不是 api 调用能力,css 这个只能算是个配置,当然布局的理念是重要的
chechengpeng
2018-07-20 13:47:16 +08:00
站在面试者的角度去考虑一下,现在面试前端的那么多人,需要这些基础的知识考察去过滤一些人员。不过你要是去 BAT 这样的大厂去面,应该不会遇到这样的情况吧。像我们这些小公司,很难的面试官也不会啊,所以只能问些简单的咯
ianva
2018-07-20 13:53:51 +08:00
@chechengpeng 在 BAT 呆过几年,也作为面试官面过好多人面试别人的方式也是类似,现在会想起来有一些其实有些人是不错,其实这个也是我在面试官角度的一个反思
mcfog
2018-07-20 14:01:41 +08:00
考察能力,而非知识
考察经验,而非经历
试探对方能做什么,能力边界在哪里,是否能够突破,而不是遍历对方不能做什么,在能力边界八丈远的地方刁难对方

我觉得面试官不好当的一个很大的因素在于,作为面试官太难得到对面试质量本身的反馈了,面试和招人本身频率就低,入职与否,入职后表现和面试本身的质量相关性不高(除非入职后发现是个雷,那很明显是面试需要改进),更别说反向来说,筛掉的人是不是有面试不合理导致的误筛几乎不可能得知,要改进提高面试能力,更多只能靠自己 YY
ianva
2018-07-20 14:25:03 +08:00
@mcfog 说的真好,作为面试官的素质和经验很重要,另外有些东西其实只是聊不实际操作还是看的出能力来的,比如有些人就是表达能力差一些。

所以还是觉得,如果公司选定了,然后付费让跟着现有项目做一点东西出来效果可能会更好,要么就是小项目作为题目
jun0205
2018-07-20 14:51:12 +08:00
现在的面试不管你什么经验,写过什么项目,可能面试的人都没具体去了解,就让先回答一边你需要刷题之后才能回答的问题。

感觉一个做技术的面试官,如果认真的去看了简历,之后再随便聊聊就知道水平了。基础知识根本不是必须要去问的,特别是工作好多年的。

曾经遇到过一个非常爽快的面试官,外国人,40 多岁还在写代码做大数据,之前提前发了简历过去,后来见面只问了你会哪些语言,用来做过什么项目,做最大的项目是什么,然后再聊下现在对技术的一些看法。最后在问你一些没有接触的技术,但需要用,并会直接告诉你很简单,看看文档就会了,到时候需要快速掌握。

面试官应该要知道自己需要的是能做什么事的人,不是说我需要的是会做都这几道题的人。如果能根据技术点匹配度和自学能力,在根据接触新的技术的程度,基本就可以决定了。

很多人能够接受自己在内部可以快速学习新技术和语言,却不能接受面试的人可以这样。

现在不管是大公司还是小公司,都是“面试造核弹,入职拧螺丝”。到最后就是只要刷好题,吹的厉害点,就进去了,进去后也就做那点事。
ianva
2018-07-20 14:56:32 +08:00
@jun0205 很多时候做的事情和要求的技术还没有关系,当然从另一个角度说,公司需要的很多时候又不是你有多么高的技术,而是面对不同项目的交付能力
learnshare
2018-07-20 15:05:37 +08:00
多数面试不注重与求职者沟通交流,只是简单地设一个门槛,看不到每个人的经验和能力
meetocean
2018-07-20 15:07:56 +08:00
爱因斯坦说过,想象力比知识重要。换成升级环境,“自学能力”与“动手能力”比记忆重要。而大多数应用开发,重在动手能力,或者说实战能力,不是考试。记忆只是类似于字典的功能,不会运用知识,知识再多也是字典。搜索引擎能解决的问题那不是问题。

考试式的面试就是考的记忆力,而开发和前端都是需要实战能力。所以,面试比较好的办法就是做个实际的简短项目。
lingo
2018-07-20 15:17:42 +08:00
前端有日新月异的技术更迭,又有比较长的工具链,涉及的东西又特别杂,DOM、BOM 对象什么的,常用的也就那些。
一被问就有一种啥都不会的感觉。
就像突然要用纯原生写一个 ajax,我真没法保证一次写成跑通。
更不用说 js 语言的一大堆奇怪特性,这个等于那个又怎么不等于这个。。。工作中这么写不给打死。。。
函数的几种调用方法,call、apply 对 this 值得影响,__proto__, prototype 什么的,了解,理解,但我真用的不多。
也是心累。
ianva
2018-07-20 15:45:15 +08:00
@lingo 都用 fetch 了要什么原生 ajax,这种问题过时多少年了 XMLHttpRequest IE10 就支持。__proto__ 是 firefox 的私有属性,其他浏览器也无法显示使用,所以这种 api 类的问题真的是没有价值
ianva
2018-07-20 15:50:52 +08:00
还有打包工具,比如 webpack 配置,确实现在这东西越来越繁杂了,把文档看一遍也很费功夫,很多时候都是构建项目的时候,发现现有配置无法满足自己的思路了,然后去找如何添加功能,插件,等等,这么多属性,配置,参数,插件,更替版本时不时还要改改,要不网上有文章讽刺,要不要有一个岗位叫 webpack 配置工程师。
这类东西如果面试问那就很没意思了,且不说 webpack 自身的设计有多么不合理,未来指不定那天就淘汰了。
lingo
2018-07-20 16:12:21 +08:00
额。。。__proto__的确是非标准的。。但是不是其他浏览器无法显示使用。。。而是其他浏览器也基本支持了。
我说这些的意思不是我要拿这些问人。而是我怕被问这些。
ianva
2018-07-20 16:21:08 +08:00
@lingo 是的这类东西讨论都是没有意义的,比如那个帖子里问题,变量提升,这其实最多起一个声明的作用,但实际上这些东西都用不到我们自己手动优化 uglifyjs 都会帮我们在打包的时候做好,而且还不止这一点会这么做,所以在这个层面的东西都应该放在编译打包阶段做掉的,而不是手动做什么事,这类的问题就更没有什么可面试的了。
gaocc
2018-07-20 16:25:39 +08:00
现在新人比较多,比如我这种不知不觉成了低级全栈的 java 开发,现在也要用 vue 来写前端,当然主要是处理业务逻辑。后端只是用 webservice 来处理一些安全上的问题,csrf 等等。
一开始开发就写页面,html css js 纯朴的不行,然后用 jquery,然后知道了 bootstrap 原来样式基本都不用自己写了,然后知道 vue 和 ES6 原来 js 代码可以这样写,一步步被大牛升级,包装,开发越来越傻瓜式咯,开心又忧愁
luoway
2018-07-20 16:34:51 +08:00
两年前校招那会儿,给搜狐投过 Web 前端简历,就收到邮件发个网站的截图,让代码实现一边。
花了几个小时,从图上量像素,照图敲文字,总算是敲出和截图差不多样子的页面了,发回去,没回复了。

先让别人做项目,尤其是没有精心准备的项目,纯粹是浪费双方的时间。况且别有用心的公司会以面试为幌子使用免费劳动力。所以,做项目可以,给钱!
ianva
2018-07-20 16:35:16 +08:00
@gaocc 未来前端就会把之前后端的东西都接手掉,毕竟后台要面对多终端,只开发 api 是最高效的办法,所以现在很多后端都做 react,angular 和 vue 去了,而那些传统的前端的切页面的东西也终将被简化,比如 flexbox。react native 现在又提供了跨终端开发的能力,而对于前端来说在这方面切入 native 也没有多大成本,而且现在已经开始,很多大公司已经实践了太多了,如果还抱着以前那些要被遗忘的技术不放,那也是早晚淘汰了。
但真正重要的不是会用啥 api,框架,会写 css 这种配置文件,而是业务逻辑和布局的理念。
ianva
2018-07-20 16:37:25 +08:00
@luoway 项目题目可以简单到没有视觉稿,要么就是线框图,很多外企的面试都是这样,这肯定不是跟人家打工,当然了自己是会有一些时间上的投资

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/472629

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX