前端面试 | 青训营笔记

334 阅读8分钟

前端面试分享 | 青训营笔记

这是我在青训营的最后一次班会中老师分享的面试心得,总结一下方便我自己学习。

面试是什么

面试的定义:通过一系列的沟通,引导与代码考核的过程,面试官挖掘候选人的能力,潜力,确认候选人是否与目标团队匹配,决定其是否予以录用的过程,而非单纯地考倒对方。

换个简单的说法,面试人上是否满面试公司的对人员能力的需求,是否能够满足我这个公司所招岗位应该达到的能力需求,以及一些未来潜在的能力,比如总所周知的校招会比社招要来的更简单一点,因为校招看中的是我们的个人潜力,社招看重的是你工作的能力,所以搞好自身的能力以及不断学习才是·正确的,以上属于个人看法。

面试准备

面试前,面试官一般提前看到的是候选人的简历,整体简历会给面试官一个大致印象,更好地考察候选人的能力,一份优秀的简历是重要的,最好就是根据职业来提供自身的优势,不要提及其他与该职业不相关的事,简历要清晰、亮点突出,简明扼要,具体内容看后面的面试准备。

考察维度

专业能力项目能力算法和编码能力综合素质能力
计算机基本原理,操作系统,网络,设计模式,前端领域知识等系统设计,技术方案,流程控制,难点解决编程题的高效实现,前端类编码题,编码风格,思路等性格 ,沟通方式,学习能力,主动性,责任心等

image.png

前端专业知识考察

内容比重:HTML 10-15%,CSS 20-30%,JavaScript 50%以上。

掌握程度
  • 了解:应用基础知识完成常规业务开发,对一些馋鬼的Bug能够有解决能力。
  • 熟练:了解各个基础场景面临一些坑,并且针对语言特性有一些应对方案。
  • 掌握:理解语言底层的运行环境和运行原理,能够根据底层原理解决问题。
简要考纲
JavaScript
  • 数据类型、检测方法、转换方式
  • 函数和类,继承、定义提升、类的特性、闭包
  • 流程控制,callback、Promise
  • 数据结构,数组、对象、装箱等
  • 网络操作,xhr/fetch、tcp、https
  • DOM、BOM
  • 正则、JSON
CSS
  • 选择器(伪类、伪元素)
  • 盒模型,BFC
  • position、flex、transition、animation
  • 常用技巧,样式标准化、清除浮动、响应式设计、布局实现
  • 编译器,sass/less/postcss
进阶知识
  • 浏览器渲染机制、存储能力等
  • 性能
  • 安全

项目与系统设计

基本方法论
  • 项目是什么,做了什么,怎么做的,收益是什么,是否可以说清楚?
  • 围绕项目中使用到的基础知识及进行考察,比如
  1. 框架 | 库
  2. 工程化
  3. 其他项目核心工具 -项目中的不足和有坏蛋,是否可以更优处理?
评价标准
基本要求
  • 能清晰地描述项目的背景和功能点、包括技术方案
  • 熟悉项目中的框架和库的使用方式
  • 能够使用合适的工程化方案解决工程化能力
进阶要求
  • 了解项目对应行业的成熟解决方案,知道为什么用
  • 项目如果足够复杂,考虑做了哪些优化,解决流程或者效率问题
加分项
  • 能够把项目中的东西做好足够的封装并提供给外部使用
  • 能够hold住整体的技术方案,并且具备协同能力
  • 对业务理解透彻,能够利用技术对业务产生价值
  • 对框架和库理解透彻,能够基于项目特性提供更好的工具
系统设计
举例
  • 设计一个组件库?
  • 设计一个文件上传系统?
  • 设计一个登录框,或者一个登录系统?
  • 设计一个联动的表单系统?
  • 设计一个功能完善的搜索组件?
基本要求
  • 整体思路比较清晰,能够正常work
  • 具备良好的健壮性和基本的可扩展性
进阶要求
  • 能够兼顾到用户和开发者的体验
  • 抽象层次更好,解耦完善,可复用程度高
加分项
  • 能考虑边缘Case,比如输入不合法情况的处理
  • 能考虑各种场景,比如登录考虑到安全性加密,服务端数据的处理等等

误区

  1. 面试不单是八股文的背诵,而是需要考察结合实际场景,运用所学知识解决实际问题的能力。
  2. 面试过程是平等的,面试官不应以考到候选人为目的,而是应该尽量的发掘候选人的长处
  3. 不要追究过时的细节,比如兼容性,某些DOM API 参数等,这些只需了解,实际项目根本不会用。
  4. 一般不会当场告诉候选人面试结果和评价啊,不过如果时间赶得急就会接着约下一轮(有可能是只是在面试官心中处于待选状态,需要和后来的面试者做一个对比来比较谁更好)。

面试准备

技能储备

  1. 培养对计算机、前端、互联网技术的兴趣,单是吃饭的工具学习没用动力且不长远。
  2. 不要焦虑,指定目标和规划,从最简单的开始学起,踏实掌握学会的知识点。
  3. 多思考,思考知识点背后的原因,是否之间有什么关联。
  4. 重视代码,一定要多看多敲代码才能熟练,自己去写代码的时候才可以逻辑清晰地实现。
  5. 走出去,到技术设区学习别人的代码,思路和逻辑。

简历准备

一份优秀的前端开发工程师简历是怎么样的?

  1. 技术能力描述真是清晰,能够切合招聘方需求
  2. 项目经历描述完整、具体,价值点突出,最好可以自带可访问的作品
  3. 突出重点,展示能力,一定是做出了什么而不是做过什么
  4. 对技术有足够热情并愿意做持续投入,有明确的关注点以及未来发展规划。
  5. 不需要花里胡哨,控制好内容,不要太多冗余信息
可突出的关键信息
  1. 个人信息:基本信息,入学时间,学历背景等
  2. 优势总结:前端技术栈,工程化体系,社区成就(开源作品,博客文章,会议演进等)
  3. 实习经历:从近到远的提取出实习过的公司,任职岗位,关键产出,数据指标等
  4. 项目经历:推动了什么事情,解决了什么难点,获得了什么指标,沉淀了哪些思考
简历投递

海投,不止投你心仪的公司,其他小公司也要多投,好处是:

  1. 提前熟悉面试流程,可以当作预先的演练,正式面试前的不适应
  2. 如果最终通过,手上有offer了,可以给你更大的信心接受挑战
  3. 多一个保底,重要的实习经验以及项目经验,无法进大厂就先进小厂磨砺自己
offer是用来证明你的竞争力的,除非你很优秀,不然不要当作和HR议价的工具
面试前
  1. 准备好自我介绍,时长控制在1分钟即可,适度展示自己的长处,一句话介绍项目也可
  2. 调试好网络,电脑电量,耳机麦克风,整理好仪容仪表,确保环境相对安静的。
  3. 提前熟悉一下,脱离VScode等智能编辑的环境,因为线上写代码的体验可能不会那么好
面试中

1.情绪

  • 不要紧张
  • 不要过分谦虚
  • 不要过分骄傲
  • 心态端正
  • 礼貌

把面试当作一次交流的机会,既要展示自己的长处,也要认识自己的不足,一道题目的回答错误不代表着面试的结束,礼貌是给人留下好印象的前提。

  1. 回答策略
  • 面试官问完先理清问题、思考清楚再回答
  • 不要追求完美,时间有限,优先回答能想出的基本解法再去考虑更好的解法
  • 可以虚心求指导,如果短时间内难以得出答案,可以向面试管寻求一些提示,如果能因此等到很好的答案,并不会减分
  • 编码也是如此,没有刷到过的不要紧张,可以根据面试官的回答做出进一步的编码
面试经典问题

你有什么想问我的?

一般来说面试官最后可能会问这个问题,提问的时候不宜太多,适度地询问比如团队的大致方向,有哪些挑战,发站潜力等,不建议询问敏感或者关键性的信息。

软素质表达

不管是处于职业生涯中哪个阶段的软件开发者,如果需要将自己的职业生涯提到更高的层次,都离不开在个人软素质上的持续提升,同样在面试考察中也会贯穿始终。

  • 自驱力
  • 好奇心
  • 学习能力
  • 沟通表达能力
  • 技术规划能力
  • 总结复盘能力