一名前端工程师的面试体验和总结

我是一个四年经验的前端工程师,最近在看机会。

一是想了解市场上的用人需求和自身水平是否匹配;二是因为好久没面试过了,想先练练手。

如果有机会拿到合适 Offer 就跳槽,过个好年。

面了大概五六家公司,看看现在都是什么套路,总结一下需要注意的点。

这里只是分享自己的感受,并不是代表我的观点完全的正确。如果有疑问,欢迎在评论区交流,也感谢各位大神的不吝赐教。

写在前面

这篇面试总结没有面试题。

一个是站内已经有很多总结内容了。

二是面试过程并没有问八股文,都是一些场景问题,不太合适单拿出来。

投简历不要花了眼,要反复确认职位的情况。

我使用 boss 直聘求职。

不得不说 boss 的求职匹配系统很厉害。仅挂上去一天,有一大堆的公司发消息邀请简历投递(看着消息通知的小红点心里暗爽了一下)。

外包岗位和正职的比例大概是 2:1。考虑到后续的发展诉求:

  • 要么是大一点的互联网公司,能 多搞点钱 和优秀的人一起共事,开阔技术眼界。而且大厂的抗风险能力强,尤其是在当前外部环境不好的情况下
  • 或者是面向中小型公司,押宝业务和技术方向,向某个细分领域深耕。这种就希望能有较多的空余时间去深入学习基础和业务知识

因此屏蔽了外包岗位招聘所在的公司,投了一波简历。

外包岗位是接触大公司项目的绝好机会,而且相对正式员工来说压力较小(毕竟正式员工有业绩的压力,为了保住业绩,相对来说更容易卷起来)。

刚入行的时候,确实可以考虑应聘外包岗位,但如果想提升技术深度,仅靠业务是很难的。

投了十几家公司,基本上简历都过了,收到确定面试时间的邀请。由于是在职,就约了下班时间交流。

等邀请下来的时候,才发现投的岗位太高了,似乎超出了目前水平的要求。

建议根据你当前的工资,先从低到高逐步投递,否则可能会发现你要补的内容太多了,可能会很焦虑

不过秉着友好交流学习的态度,参加了这些面试,了解了不同面试的风格,摸到了下面这些套路:

自我介绍真的是很重要

所有的公司,第一步都是自我介绍。很建议语言表达能力不是很强的同学(比如我)先写个草稿自己背熟。

有些面试官,可能不会有耐心去深挖你的技术深度。如果你自我介绍不够流畅、没有踩到重点、表达也不太行,面试官会认为你技术其实也不太行(即使你可能只是没有找到合适的语言表达),最后直接 pass 掉你。

自我介绍是对简历上面工作经历和项目经历的概括。所以比如姓名、年龄、学校等简历上写的很清晰的内容,一笔带过就行(可以选择性的直接不说)。

面试官关心的是什么?

  1. 工作年限:根据年限估计你应该达到的水平
  2. 每份工作呆的时间:稳定性
  3. 项目介绍:看你对自己做的事情熟悉程度,判断是自己做的
  4. 做了什么事情?为什么要做这些事情?这些事情有没有挑战性?做这些事情的业务价值和对自身的提升,你在其中学到了什么?

如何介绍项目案例?

  1. 简单介绍项目背景。你可以介绍最开始的需求是什么,项目解决了什么痛点,满足了什么场景。不要一开始就直接说技术点和实现。面试官毕竟也没做过你这个项目,甚至都不了解你所在的领域。如果不介绍业务背景,根本就没办法提问。
  2. 介绍你在项目中的角色定位、承担了那一部分的模块开发、如何处理技术难点与其余部分的对接工作。如果是项目负责人,还需要讲述项目的技术架构、体系和选型、整体设计。
  3. 介绍项目的难度、周期,难度有多大,或者说业务数据、上线流程,或者项目优化点。

总之,不要把自己放在一个纯执行的角色上,要体现出对业务的思考、对技术的取舍。

这里建议看 如何向面试官介绍你的项目 - 掘金 (juejin.cn) 这篇文章,说的很到位了。

准备好常见的手写代码题目

只要不是那种特别头部的大厂,基本上不会有特别难的算法题。毕竟不是校招。所以还是准备一些常用的题目吧。

比如说节流、防抖、手写 Promise、手写一个 url path 解析器、手写一个 new 、深拷贝等。属于那种看了就会的问题。

解题的套路:

这个题有 N 种解法,我先演示一种,相对来说我认为这种解法最好,其他的解法我也给你简单演示一下。

可能这道题你很会,但也得演一下。需要向面试官展示思路和过程。

我的面试经历

面试类型

可以分为以下几种类型:

  1. 根据清单提问型

面试官拿着一个问题清单,询问你的答案,问题内容基本是:

  • 介绍一下 vue 的生命周期
  • vue 的路由有几种?有什么区别
  • vue 的数据传递、事件传递有几种方式?具体是怎么实现的
  • 如何判断一个数据类型
  • 什么是跨域?跨域服务器能收到消息吗?如何解决跨域问题

然后做两道题吧

  • 判断下列表达式的结果
[1, 2] == "1,2"
[] == ![]
[] == true
[] == ""
复制代码
  • 写一个递归打印出 1 + 2 + ... + 100 的结果

你回答之后,面试官会拿小本本记录下答案……

  1. 场景引导型
  • 首先询问如何实现一个单例
  • 如何使用单例进行事件和数据的传递
  • 如果是异步事件,比如说请求一个接口,又该如何传递数据
  • 比如说有一个表格,现在只说是一维表格,光标在表格里面。给出表格的宽度和光标的位置,如何计算光标在第几个表格中
  • 有一个一万行的表格,如何渲染表格中的内容,页面不卡顿
  • 如何实现一个虚拟滚动(虚拟滚动的原理)
  1. 根据简历内容提问,然后做一道手写题,题目不涉及到算法。

面试趋势

值得一提的是,各家公司都会询问你是否有 typescript 的经验,或者说是否掌握过一门强类型的语言。

一些细节

不会就说不会,和面试官多交流,保持一种主动的态度。

每个人都不是全知全能的,有可能你和面试官所在领域和工作背景不匹配,也可能是没太明白面试官表达的含义。不理解的话可以多询问,多沟通。

展示自己的优势就好,介绍之前的经历时没有必要向求职岗位的方向靠。甚至可以通过选择性展示,匹配到其他方向的岗位

头两天看到了 lks 的求职 视频,虽然不是程序员方向,咱们也可能没有那么厉害,但是通过适当的扬长避短,成功调整了最终录用的岗位。

技术栈其实不重要,各大框架之间的内容是相通的

即使岗位要求 React 的相关经验,如果你没做过 React,但是很了解,也可以尝试一下。毕竟目前三大框架同质化的趋势下,实现的原理都是相通的。

据说 React 和 Vue 实现 diff 算法用的是同一个库,虽然我没看过

不要总想着纯搞技术驱动,毕竟技术也是为了解决业务问题、支撑业务而存在的

脱离了业务的技术其实没有存在的必要。就像很多公司搞技术中心、基础建设,但是会脱离业务团队,导致基建不好用。

你不合适,但是你很好

放宽心。虽然可能没有后续的面试了,但这可能只是岗位不合适而已,并不证明你不太行。

猜你喜欢

转载自juejin.im/post/7042729292928647181
今日推荐