原文连接地址:Nealyang/personalBlog前端
市面上有不少关于面试的文章,可是基本都是从应聘者的角度去分析问题的,从招聘官的角度去分享的着实很少。本文将从个人我的招聘经历分享下关于前端一面的一些思考和本身的感悟。如下全部感悟皆为笔者我的感悟,不表明任何。有不妥之处,欢迎指出vue
其实不得不说,找工做,真的七分实力,三分运气。不一样的面试官有不一样的看重点,因此千万不要为一次的滑铁卢而丢失信心。react
面试环节
关于面试题的答案讲解,本文将不作很是详细的分析。具体的每一个知识点,笔者后面尽可能两周更新一篇相关知识点文章于公众号 全栈前端精选 中,欢迎关注、讨论和分享。下图是笔者计划后续写的总结性技术文章。webpack
自我介绍
基本面试这是必然的开场,笔者在公司也稍微面试过很多人吧,高峰期基本每晚都要面试一两个,听过了各类各样的开场介绍。这里简单说下笔者做为面试官比较喜欢和不喜欢的介绍吧。git
我叫 xxx,毕业于(目前就任于) xxx,来自 xxx,技术栈 xxxx,喜欢 xxx。。。github
类如上述的自我介绍,其实不少都在简历上写明了,甚至不少是我并不关心的。web
我只关心你能力和我职位的匹配度。因此诸如此类的简介,笔者更是但愿可以简短。笔者做为面试的时候,更喜欢听到的是我作过什么牛 x 的项目,这个项目有多难,如何攻克的,以及这个项目作完你收获到了什么,甚至这个项目作完,该项目对团队、部门甚至公司而言,带来哪方面的提升。或者能够介绍你在校得到了什么奖项,意味着什么、成长了什么。面试
如上的介绍,其实就可以让面试官眼前一亮,由于能看到你对这个项目的思考、以及这个项目对你的历练。算法
划重点:咱们都知道下一个面试环节是知识点提问,因此这里的难,能够适当的抛出技术的难点在哪。引发面试官的兴趣,从而去提问 。面试的节奏咱们要学会本身掌握,别总是被面试官牵着走vue-cli
走到这一步,基本有以下两个分支:
- 面试官对你的这个项目(奖项)比较感兴趣,会接着问下去,而后问其中技术的实现细节。(因此这里本身千万不要吹牛x,而后补不回来)
- 面试官不是很感兴趣(极可能是面试官的技术盲区,好比我就这样。哈哈),而后问本身准备的一些面试题。。。
这里须要说明的,在笔者面试应聘 p7 的同窗的时候,会更喜欢到你对这个项目的思考,诸如会问一下题目:
- 现有的技术方案、行业对比
- 你以为你作过的项目或发起过的优化里面最有价值是的哪一个?为何?对业务的帮助是什么?
- 你作的东西能够复用于其余团队吗?
- 横向与市场已知的 xxx 解决方案,大家的优点在哪?
上述的这些思考,其实目前我也达不到。可是,这不必定要求面试官必定要达到这个水准,项目的思考维度也尚未这么的深刻。没吃过猪肉还没见过猪跑嘛。
面试题
如上面所说的,若是面试中应聘者说到了笔者比较感兴趣的技术方向、或者技术点,那么笔者就会直接问下去。若是说到了笔者不是很擅长的技术区域,那么我笔者就不会追问技术细节了。
总体一面的时间大概也就半小时左右,加上先后的介绍,基本题目就四五题吧。笔者面试没有固定的题目,一般根据应聘者的经历而问。这里举例下在上面的介绍毫无亮点可言的时候(基本凉了一半),笔者喜欢问的一类题目吧。
基础题目考核
JavaScript 面向对象的理解和感悟
基本刚开始问题的题目都是比较简单和考核基础的,好比有的时候笔者第一题通常问:** JavaScript 面向对象的理解和感悟**、题目很是的开放。给了你足够大的舞台表现本身。
说下这题在笔者面试别人时候的内心打分点:
- 首先,我确定是须要你告诉我,什么是面向对象,面向对象有哪些特色,以及这些特色的解释。
- JavaScript 如何实现这些特色,好比封装、继承、多态。若是关于上述三点,你可以解释到有多少种实现方式、优缺点是什么。以及近几年流行的解决方案是什么。这就是加分 ,好比对于继承吧。类式继承、构造函数继承、组合继承、原型继承、寄生组合继承等等,说出大概的实现思路和优缺点,再介绍下 extends 或者 mixin 的实现甚至你能够衍生到JavaScript 的模块化发展甚至到为何如今 TS 如此流行。那么能够说到这一环节解答的就很是棒了。
- 回答完 JavaScript 的面向对象,是否是能够今后衍生下为何须要面向对象。以及当先对于软件设计的高内聚、低耦合的思考?来个对此题一个提纲挈领的总结?
综上所述,其实不难看出,越是这种基础且开放的题目,能够是一个陷阱,更能够是一个机会。由于一道题真的能够全方面的感觉到应聘的基础是否扎实。
后面的题目的笔者基本喜欢根据应聘者的上一题的回答中甚至应聘者随口说到的知识点,继续追问。可是限于此文为分享文章,这种形式很难演示。下面就继续介绍下后续的题目。
浏览器输入 url 到页面的展示,具体发生了些什么能够展开说下么
断于上述题目知识点。第二个问题笔者一般喜欢问一些考察可深可浅的一些题目,注入:浏览器输入 url 到页面的展示,具体发生了些什么能够展开说下么
基本回答都是
- 在浏览器地址栏输入URL
- 浏览器解析URL获取协议,主机,端口,path
- 浏览器组装一个HTTP(GET)请求报文
- 浏览器获取主机ip地址
- 打开一个socket与目标IP地址,端口创建TCP链
- TCP连接创建后发送HTTP请求
- 服务器将响应报文经过TCP链接发送回浏览器,浏览器接收HTTP响应
- 根据资源类型决定如何处理(假设资源为HTML文档)
- 解析HTML文档,构件DOM树,下载资源,构造CSSOM树,执行js脚本
- 最后展示出来给用户
基本若是应聘者只回到了上述步骤,不少关键步骤(前端应该了解的知识点)没有说起,那么基本凉凉一半了。这里简述下笔者感受,这其中你应该具体展开说明的。
- 浏览器发送请求,是否须要查看缓存?是否请求资源在缓存中而且新鲜,跳转到转码步骤?若是资源已经缓存,是否新鲜?如何检查?怎么判断、http1.0 和 http1.1 的区别是什么,这些字段的优先级是怎么样子的。
- 浏览器解析 url 获取协议,过程是什么?DNS 递归查询能否介绍下?
- 创建 TCP 连接的三次握手是否能够介绍下
- 服务器接受到请求,是否须要检查缓存?检查什么字段?什么样的缓存会须要服务端检查?
- 服务端发送 TCP 连接,浏览器接受 http 相应后,根据什么来决定是否须要关闭链接?关闭 TCP 的四次挥手是什么?
- 浏览器是否须要检查状态码,有哪些状态码?(笔者高频考码:30四、200)
- 在解析的时候,具体如何解析、是否有顺序。(重绘重排高频考题就在这里)
- 总结如上、咱们是否能够给出一些基本的网站优化手段???
上述题目的每一步展开,都将会是下一个面试题。
具体的知识点介绍,不是此文主要讲解内容,这里就很少言了。
解决问题能力考查
其实上面两(大)题后,基本基础、网络、浏览器、js 执行、优化都已经考核到。对于 p6 的一个 job model 还有一项是对于问题的解决能力。
其实这里通常都是出一道问题,而后你给出一些你的实现思路,这里就不作距离了,由于太开放!
好比:
- 诸如我如今须要监听那种频繁发生的事件,你有那些优化么
- 埋点的实现思路
- 非递归的二叉树遍历
- 文件上传断点、续传
- 设计模式的应用场景考核
等等
切记:这类题目,必定不要说不会、不知道。哪怕真的不知道,也要给出大概的解答思路和实现思路。哪怕不对!必定要讲出本身的思考过程。
进阶题目考核
在面试 p六、p7 的时候,通常后面还会跟一道进阶题目(根据应聘者具体状况而定)。
没有开放性的答案其实,因此这里笔者就不细述有哪些思考和想听到的点了。只要你说的对就行其实
- VUE 双向绑定原理
- VUE/React diff 算法的大概思路
- 现有的状态管理的实现
- webpack中 loader、plugin 的实现思路
- 简易版 webpack 的实现
- KOA、Express 中间件的实现
- React Filter 的理解和原理
- 前端构建工具的、vue-cli、create-react-app 的原理和实现思路
- 等等。。。。。
结束环节
半小时,基本只能问四五题这样,说实话,题目的考核大概能占参考度的 90%,还有 10%可能就是言语和感受了。那么对于结束的时候,说下很差的感受:
最后,你有什么要问个人嘛
我想咨询下,我能不能经过此次面试,我对工资无所谓,我愿意学习,特别但愿可以进入 xxx 跟大牛一块儿学习,历练。
讲真,这类的话听过不少次了。若是在看的你也命中了这个。我想说,其实公司招咱们进来,是搬砖的,不是给咱们学习的。学习是你本身的须要,不是为了公司学的。说这类的话,太给本身降价了!
说说笔者应聘的时候,通常结束的你有什么要问个人嘛
的回答
- 我比较在乎本身的技术方向和职业发展,可以简单介绍下若是我面试上贵公司职位,我之后的工做内容和在团队的价值么?
- 想了解下公司对于前端的重视程度以及在大前端时代,团队对于技术的思考
大概就是笔者会问,我这个职位是干吗的?在公司有么有价值?跟我本身的职业、技术规划是否吻合?
这样!面试官会以为,恩~这小子有思考~~~
再者,若是面试官给你介绍的很是很是详细,那么其实从侧面就说明,他对你很满意了!已经到了面试官开始极力展示本身的时候了~~
就好比:医生,我老婆怀的是男孩仍是女孩啊? 不能问!!!这是政策
可是:医生,我这孩子出生我给他起名字叫王刚蛋你看合适不? _恩。。。不太合适_ 基本可能怀的是女孩了
最后
其实我想说,面试,不只仅看运气和实力,其实有的时候也是一场心理的博弈。
你的每一次回答均可能引出下一道面试题。有意识无心识的留点回答漏斗也是一种带节奏的方式。
若是面试官提出一个问题,你都抓不住他的考点,那基本要凉~~
其次,我想说,上面我说的开放性基础题的回答,你们千万不要误解为回答的多就是好。千万不要一个题目回答了半个小时,不必!点到为止,证实本身考虑到、有这个知识储备便可,不要回答的让面试官都烦了。
而后,对于如何拿到面试的敲门砖:简历。没有那么多可说,也不是没得说。
简而言之:面试官筛选简历是很是枯燥的一件事情。基本是一眼带过,不会在简历上撇超过 40s。
因此:
- 简历要整洁,简洁、简洁。真的别密密麻麻都是字,没那么多耐心看的。
- 重点突出,能够加粗或者颜色标识。好比:本身开源类 React 框架
- 简历是一份介绍更是一个成绩单,既然是成绩单,成绩必定要吐出:开源项目 15k star 、 推进公司技术建设 等等
- 不得不说,名校和大厂的背景。很吸睛。
最后,秋招开始了,祝福全部找工做的同窗,都能顺顺利利拿到 offer!加油~
学习交流
关注公众号: 【全栈前端精选】 每日获取好文推荐。还能够入群,一块儿学习交流呀~~