非典型面经(二):面试官问的都是我不擅长的问题怎么办?

100 阅读7分钟

前言

面试官在面试的时候会提各种领域的问题,目的是探测到面试者的技术边界,尤其在前端,可能天南海北什么都问,这个是很正常的。

正常的面试官也不会因为某一个刁钻的问题没答上来,而直接放弃候选人的。对面试者来说,能在自己擅长的领域回答,尽可能多地体现自己的能力,才是最有利的。

上一篇文章讲了如何基于练手项目扩充自己的知识储备,提升自己的技术能力,这篇文章接着来讲,怎么把练手项目的思考和积累,有效地在面试中体现出来。

简历也很关键

面试开始之前,面试官一定会看你的简历的,除了帮助你进面以外,好的简历也会帮助你在面试中的表现。如果你的简历里有让面试官感到好奇、或者留下一点印象,面试官往往会很喜欢从这里开始提问,因此简历中里对项目的排布和描述也是可以琢磨的。

简历的格式与内容安排后面会找机会再深入聊下。

music-demo.png 人每天接收的信息 80% 来自视觉,真实的界面获取信息的效率远比文字要高的多,经过仔细打磨的前端体验一定是远比干巴的文字描述要令人印象深刻的。

  • 有把握的项目放在最前面,篇幅放到最大

    这个自然不必说了,篇幅大的项目自然吸睛,没把握的项目就少写点,面试官问也无从问起。

    多人合作的项目,盘清楚你自己负责的部分,如果扮演的角色很边缘,项目比较不一样,且你能够把别人做的部分吃透,也可以展开来写写。

    大部分情况下,尤其是刚进入前端不久的同学,自己做的部分都还是一知半解的情况下,这类项目就一笔带过就好。

  • 技术亮点罗列出来,罗列出来的技术亮点要复盘透彻 从项目角度切入,除了常见的八股文诸如框架原理、三件套的基础掌握之外,还有一些常考察的范畴,也是新手比较少思考的范畴。

    • 工程化
    • 体验优化
      • 性能优化
      • 网络请求优化
    • 安全性
    • 埋点上报
    • 架构
    • ... 以上的话题,其实是从海量的前端技术知识里又拔高了一层,如果面试者能从某一个话题深入进去,有一定的实践积累和技术心得,那对面试官来说就是很亮眼的。

面试过程中

  • 自我介绍

    一般面试的开头我都会让候选人自我介绍一下,这个也不全是例行公事。毕竟搬砖也是很忙的,一般在面试前不会一个字一个字地看一遍简历,在自我介绍的过程中会认真看下简历,筛选下有价值的信息,找一些相关的问题准备正式提问。

    很多同学在自我介绍的时候就是通读一遍简历,也是可以的,尤其你的简历已经认真修改斟酌过的话。

    但其实自我介绍的环节可以进一步筛选你希望让面试官深入聊的话题,忽略一些价值不够的内容,报技能列表这种,着重讲你有亮点的部分,时间尽量控制在两三分钟,让话题的结尾落在你最有优势的技术区域内。

    毕竟很多面试官都比较社恐,会不自觉地顺着你的话头聊下去。

    以性能优化为例,在自我介绍的时候如下叙述:

    “我对 xxx 项目做了性能优化,综合了各种环节,包括加载优化、渲染性能优化、页面卡顿的优化、合理缓存、帧率、CSS 优化等等手段,将页面首屏耗时降低了 50%”

    是不是比:

    “我对 xxx 项目开发了登录、列表、详情页,并做了性能优化。”

    要吸引人的多呢?

  • 基础知识:

    从项目里提问出来的基础题,可比面试官随机从题库里抛出来的问题好预测多了,这也是我一直强调项目要做明白做透彻的原因,这里具体可以参考上一篇文章《非典型面经(一):前端新手简历里的练手项目,到底在练什么?》

  • 开放题

    • 遇到 XXX 问题如何解决?
    • 如何优化XXX?
    • 给到一个XXX需求如何实施 / XXX 项目如何设计?

    面试官在面试时问到这类的开放题,通常是为了探测面试者的知识面边界,同时可以考察面试者的思维灵活度。没有经验的同学往往会被问住,脑海里闪过一千个想法但没有一个停留,显得不知所措,从而放弃回答,这个是很可惜的。

    通常我会有一个常用的思维套路来分析:

    1. 问题/瓶颈是什么
    2. 目标是什么:目标通常就是解决问题/完成功能
    3. 手段有哪些:业界常见的方案有哪些,拉通做一下对比,我的选型考虑是什么,为什么做了最终的选型
    4. 实施有什么困难:在落地的过程中,遇到了什么 Bug/不符合预期的表现,我怎么 debug,最终怎么发现问题,怎么解决,对以后的开发有什么参考价值(不一定要全有,但是肯定越全面,这个问题越有价值)
    5. 成果测量:测量的方式、测量的结果、和处理前的对比(很多同学是没有成果测量的意识的,导致项目里的很多描述都显得非常空洞)

    这一套我称之为面试中真正的八股文,一套可套万物,不过这个对技术积累一样是有一定要求的,前端知识掌握不牢的话能组织这样一套八股文也是比较费劲的。

    插一句题外话,结合本系列的第一篇文章,做项目的过程中要挖掘知识点构建知识图谱,做完项目后要针对前端项目的各种环节进行思考和复盘,同一个项目做一个星期也是做,做三个月也是做,差别就在这里了。

    这里有一个反面案例,我在面试中曾经遇到过面试者针对这类的回答是:

    “我花了三天,在 github issue 和问答网站里找解决方案,发现是依赖版本的问题,然后把这个依赖卸载掉就解决了。”

    我相信这位同学解决这个问题确实用了 3 天,也确实在 issue 和 stackoverflow 里查了各种各样的回答。但是对面试官来说,这种回答就比较尴尬,既体现不出来候选人什么技术水平,又浪费了三分钟面试的时间,所以最好回答是可以落到技术点上。

总结

回到本文的题目,面试官问的都是我不擅长的问题怎么办?

对于前端八股文,无它,唯手熟尔,写熟背熟罢了。

项目问题,我们就从面试前开始做好八手准备,从项目复盘、面试过程中的语言组织、面对不熟悉问题时也尽量进行分析给出思路,综合体现自己的软、硬实力。

下一篇我们还是以音乐播放器为例,实际操作一下,来一场模拟面试,看看这一套一套的思路,能面出什么效果?