我是一个四年经验的前端工程师,最近在看机会。
一是想了解市场上的用人需求和自身水平是否匹配;二是因为好久没面试过了,想先练练手。
如果有机会拿到合适 Offer 就跳槽,过个好年。
面了大概五六家公司,看看现在都是什么套路,总结一下需要注意的点。
这里只是分享自己的感受,并不是代表我的观点完全的正确。如果有疑问,欢迎在评论区交流,也感谢各位大神的不吝赐教。
写在前面
这篇面试总结没有面试题。
一个是站内已经有很多总结内容了。
二是面试过程并没有问八股文,都是一些场景问题,不太合适单拿出来。
投简历不要花了眼,要反复确认职位的情况。
我使用 boss 直聘求职。
不得不说 boss 的求职匹配系统很厉害。仅挂上去一天,有一大堆的公司发消息邀请简历投递(看着消息通知的小红点心里暗爽了一下)。
外包岗位和正职的比例大概是 2:1。考虑到后续的发展诉求:
- 要么是大一点的互联网公司,能
多搞点钱和优秀的人一起共事,开阔技术眼界。而且大厂的抗风险能力强,尤其是在当前外部环境不好的情况下- 或者是面向中小型公司,押宝业务和技术方向,向某个细分领域深耕。这种就希望能有较多的空余时间去深入学习基础和业务知识
因此屏蔽了外包岗位招聘所在的公司,投了一波简历。
外包岗位是接触大公司项目的绝好机会,而且相对正式员工来说压力较小(毕竟正式员工有业绩的压力,为了保住业绩,相对来说更容易卷起来)。
刚入行的时候,确实可以考虑应聘外包岗位,但如果想提升技术深度,仅靠业务是很难的。
投了十几家公司,基本上简历都过了,收到确定面试时间的邀请。由于是在职,就约了下班时间交流。
等邀请下来的时候,才发现投的岗位太高了,似乎超出了目前水平的要求。
建议根据你当前的工资,先从低到高逐步投递,否则可能会发现你要补的内容太多了,可能会很焦虑
不过秉着友好交流学习的态度,参加了这些面试,了解了不同面试的风格,摸到了下面这些套路:
自我介绍真的是很重要
所有的公司,第一步都是自我介绍。很建议语言表达能力不是很强的同学(比如我)先写个草稿自己背熟。
有些面试官,可能不会有耐心去深挖你的技术深度。如果你自我介绍不够流畅、没有踩到重点、表达也不太行,面试官会认为你技术其实也不太行(即使你可能只是没有找到合适的语言表达),最后直接 pass 掉你。
自我介绍是对简历上面工作经历和项目经历的概括。所以比如姓名、年龄、学校等简历上写的很清晰的内容,一笔带过就行(可以选择性的直接不说)。
面试官关心的是什么?
- 工作年限:根据年限估计你应该达到的水平
- 每份工作呆的时间:稳定性
- 项目介绍:看你对自己做的事情熟悉程度,判断是自己做的
- 做了什么事情?为什么要做这些事情?这些事情有没有挑战性?做这些事情的业务价值和对自身的提升,你在其中学到了什么?
如何介绍项目案例?
- 简单介绍项目背景。你可以介绍最开始的需求是什么,项目解决了什么痛点,满足了什么场景。不要一开始就直接说技术点和实现。面试官毕竟也没做过你这个项目,甚至都不了解你所在的领域。如果不介绍业务背景,根本就没办法提问。
- 介绍你在项目中的角色定位、承担了那一部分的模块开发、如何处理技术难点与其余部分的对接工作。如果是项目负责人,还需要讲述项目的技术架构、体系和选型、整体设计。
- 介绍项目的难度、周期,难度有多大,或者说业务数据、上线流程,或者项目优化点。
总之,不要把自己放在一个纯执行的角色上,要体现出对业务的思考、对技术的取舍。
这里建议看 如何向面试官介绍你的项目 - 掘金 (juejin.cn) 这篇文章,说的很到位了。
准备好常见的手写代码题目
只要不是那种特别头部的大厂,基本上不会有特别难的算法题。毕竟不是校招。所以还是准备一些常用的题目吧。
比如说节流、防抖、手写 Promise、手写一个 url path 解析器、手写一个 new 、深拷贝等。属于那种看了就会的问题。
解题的套路:
这个题有 N 种解法,我先演示一种,相对来说我认为这种解法最好,其他的解法我也给你简单演示一下。
可能这道题你很会,但也得演一下。需要向面试官展示思路和过程。
我的面试经历
面试类型
可以分为以下几种类型:
- 根据清单提问型
面试官拿着一个问题清单,询问你的答案,问题内容基本是:
- 介绍一下 vue 的生命周期
- vue 的路由有几种?有什么区别
- vue 的数据传递、事件传递有几种方式?具体是怎么实现的
- 如何判断一个数据类型
- 什么是跨域?跨域服务器能收到消息吗?如何解决跨域问题
然后做两道题吧
- 判断下列表达式的结果
[1, 2] == "1,2"
[] == ![]
[] == true
[] == ""
复制代码
- 写一个递归打印出 1 + 2 + ... + 100 的结果
你回答之后,面试官会拿小本本记录下答案……
- 场景引导型
- 首先询问如何实现一个单例
- 如何使用单例进行事件和数据的传递
- 如果是异步事件,比如说请求一个接口,又该如何传递数据
- 比如说有一个表格,现在只说是一维表格,光标在表格里面。给出表格的宽度和光标的位置,如何计算光标在第几个表格中
- 有一个一万行的表格,如何渲染表格中的内容,页面不卡顿
- 如何实现一个虚拟滚动(虚拟滚动的原理)
- 根据简历内容提问,然后做一道手写题,题目不涉及到算法。
面试趋势
值得一提的是,各家公司都会询问你是否有 typescript 的经验,或者说是否掌握过一门强类型的语言。
一些细节
不会就说不会,和面试官多交流,保持一种主动的态度。
每个人都不是全知全能的,有可能你和面试官所在领域和工作背景不匹配,也可能是没太明白面试官表达的含义。不理解的话可以多询问,多沟通。
展示自己的优势就好,介绍之前的经历时没有必要向求职岗位的方向靠。甚至可以通过选择性展示,匹配到其他方向的岗位
头两天看到了 lks 的求职 视频,虽然不是程序员方向,咱们也可能没有那么厉害,但是通过适当的扬长避短,成功调整了最终录用的岗位。
技术栈其实不重要,各大框架之间的内容是相通的
即使岗位要求 React 的相关经验,如果你没做过 React,但是很了解,也可以尝试一下。毕竟目前三大框架同质化的趋势下,实现的原理都是相通的。
据说 React 和 Vue 实现 diff 算法用的是同一个库,虽然我没看过
不要总想着纯搞技术驱动,毕竟技术也是为了解决业务问题、支撑业务而存在的
脱离了业务的技术其实没有存在的必要。就像很多公司搞技术中心、基础建设,但是会脱离业务团队,导致基建不好用。
你不合适,但是你很好
放宽心。虽然可能没有后续的面试了,但这可能只是岗位不合适而已,并不证明你不太行。