面试官心得
- 缓存相关(强缓存、协商缓存,由此引申 http 相关缓存知识)
计算机基础
前端对于协议这块必须是要清晰的,如果是 nodejs 团队建议加大难度
- 前端相关网络知识(tcp,dns,cdn,http,https,http2)
- 安全相关(xss、csrf)
- 怎么实现登录的?(cookie based、session based、jwt)
- https 怎么做到防止数据包被拦截的?
- 证书是什么?
- 几种常见加密算法,对称加密、非对称加密
设计模式、架构、编程思想
主要考察架构设计能力,软件工程等基本素质,对于资深前端这块有要求
- 用过什么设计模式?怎么实现的?应用场景?
- 项目是怎么做架构设计的?谈谈你的理解
- mvvm 和 mvc 是什么?有啥区别啊
- 函数式和响应式的理解
- 什么是柯里化,怎么实现柯里化?纯函数是啥?
- defineProperty 用过吗?有什么问题?descriptor 是什么?有哪些属性干嘛用的?initializr 是啥?
- 装饰模式了解吗?装饰器用过吗?哪些场景?(高阶组件、es6 decorator)
- 继承和组合用过吗?什么时候用继承什么时候用组合?(mixin 是什么东西?js 是多继承还是单继承?为什么是单继承?)
- 什么是开闭原则?
- 什么是控制反转?什么是依赖注入?
- 什么是面向切面编程
- 你了解的反模式是什么
- 了解尾调用优化吗?通常用在什么场景?js 引擎有做这层优化吗?什么是尾递归?
数据结构、算法相关(easy 难度)
对于前端来说考到 easy 难度差不多了(我自己也是个弱鸡~)
数据结构比如树、链表相关的在前端应用界是常用的,建议考察
图论、动归、线段树、蓄水池抽样等这种根据自己的业务领域来决定是否有必要考察(=. =,web 前端我感觉不需要)
- 大 O 表示法,怎么计算时间复杂度和空间复杂度
- 贪心算法是什么?动态规划是什么?(背包、爬楼梯、金矿问题)
- 实现一个记忆化的斐波那契数列
- 求并集、交集
- 链表相关(排序、合并、去重)
- 树相关(对称二叉树、翻转二叉树、前中后序遍历、深度广度优先遍历、递归非递归实现)
智力题
主要考察反应速度、逻辑思维、推理能力,达到正常以上水平即可
- 25 匹马
- 烧绳子
- 推理题
应用框架原理
考察是不是只会用,只是技术栈的罗列,而不清楚内部的原理机制,更没有借鉴落地的场景,这块也是重点考察
- react、angular、vue 实现原理(三个选一个候选人最擅长的,针对某个流程详细考察,比如 dom diff、dom patch、脏检查、双向绑定、依赖收集等)
- setState 相关问题,dirty component 是啥
- forceUpdate() 用过吗?是什么干嘛用的?与 setState 有啥区别?
- props 和 state
- 组件设计相关(怎么设计?受控和非受控是什么?)
- children.map 是什么,和普通的 map 有什么区别?使用场景
- cloneElement 干嘛用的,使用场景,和 createElement 区别
- 生命周期相关
- react 16 新特性,react 17 前瞻,fiber,hooks,suspense,异步渲染等
- redux、mobx、vuex、dva 等状态管理框架实现原理,针对几个点详细考察
- redux 或 mobx 怎么处理 side effect?
- redux 中间件模型,thunk 怎么实现?saga 怎么实现的?
- koa、express 用过吗?中间件模型了解吗?有啥区别?
- router 用过吗?核心流程怎么实现的?
- 用过什么 xhr 封装库?(axios、fetch,各家长短?有啥坑吗?)
- babel 原理(有哪些东西,分别干嘛用的,怎么实现的,runtime,polyfill,register)
- webpack 核心流程原理,怎么实现模块化的,treeshaking 怎么做的?
其他
随便问点一些业务上的思考,技术加分项,或技术视野、分享、选型方面的考虑
- 使用 typescript 吗?如何看待的,什么情况下用,类型声明文件怎么写的
- 单元测试(jest、mocha、ava)
- 如何发布一个二方或三方包,有哪些考量
- 技术选型的考量指标、维度
- mongo、es、redis 方面相关知识
- 工程化、ci、docker、k8s 相关知识
来源:掘金 链接:https://juejin.im/post/5c7a4952f265da2ddd4a7813
关注我,私信回复“资料”获取面试宝典《Java核心知识点整理.pdf》“,覆盖了JVM、锁、高并发、反射、Spring原理