Web/14-前端面试/00-准备.md
2021-04-10 11:03:41 +08:00

415 lines
9.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 前言
### 面试分为三部分
- 技术面试问技术问题
- 负责人面试考察综合能力比如项目把控能力项目深度项目架构业务等
- hr 面试侧重于性格沟通潜力等
每轮面试在一小时左右
### 每轮面试的知识点
一面
> 主要考察基础知识
- 页面布局
- CSS盒模型DOM事件
- HTTP 协议原型链
- 面向对象通信
- 前端安全算法
二面
- 渲染机制
- JS 运行机制
- 页面性能
- 错误监控
三面
> 不再关注技术层面
- 业务能力
- 团队协作能力
- 带人能力
终面
- 职业竞争力
- 职业规划
面试成功需要技术过关面试技巧等
### 校招和社招各自看中的层面
校招
- 知识40%
- 能力59%
- 经验1%
社招
- 知识30%比如协议业务的认知程度
- 能力50%比如架构业务的抽象能力项目的把控能力
- 经验20%项目的体现
以上仅供参考
### 面试准备
面试准备包括以下四个部分
- 职位描述JD的分析
- 业务分析
- 技术栈准备
- 自我介绍
每个公司又有一套成熟的技术栈比如在构建工具上百度用 fis3美团用 Gulp
你要面哪个公司要先看看对方要求的技术栈
上面四个部分我们接下来详细介绍
## 职位描述JD的分析
### 介绍
概念
- 职位描述注重的是工作职责
- 任职要求要求的是工作能力通常描述得很细致
PS前端的知识庞大不可能所有的内容都准备好但是要向任职要求靠拢
分析职位描述JD的目的是
- 快速识别出这个岗位是否是自己喜欢的想要的
- 目前的技能是否能胜任岗位的要求短期内的准备能否胜任
### 举例1京东 web 前端的职位描述
如下
![](http://img.smyhvae.com/20180304_2132.png)
**职位描述**
1面试时会同时考虑到 `PC 端和移动端`两个部分
2`App H5开发`指的是两层意思
- Hybrid 技术栈
- H5 开发 native 开发没有关系比如活动专题
3`调试数据接口`要学习一下怎么模拟数据
4`前端组件库的建立`要求较高但非常重要体现在
- 基本功要扎实原生 jscss的理解要到位
- 之前有没有前端组件库相关的项目经验
- 是否通读过其他的 UI 组件库
5`优化与重构`难度比第四条更大
PS前三条是基本知识第四条第五条属于进阶
**任职要求**
1`3年以上工作经验`不要太较真工作年限`精通 H5 特性`说明公司很看重移动端了解H5`最新规范`贵公司希望我对新技术是有追求的比如`ES6`
2要求我们对`面向对象`部分有足够的了解组件化的编程也离不开面向对象
3体现了几点
- `熟悉 Web 标准`熟悉最新的标准即可
- `表现与数据分离`MVC框架
- `语义化`这个词千万不要忽视不是什么都用 div
- `实际经验`利用框架开发的过程中遇到过哪些问题没有实际经验的话也要提前准备几个问题
4以下几点
- `前端架构分析与设计...`说明此岗位并不面对初级岗位因为工作一至两年的人大部分都是**做业务开发**缺少**系统的架构能力**
我们要准备一个项目的架构比如公司现有的项目重新梳理包含目录结构的设计复用性设计模块化设计自动化测试上线流是什么
- `易读、易维护的代码`面试过程中一定会让你写代码来体现要求每个函数的功能要单一能抽象尽量抽象符合这两个原则基本就满足了易读易维护
- `高质量、高效率的代码`短时间内不好准备
5`用户可用性、用户体验、用户研究`考察的不是技术而是候选人对于产品体验的理解不仅仅只是完成功能而已
6`强烈兴趣`是公司企业文化的一种要求多去GitHub上看看别人的项目里用的什么新技术多看博客短时间内无法准备
7了解`Sass``Less`这是基本技能
8**熟悉**`web构建工具`新手推荐学习 Glup而不是 grunt当然你要知道 **Glup grunt 的区别**
PS了解熟悉精通是有区别的
9暂时可以忽略如果 职位描述里没有要求`Node.js`而你只会一点点 `Node.js`那不建议你面试的时候把`Node.js`体现出来否则是给自己挖坑
### 举例2艺龙的 web 前端的职位描述
如下
![](http://img.smyhvae.com/20180304_2226.png)
此方位
**职位描述**
1`系统化设计`说的比较笼统其实指的就是模块化设计前后端分离**数据渲染**交给前端
2几点
- 前半句并没有说 H5 是放在移动端做可能同时包含 PC 和移动端
- 后半句可以看出公司对 H5 动画的要求很高动画有三种方式用DOM写SVG 的path做动画canvascanvas 又分 2D 3D我们要看岗位描述里怎么要求的既然提到CSS3那么CSS3里面的animationtansition也要了解
3微信项目要准备
- 小程序比如看贵公司有小程序吗我们自己要准备简单的开发和文档组件化的内容
- 微信支付
- 对微信开发中的哪些坑要了解
4和京东的第四条很像既要会框架也要会组件化设计但京东的侧重从零开始而艺龙侧重于有的就维护没有的就开发
**岗位要求**
1`各种`web前端技术用词不严谨
2几点
- `Web`标准JS的最新标准是ES6
- `可用性、可访问性`侧重于网站的性能 前端要做性能监控错误监控JS异常分为两种**运行异常****资源加载错误**一般人只能说出第一种异常
3`工程化`**工程化**已经是前端的必备技能`webpack`是必须的工具`grunt`已经过时了如果公司提到还是要了解`Gulp`用的很多
4写得比较虚面试时基本很难考察面试时如果写代码要注意代码风格该用 classid标签时要注意区分
5要准备一下 Node.js`至少熟悉一门`可能要求全栈开发
6`逻辑性强`能说出123
## 业务分析
> 业务分析
CSS3 动画是重点准备的内容
jQuery 要准备事件委托选择器等
ES6语法importexport等
比如<http://jr.jx.com/>这个网站:
![](http://img.smyhvae.com/20180304_2302.png)
通过简单分析源码我们初步得知网站的以下几点
- jQuery
- vue 框架
- ES6
- webpack 打包工具
## 前端技术栈准备
![](http://img.smyhvae.com/20180310_1040.png)
上图中左侧是前端技术核心右侧是前端工程化
**左侧**前端技术核心
- jQuery要注意看源码看源码时要看这几个核心架构事件委托是什么插件机制兼容性
- 三大框架都是mvvm框架准备一至两个即可或者精心准备一个面试时会问得很细比如面试官会经常问VueReact的源码建议找网上的源码分析的文章
- Node.js服务器端的运行环境如果没有相关项目经历就尽量不要提
- JavaScript 基础框架有时候都很虚熟练掌握 JavaScript 基础才是行走江湖驰骋千里的关键
**右侧**前端工程化
- npmyarn包管理工具npm的常见命令npm scripts 怎么用的
- webpack模块打包
- gulpgrunt构建工具
- SasslessCSS 预处理器
- BabelES6转ES5
## 自我介绍
面试问的问题很大层次上取决你的简历和自我介绍
### 简历
简历中最重要的四个信息
- 基本信息姓名年龄手机邮箱籍贯
- 学历从大到小写硕士 -> 本科
- 工作经历时间公司岗位职责技术栈**业绩**业绩是大多数人所忽略的
- 开源项目Github说明
自我评价可以不写
项目的业绩上要包括**技术收益****业绩收益**
### 自我陈述
1**把握面试的沟通方向**
如果陈述中谈到项目面试官可能会问
- 负责了什么项目项目是做什么的
- 和前端的结合点是你的角色是项目中承担了什么责任
- 你在项目中的成绩
如果你说自己是项目`负责人`会被问到
- 该项目怎么分配有几个人参与
- 作为负责人你的角色是什么是项目管理还是技术管理
- 遇到技术难点如何解决
### 提问题
如果在深入问题时碰到不会的不要说我不知道建议回答
- **我要回去思考一下**
- 这方面我没有经验能不能**指点一下**
- 有什么建议或者参考资料吗我想把这个东西弄懂
2阔达自信的适度发挥