我现在想换个工作,所以要准备面试,但是如何准备还没有完全想好。这里记录一下我想到的面试可能包含的内容。
面试应该分几个部分。首先是「基础知识点」的考察,这一步是必须的,来验验这个人是能否完成基本的编码工作,这步表现的可以的话应该能拿最低薪水。然后会「聊项目」,这步需要了解在项目中承担了哪些工作,在团队协作中扮演什么角色12,如果发现你的能力比较工资会多一些。最后是些人事相关的「非技术问题」,比如期望薪资、福利待遇、为什么离职等等。这几部分又该如何准备呢?
基础知识 #
基础知识可以分为几个部分:语言、框架/库、算法。这些网上都有很多资料,需要筛选出高质量的内容。
我打算现在 Github 上找到那个 最著名的前端面试题库,写一个博客记录我的回答。基础搞定以后要复习 React/Vue 原理,主要是「虚拟DOM」「Diff算法」「异步渲染」「Hook原理」,还有一些常用的 API 。另外有些浏览器相关的,比如重绘、缓存、CORS等。准备算法我要继续看《算法》这本书,掌握几个常用常考的算法。
这个过程中遇到的所有知识,把不会的记录到博客中,会的也要重新整理博客。这些博客像「错题本」一样用来巩固知识。
聊项目 #
这里需要仔细回想你在团队协作中扮演的角色。只是现实功能的话,就要对相关的技术熟一些。如果做了些代码设计工作,可能需要聊一下思路,遇到的问题等等。如果除了完成功能开发外还有其他贡献。比如发现A问题,你开发了B工具解决它,提高了工作效率/代码质量。发现了C问题,重新设计了D代码,将C问题重构/优化。或者为团队/公司解决了什么难题、帮助同事解决了什么问题。
这些工作都能体现你能力的高低,要「仔细」地想出来,并组织语言准备讲给面试官听。
拿我来说。我开发过工具提高工作效率,规范 Git 的使用方式。为项目补充文档,优化旧代码降低复杂度,设计组件优化代码,设计新的架构替换旧架构降低复杂度。帮助同事设计组件。为团队解决若干技术难题。制定并代码规范提高代码可读性,降低复杂度。
非技术问题 #
最重要的是薪资,如果前面聊的顺利,这里可以多说一点,因为公司一般都会还价。其他福利也很重要,有没有年终奖/项目奖金,会写在合同里吗,公积金交多少。
-
角色大概可以分为「初中高级」。承担的工作如果都是「实现xx功能」之类的,大概是初级的水平;如果功能、模块、组件这些能自己设计,大概能算中级水平;再高级点的工作,指导别人工作,搞一些工具、组件、方法提高工作效率,解决难题,这就算是高级了。
https://twitter.com/haoel/status/1253910100668022784?s=20 ↩︎ -
初级:在给出指导和具体实施细节后,能独立按时按量(数量和质量)完成工作。
中级:不用指导和具体实施细节,能独立的按时按量(数量和质量)完成工作。
高级:解难题(能解决业务或技术难题),传帮带(能指导培养初中级人员),标准化(能沉淀出可复制或可复用的方法论或工作方式,提高生产效率) ↩︎