这些年也有不少的面试别人和面试自己的经历,也有好些人来咨询一些前端的面试题目和准备,所以整理一下记录下来。本文概括地描述一下,面试过程中前端项目经验相关的问题。
上一篇我们介绍了前端面试中常见的一些基础专业知识,这些是面试的门槛。那要如何考察面试者的能力呢,通常会从对方的简历下手,询问相关的项目经验。
# 项目经验
项目经验通常和个人经历关系比较大,前端业务相关的的一些项目经验通常包括管理端、H5直出、Node.js、可视化,另外还包括参与工具开发的经验,方案选型、架构设计等。
# 前端框架与工具库
首先我们来看看前端框架,不管你开发管理端、PC Web、H5,还是现在比较流行的小程序,总会面临要使用某一个框架来开发。因此,以下的问题可能与你有关:
- 谈谈你对前端常见的框架(Angular/React/Vue)的理解
- 该项目使用 Angular/React/Vue 的原因是
- 如果现在你重新决策,你会使用什么框架
- 你有了解过这些框架都做了哪些事情,介绍一下是怎么实现的
- Vue 中的双向绑定是怎么实现的?
- 介绍下 Angular 中的依赖注入
- 讲讲 React 的虚拟 DOM
- 如何进行状态管理,Vuex/Redux/Mobx 等工具是怎么做的
- 单页应用是什么?路由是如何实现的
- 如何进行 SEO 优化
如果你使用到了小程序,还可能会问到:
- 小程序和 H5 有什么不一样,为什么选小程序而不是 H5
- 有考虑在小程序里嵌 H5 实现吗,为什么
- 为什么小程序的性能要好一些
- 小程序开发有用到哪些框架吗、为什么
而工具库相关的就太多啦,一般会这么问:
- 有实际使用过哪些第三方库
- 这些工具库有什么特性和优缺点
# Node.js
Node.js 相关的可能包括:
- 为什么要用 Node.js(而不是 PHP/JAVA/GO/C++ 等)
- Node.js 有哪些特点,单线程的优势和缺点是什么
- Node.js 有哪些定时功能
- Process.nextTick 和 setImmediate 的区别
- Node.js 中的异步和同步怎么理解,异步流程如何控制
- 简单介绍一下 Node.js 中的核心内置类库(事件,流,文件,网络等)
- express 是如何从一个中间件执行到下一个中间件的
- express、koa、egg 之间的区别
- Rest API 有使用过吗,介绍一下
# 前端工程化
如今前端工程化的趋势越来越重,通常从脚手架开始:
- 为什么我们开发的时候要使用脚手架
- 如何理解模块化
- 为什么要使用 Webpack,它和 Gulp 的区别是
- 讲一下 Webpack 中常用的一些配置、Loader、插件
- Babel 的作用是什么,如何选择合适的 Babel 版本
- Webpack 是怎么将多个文件打包成一个,依赖问题如何解决
- CSS 文件打包过程中,如何避免 CSS 全局污染
- 本地开发和代码打包的流程分别是怎样的
除了脚手架相关,如今自动化、流程化的使用也越来越多了:
- 你们的项目有使用 CI/CD 吗,为什么
- 你们的代码有写单元测试/自动化测试吗,为什么
# 性能优化
性能优化的其实跟项目比较相关,常见的包括:
- 常见的性能优化包括哪些内容
- 如何理解性能瓶颈
- 图片加载性能有哪些可以优化的地方
- 要怎么做好代码分割
- 首屏页面加载很慢,要怎么优化
- Tree Shaking 是怎样一个过程
- 页面有没有做什么柔性降级的处理
# 效能提升
效能提升的意识在工作中很重要,大家都不喜欢低效的加班。通常可能问到的问题包括:
- 做了很多的管理端/H5,有考虑过怎么提升开发效率吗
- 你的项目里,有没有哪些工作是可以用工具完成的
- 项目中有进行组件和公共库的封装吗
- 如何管理这些公共组件/工具的兼容问题
- 日常工作中,如何提升自己的工作效率
# 监控与灰度发布
发布和监控这部分,可能较大的业务才会有,涉及的问题可以有:
- 日常开发过程中,怎么保证页面质量
- 版本发布有进行灰度吗?灰度的过程是怎样的
- 版本发布过程中,如何及时地发现问题
- 发生异常,要怎么快速地定位到具体位置
- 如何观察线上代码的运行质量
# 多人协作
一些较大的项目,通常由多个开发合作完成。而多人协作的经验也很有帮助:
- 多人开发过程中,代码冲突如何解决
- 介绍一下 git flow 流程
- 如果项目频繁交接,如果提升开发效率
- 有遇到代码习惯差异的问题吗,如何解决
- 有哪些常用的代码校验的工具
- 怎么强制进行 Code Review
# 结束语
看到这么多内容不要慌,一般来说面试官只会根据你的工作经历来询问对应的问题,所以如果你并没有完全掌握某一块的内容,请不要写在简历上,你永远也不知道面试官会延伸到哪。