谈谈现在前端的面试 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ianva
V2EX    问与答

谈谈现在前端的面试

  •  2
     
  •   ianva 2018-07-20 12:45:41 +08:00 5274 次点击
    这是一个创建于 2654 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    33 条回复    2018-07-20 23:18:52 +08:00
    abmin521
        1
    abmin521  
       2018-07-20 13:30:37 +08:00 via Android
    花个几分钟上网看看就会了的东西到真的没多少必要,但面试官却很在意

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

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

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

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

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

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

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

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

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

    先让别人做项目,尤其是没有精心准备的项目,纯粹是浪费双方的时间。况且别有用心的公司会以面试为幌子使用免费劳动力。所以,做项目可以,给钱!
    ianva
        19
    ianva  
    OP
       2018-07-20 16:35:16 +08:00
    @gaocc 未来前端就会把之前后端的东西都接手掉,毕竟后台要面对多终端,只开发 api 是最高效的办法,所以现在很多后端都做 react,angular 和 vue 去了,而那些传统的前端的切页面的东西也终将被简化,比如 flexbox。react native 现在又提供了跨终端开发的能力,而对于前端来说在这方面切入 native 也没有多大成本,而且现在已经开始,很多大公司已经实践了太多了,如果还抱着以前那些要被遗忘的技术不放,那也是早晚淘汰了。
    但真正重要的不是会用啥 api,框架,会写 css 这种配置文件,而是业务逻辑和布局的理念。
    ianva
        20
    ianva  
    OP
       2018-07-20 16:37:25 +08:00
    @luoway 项目题目可以简单到没有视觉稿,要么就是线框图,很多外企的面试都是这样,这肯定不是跟人家打工,当然了自己是会有一些时间上的投资
    gaocc
        21
    gaocc  
       2018-07-20 16:39:27 +08:00
    是的,受教,看来我的发展方向还可以,尴笑
    swift
        22
    swift  
       2018-07-20 16:40:19 +08:00 via iPhone
    有些东西虽然网上查不到 1 分钟。但 100 个面试者。有一个不需要查就能写出来,你选哪个?
    ianva
        23
    ianva  
    OP
       2018-07-20 16:43:18 +08:00
    @swift 你说的问题在于,为什么问那个网上查询不到 1 分钟就能明白的题去面试呢?从面试者的角度是刷题是有收益的,但对企业来说是不希望看到考刷题而不是靠能力的,当然我写这个帖子很大程度上也是在让大家多去想想下我们如何面试别人
    ersic
        24
    ersic  
       2018-07-20 16:43:58 +08:00
    @mcfog #6 如果像这样要求面试官一样要求自己,很多问题就不是问题了。
    bucky
        25
    bucky  
       2018-07-20 16:50:15 +08:00
    @swift 面试要考察的东西很多,而且哪些是重点首先你要分清,如果你觉得不用查是重要的能力,而且工作后也被证明是很重要的能力,那没错,但是如果这根本就是无关紧要的东西,等这个人进入公司你再后悔?
    YMPreston
        26
    YMPreston  
       2018-07-20 16:54:17 +08:00 via iPhone
    个人认为,大公司自然有能力跟精力去分析一个人的能力,但是小公司如果连基础题都答不上然后说我具备经验,我怎么能知道是不是雷呢,既然是面试,请尊重双方,也许面试官只需要一碗水,但是请用一桶水去准备。
    ianva
        27
    ianva  
    OP
       2018-07-20 16:59:56 +08:00
    @YMPreston 其实因为小公司面试官有可能就是所谓的雷,自己也没有什么能力去面对面试者,这种情况下如果能接受面试双方开放式的相互问答会是什么情况呢,只不过占了一个面试官的位置罢了,还有很多就和上面一位 v 友说的一样 “面试造核弹,入职拧螺丝”,因为这事我自己也办过。
    MarcoQin
        28
    MarcoQin  
       2018-07-20 17:06:42 +08:00
    我觉得作为面试者,面试前做一些准备是很有必要的,无论复习一些东西也好,稍微刷刷题熟练一下手也好。人和人之间要做到互相了解本来就需要大量时间,面试官想要在短时间内判断一个人是否适合作为未来的团队成员,自然不能光凭着感觉来。

    向上面很多人说的所谓“有经验的面试官”这件事情本来就是很难的,每个人看人的眼光经验都是不一样的,达到那种一眼就能看穿你实力的境界这不很难嘛,不能要求所有面试官都达到那样。

    所以,做些准备,若是能让面试官一眼就看出你是有备而来,不会浪费双方的时间,接下来的沟通就会很愉悦了(
    ianva
        29
    ianva  
    OP
       2018-07-20 17:12:30 +08:00
    @MarcoQin 说的对,我那次面试经历也是有问题,因为太相信自己的经验了,1 年多没写代码,这个问题是我自身的问题,但具有普遍性,毕竟基本都会准备面试的,这里讨论的话其实还是面试的问题能不能通过这些问题了解面试者的能力。
    YMPreston
        30
    YMPreston  
       2018-07-20 17:13:03 +08:00 via iPhone
    @ianva 面试官的素质跟能力也是一方面,确实现在也是制造原子弹只要螺丝钉,但是借用 B 站的大佬一句话底子打的不扎实,业务上也许你能做,但是我们要承担你写 bug 的风险。再说,如果任何答案回答网上查一下资料我就会了,是不是我可以理解成你只是代码搬运工呢,而且都有的资料说明其实也不难,记一下也轻松吧。我也是一个写代码的,但是我也有过一天面试七个人过的经历。平心而论,没带任何情绪。
    ianva
        31
    ianva  
    OP
       2018-07-20 17:29:51 +08:00
    @YMPreston 是啊,但我觉得这事情并不值得,我招进来过一个 BAT 里核心部门的资深前端,然后负责对接市场部门了,他确实很有能力啊,我确实觉得浪费了,但其他业务线也饱和准备让他过渡到一个不错的业务上去,让外包顶上,但实际情况是他觉得招来的外包能力不够,是的他能力很强,然后市场这边推广页面理的也很有条理,但是这块业务真不用他做成这样,他还非常负责人不想把这东西就给能力不够的人接受,那还只是个推广 h5 的项目,但结果是什么呢,市场部自己的项目时间规划有问题,然后业务来回变动,导致交付出了问题,市场部老大来我这骂街,还觉得委屈了,跟我说你们开发拿的钱比我都多,弄成这样,我当时就在想人家一个牛校的硕士,BAT 的资深开发,做个市场部页面,做的这么好还被你们给委屈了,结果就是这哥们后面也离职了,这块业务还是给外包了,市场部也没觉得不妥。

    这就是我为啥觉得“面试造核弹,入职拧螺丝”是问题,当然也有问题是在于我,当初就直接决策,这块叫出来,做其他核心业务线去。
    ianva
        32
    ianva  
    OP
       2018-07-20 17:34:20 +08:00
    @YMPreston 当然这至是一个例子,这例子我见太多了,在 BAT 的时候一个部门都负责市场的业务开发去了,那条产品线的前端能力都非常出众,是,搞出一个页面 ps 生成系统,广告配置系统,不过没用啊,大部分还是定制的,还得去开发,一个能力非常好的后端很喜欢前端,在我们团队呆着做项目,后来被调到那边团队,天天切页面,我看着都觉得浪费,这哥们也是没多久离职了。
    swim2sun
        33
    swim2sun  
       2018-07-20 23:18:52 +08:00 via iPhone
    不能同意更多。可能是现在的面试者太多吧,招聘者不知道如何筛选出他们想要的人,只能用这样简单粗暴的方式。面对这种情况时,我的理解是“这公司不是真的想招人”,乐观地说这也给了我们筛选企业的机会。面对这样的企业,不要觉得自己被否定而怀疑自己,继续去寻找真正跟自己匹配的企业吧。这是我的切身体会
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     863 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:41 PVG 06:41 LAX 15:41 JFK 18:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86