面试重新梳理
# 介绍
自己介绍
面试人介绍
面试结束后,提问给自己
# 技能点指导
通过项目发挥扩展思维到以下每个基础点;也是考验自己的;
从vuex那图展开发散思维;
项目总体把握;技术栈方向【广度】=> 优化 前端
vue; => 事件环,设计模式 => 算法
v-if/show => css设置不可见(ovdz) => 重排/重绘 =>BFC(pdfoz)
vuex => 机制 =>几种通信;
vue-router => 类型原理 =》部署 => 权限;
vue3 =》 生命周期
React 【可选】跟vue比较
dva
react-router
hooks =>
webpack => gulp 构建 => 性能优化;
axios / fetch/ ajax;
异步,事件队列, 事件;
网络/http => 存储,缓存,跨域,多页面通信;
浏览器/兼容 =》 h5 => 渐进增强/优雅降级
html => css => css3 => less/sass
清除浮动 => 样式设置/BFC
Js, 类型 => 堆栈,数组,this,在线常用算法,常用的手写原理实现;
js原型链,es6 => proxy;
组件化/模块化/工程化;
nodejs, 脚手架,模版;【广度】
设计模式
算法
项目中遇到的技术难点;
有哪些自己的亮点,或者拿得出手的;
其他简历上相关的;
沟通能力,对前端的理解,学习路径及方向,职业发展;
# 深度技能
# vue
# vuex
# vue-router
# vue3
# react
# dva
# react-router
# hooks
# webpack/gulp
# axios/ajax/fetch库
# 优化
# 权限
# 异步/事件队列
# 网络/http
# 浏览器/兼容
# html/css
# js类型/数组
# js函数/es6
# 组件化/模块化/工程化
# nodejs/脚手架/模版
# 面试高频问题【要点】
# 1、JavaScript
- 讲讲
js数据类型
?symbol
和bigint
讲一讲应用场景? - 判断数据类型的方法?
instanceof
原理?typof null
?typeof NaN
? - var/let/const 区别?
暂时性死区
?const a = {}; a.x = 1 能不能修改? - 说说你对
函数式编程
的理解?平时的使用场景? 防抖、节流
的含义,使用场景?手写一下
?bind实现
?bind之后还能修改this指向吗?为什么?- 闭包概念,最主要的还是问
闭包的场景
? - 用
es5实现es6
类的继承?各种继承问的挺多的 - 深拷贝与浅拷贝?常用方法?手写一个
深拷贝函数
? - 说说你知道的JavaScript
设计模式
?观察者和发布订阅的区别?手写
一个发布订阅? - 说说对JavaScript
异步编程
的理解? Promise
.all、race、allSettled 概念、手写?很多手写题都会用到
# 2、Css
- 水平垂直
居中
?兼容性?不知道宽高
情况下? - BFC概念?作用?
常用场景
? - Flex?注意
flex:1
的含义 盒模型
概念,如何切换
盒模型?- 实现
1px
边框?1px线条? 伪类
和伪元素
区别?使用场景?
# 3、Http && 浏览器
- 浏览器
缓存
?http缓存? 主要要讲一讲
强缓存、协商缓存、preload、prefetch、Service Worker等,协商缓存
浏览器响应code是什么?304
的含义?协商缓存e-tag
是怎么生成的?Last-Modified
是基于什么生成的?两者对比一下?优先级
哪个高? - 什么是
跨域
?什么情况下会跨域?跨域的解决方案
有哪些?说说CORS中的简单请求
和复杂请求
?form表单
提交会跨域吗? - 讲一讲浏览器事件循环
Event Loop
?node事件循环
描述一下? http2
有哪些新特性?http2
还有哪些缺陷?http3
的一些了解?从输入 URL 到页面加载完成的过程
,一般要很详细的描述:包括DNS查询
,缓存
查询,3次握手
,4次挥手
,浏览器渲染进
程等,面试官会从里面再挑几个问题深入问,比如为什么是3次握手4次挥手?渲染进程中的GUI渲染线程、JS引擎线程、事件触发线程等等?可能会问到进程线程的区别?浏览器为什么是多进程?js为什么是单线程?怎么支持多线程?等等- https
加密原理
?主要是讲对称加密
和非对此加密
结合使用的一个过程。什么是中间人攻击
?和http区别?
# 4、Vue
- 生命周期?那个生命周期可以获取到
真实DOM
?修改data
里面的数据,会触发什么生命周期? - 组件data为什么是一个
函数
? - vue 组件通信?一般说了
vuex
,就会问vuex用法?action
和mutations
区别?实现原理等? - vue
导航守卫
,分全局和组件的,一般用于权限控制,这个就可能扯到项目中的一些鉴权问题
。 $nextTick
作用?实现原理?微任务向宏任务的降级处理
,经常被问到说出几种宏任务,微任务。vue响应式原理
?基本都会问- vue
scoped
属性作用?实现原理? - vue
router
有几种模式?实现方式? key
的作用?没有key的情况,vue会怎么做?会引出diff的问题- vue
diff过程
,和react diff区别? - vue 2.x
defineProperty缺陷
?业务代码里面怎么处理?$set
原理?vue是怎么重写数组方法
的?考察你是不是真的看过源码 - vue 3.0
proxy
优缺点?怎么处理vue3不支持IE? computed
和watch
的区别和运用的场景?除了基本的,看你能不能说出三种watcher
的区别
# 5、React
生命周期
?官方为什么变化
?- 说说你对
虚拟DOM
的理解?直接全量更新和diff哪个快(这个问题要分情况
)? - 什么是
HOC
?React里面用过哪些?可能让你实现一个add(1)(2)(3)
的函数 Fiber
干了什么事情?requestIdleCallback
了解多少?react
性能优化?hooks
出现的意义?类组件
和函数组件
之间的区别是什么?- 为什么
不要在
循环、条件语句或者嵌套函数中调用hooks
?记住官网的一句话,Not Magic, just Arrays
- setState
同步
还是异步
?比较常问,问的可能也比较深入 - 如何避免组件的
重新渲染
?memo/useMemo、PureComponent?useMemo和useCallback区别?
拉钩之前有个一块钱的课【深入浅出搞定 React】修言大佬的课,有兴趣的可以去看看(也可以借号🤓)
# 6、其他
简历写的了解,问的很少。即使现在公司用node做中间层
,也基本没问node的问题,所以这块我就简单写写
ES Module
与CommonJS
模块的差异?两者互相加载的方式?一般会扯到AMDEventEmitter
概念,使用场景,错误捕获Stream
概念?使用场景?常见的Stream?
webpack
基本也是必问,得系统学习一下
- webpack
构建流程
?打包原理
? - 项目中做的一些
优化
? loader
和plugin
的区别?有没有写过?常用哪些loader和plugin- webpack
热跟新
原理? tree-shaking
?对于 CommonJS,tree shaking怎么办?- webpack loader的
执行顺序
?
其他
- 项目做过的一些性能优化,
基本必问
- Typescript 中的
interface
和type
到底有什么区别 - 等等,很多
低频率
的想不起了
其他的一些东西,主要还是看你简历上
写了什么
,或者你的回答
有什么面试官感兴趣的词。尽量突出
自己的优势
,发挥好就行,结果对自己的检验,不是对自己的否定
# 参考链接
https://juejin.cn/post/6942988170208215076