非技术问题
基础问题 25%
算法问题
-
项目中树的使用场景以及了解
-
单向链表求倒数第 n 项,一遍找到
-
实现一个合并多个有序数组的函数
-
实现 一个 高阶函数 cache ,能够缓存参数一样的结果,已经计算过一样的不要重复计算
-
实现一个 LazyGuy,支持
LazyGuy('jack').eat('apple').sleep(10).eat('cake')
函数 -
爬楼梯,一次 1 层或者 2 层一共有多少种解法怎么解题
-
筛选出哪些值剩下的
-
合并二维有序数组成一维有序数组,归并排序的思路
-
1.深拷贝
-
2.树的遍历
-
如何去除 url 中的#号
-
介绍排序算法和快排原理
-
堆和栈的区别
-
两个对象如何比较
-
如何判断链表是否有环
-
介绍二叉搜索树的特点
-
介绍冒泡排序,选择排序,冒泡排序如何优化
-
介绍二叉搜索树的特点
-
介绍快速排序
-
sum(2, 3)实现 sum(2)(3)的效果
-
算法:前 K 个最大的元素
-
写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal
-
栈和堆的区别
-
栈和堆具体怎么存储
-
深拷贝和浅拷贝
-
项目中如何应用数据结构
-
介绍冒泡排序,选择排序,冒泡排序如何优化
-
loadsh 深拷贝实现原理
function mySetInterVal(fn, a, b) {
this.a = a;
this.b = b;
this.time = 0;
this.handle = -1;
this.start = () => {
this.handle = setTimeout(() => {
fn();
this.time++;
this.start();
console.log(this.a + this.time * this.b);
}, this.a + this.time * this.b);
};
this.stop = () => {
clearTimeout(this.handle);
this.time = 0;
};
}
const timer = mySetInterVal(
() => {
console.log("123");
},
1000,
1000
);
a.start();
a.stop();
编程问题
- 面向对象,继承这一块,你要写代码 怎么实现继承
- 你使用了哪些设计模式
- 让你设计一个组件库你怎么设计
- 你怎么设计你的 cli 脚手架
- 设计模式
- 单例、工厂、观察者项目中实际场景
- 介绍观察者模式
- 介绍中介者模式 观察者和订阅-发布的区别,各自用在哪里
- 发布-订阅和观察者模式的区别
- 观察者和发布-订阅的区别
css
- 盒模型
- flex
- 三列布局
- css 动画有哪些实现方式
- css 有哪些常用的单位,他们的计算标准是怎么样的
- animation 想要实现动画怎么来设置,循环执行是用哪个属性
- 清除浮动
- 动画的了解
- CSS 选择器有哪些
- 盒子模型,以及标准情况和 IE 下的区别
- 如何实现高度自适应
- rem、flex 的区别(root em)
- em 和 px 的区别
- 你最讨厌以下哪个 CSS 声明?请简述理由。a. float b. position c. z-index d. overflow
- 移动端适配 1px 的问题
- 介绍 flex 布局
- 其他 css 方式设置垂直居中居中
- 为什么要使用 transform(为什么不使用 marginLeft/Top)
- transform 动画和直接使用 left、top 改变位置有什么优缺点
- html 语义化的理解
<b>
和<strong>
的区别- 介绍 css3 中 position:sticky
- overflow-x 属于 CSS2 还是 CSS3
- CSS 引入的方式有哪些? link 和@import 的区别是?
js
- JS 变量类型分为几种,区别是什么
- JS 里垃圾回收机制 是什么,常用的是哪种,怎么处理的
- ES6 中的 map 和原生的对象有什么区别
- 介绍暂时性死区
- JS 的原型
- 变量作用域链
- call、apply、bind 的区别
- 防抖和节流的区别
- 介绍各种异步方案
- 介绍 ES6 的功能
- let、const 以及 var 的区别
- 浅拷贝和深拷贝的区别
- 介绍箭头函数的 this
- 介绍 Promise 和 then
- jQuery 中 .show/.hide 方法与 .css('display': 'block/none') 有哪些区别
_construct
是什么- new 是怎么实现的
- 函数加 new 和不加 new 有什么区别
...
是有用吗,两个数组怎么合并,递归处理- 整个原型链是什么样子的,一直往找找到哪里,重新复习一下
- 函数的柯里化,用了什么思想和原理,为什么前面传的后面还可以调用
- 行内元素有哪些
- 打开一个新窗口方法,html 行内事件先访问 domcument 内容
- js 的常用模块化它有哪些
- es6 有哪些新特性
- 箭头函数与常规函数有什么区别
- prototype 和——proto——区别
- 如何设计一个 localStorage,保证数据的实效性
- 如何设计 Promise.all()
- 介绍高阶组件
- 使用 Async 会注意哪些东西
- Async 里面有多个 await 请求,可以怎么优化(请求是否有依赖)
- Promise 和 Async 处理失败的时候有什么区别
- 数组有哪些方法
- 对 async、await 的理解,内部原理
- 定位问题(绝对定位、相对定位等)
- == 和 =的区别,什么情况下用相等
- bind、call、apply 的区别
- 介绍下原型链(解决的是继承问题吗)
- 介绍下 Promise,如何实现的,内部实现
- 实现 Promise,finally 方法
- promise 的精髓,以及优缺点
- promise 常用的方法
- promise 的 catch 后在加 then 会执行吗
- 介绍 Promise
- Promise 有几个状态,三种状态
- 介绍异步方案
- promise 如何实现 then 处理
- 如何实现异步加载
- 介绍 Promise 的特性,优缺点
- 介绍闭包
- 闭包的核心是什么
- JS 的继承方法
- 前端性能优化
- 如何实现分模块打包(多入口)
- 前端性能优化(1js css;2 图片;3 缓存预加载; 4 SSR; 5 多域名加载;6 负载均衡)
- 并发请求资源数上限(6 个)
- base64 为什么能提升性能,缺点
- 介绍 webp 这个图片文件格式
- 异步请求,低版本 fetch 如何低版本适配
- ajax 如何处理跨域
- jsonp 为什么不支持 post 方法
- 介绍原型链
- 如何继承
- ES6 新的特性
- 说一下闭包
- 介绍 JS 数据类型,基本数据类型和引用数据类型的区别
- 介绍闭包以及闭包为什么没清除
- 闭包的使用场景
- JS 怎么实现异步
- 异步整个执行周期
- Async/Await 怎么实现
- Promise 和 setTimeout 执行先后的区别
- JS 为什么要区分微任务和宏任务
- Promise 构造函数是同步还是异步执行,then 呢
- Array 是 Object 类型吗 Promise.all 实现原理
- 怎么实现 this 对象的深拷贝
- setInterval 需要注意的点
- 定时器为什么是不精确的
- setTimeout(1)和 setTimeout(2)之间的区别
- 介绍宏任务和微任务
- promise 里面和 then 里面执行有什么区别
- 介绍 class 和 ES5 的类以及区别
- 介绍箭头函数和普通函数的区别
- 介绍 defineProperty 方法,什么时候需要用到
- for..in 和 object.keys 的区别
- 介绍闭包,使用场景
- 使用闭包特权函数的使用场 景
- get 和 post 有什么区别
- 对闭包的理解
- 工程中闭包使用场景
- 介绍 this 和原型
- 使用原型最大的好处
- promise、async 有什么区别
- 介绍 service worker
- 介绍 Promise,异常捕获
- 介绍 position 属性包括 CSS3 新增
- 介绍 this 各种情况
typescript 问题
- 你对 TS 的了解程度是什么样
- ts 原生数据类型
- tsc 指令是干嘛,可以编译多个文件吗
- ts 模块声明,declear,
- ts 外部模块和内部模块有什么、函数声明多态
- ts 有了解吗,熟悉吗
框架问题 25%
- 子组件事件传播
- 跨组件数据通信
- 父子组件的生命周期
- proxy 代理数据,Reflect 作用
- vue 高阶组件,获取传入的 slot,$listener、$attrs
- 父组件通信,有哪些方式
- react 函数式组件开发,react、vue、jquery 存在一个系统里怎么共存怎么解决
- 做一个高阶组件,对数据封装,vue 怎么做高阶组件
- proxy 和 Object.definedProperty 细节区别
- vue2.0 与 vue3.0 区别
- vue 渲染过程
- vue3 有哪些新特性
- vue.$nextTick,setTimeout 循环调用怎么结果
- useRef 这个干什么的,
- vue 和 react 有哪些明显区别
- react 和 vue 重新渲染的标准和条件
- react 你用的是 class 和函数组件
- Vue 解决了什么问题
- Vue 和 react 有什么不同
- Vue 和 React 那个技术栈用的比较多
- keep-alive 实现原理
- vue 和 react 区别
- h5 用 Vue 怎么做的响应式?rem + media
- react 不同模块的命名冲突, antd 没用 scope,没有加 hash,怎么实现的
- react 的受控组件和非受控组件的区别
- react 的 hoc 了解吗? 解决了什么问题
- setState 是同步还是异步
- 多个组件共享一个逻辑,通过 mixin 混入,定义指令
- react hook
- react 新增两个生命周期
- react 优化
- react 如何解决重复渲染的问题(purecomponent, shouldcomponentupdate)
- purecomponents 的内部机制
- React 声明周期
- React 使用过的一些组件
- 介绍 Immuable
- React 的生命周期
- componentWillReceiveProps 的触发条件是什么
- React16.3 对生命周期的改变
- 介绍下 React 的 Filber 架构
- 介绍 React 高阶组件
- 画 Filber 渲染树
- 父子组件之间如何通信
- React-Router 版本号 React 中 setState 后发生了什么 setState 为什么默认是异步 setState 什么时候是同步的 虚拟 DOM 主要做了什么 虚拟 DOM 本身是什么(JS 对象)
- 介绍 Fiber
- react 生命周期
- 介绍 DOM 树对比
- react 中的 key 的作用
- 如何设计状态树
- shouldComponentUpdate 是为了解决什么问题
- 如何解决 props 层级过深的问题
- react 异步渲染的概念,介绍 Time Slicing 和 Suspense
- 介绍 pureComponet
- 介绍 Function Component
- React 数据流
- props 和 state 的区别
- 介绍 react context
- react 常见的通信方式
- React15/16.x 的区别
- pureComponent 和 FunctionComponent 区别
- 16.X 声明周期的改变
- 16.X 中 props 改变后在哪个生命周期中处理
- 介绍 JSX
- 介绍虚拟 DOM
- React/Redux 中哪些功能用到了哪些设计模式
- 写 react 有哪些细节可以优化
- React 的事件机制(绑定一个事件到一个组件上)
- react 生命周期,常用的生命周期
- React 怎么做数据的检查和变化
- 介绍 react 优化
- 为什么虚拟 DOM 比真实 DOM 性能好
- React 组件中怎么做事件代理
- React 组件事件代理的原理
- react 设计思路
- react 生命周期
- react 性能优化
- React 声明周期及自己的理解
- 如何配置 React-Router
- 路由的动态加载模块
- 服务端渲染 SSR
- 介绍路由的 history
- 多个组件之间如何拆分各自的 state,每块小的组件有自己的状态,它们之间还有一些公共的状态需要维护,如何思考这块 React DOM diff、React APIs
- react-router 怎么实现路由切换
- react-router 里的标签和标签有什么区别标签默认事件禁掉之后做了什么才实现了跳转
- React 层面的性能优化
- React 中 Dom 结构发生变化后内部经历了哪些变化
- React 挂载的时候有 3 个组件,textComponent、composeComponent、domComponent,区别和关系,Dom 结构发生变化时怎么区分 data 的变化,怎么更新,更新怎么调度,如果更新的时候还有其他任务存在怎么处理
- key 主要是解决哪一类的问题,为什么不建议用索引 index(重绘)
- state 是怎么注入到组件的,从 reducer 到组件经历了什么样的过程
- React 子父组件之间如何传值
- Emit 事件怎么发,需要引入什么
- 介绍下 React 高阶组件,和普通组件有什么区别
- 在哪个生命周期里写
- 渲染的时候 key 给什么值,可以使用 index 吗,用 id 好还是 index 好
- 重新渲染 render 会做些什么
- 哪些方法会触发 react 重新渲 染
- state 和 props 触发更新的生命周期分别有什么区别
- setState 是同步还是异步
- 对无状态组件的理解
- 对 react 看法,它的优缺点
- 如何使用 react/vue 实现一个 message API
- 对应的生命周期做什么事
- 遇到性能问题一般在哪个生命周期里解决
状态管理器
- 介绍 Redux 工作流程
- redux 解决什么问题,可有替代方案
- react hooks 解决什么问题,为什么不能再表达式里定义
- 介绍 Redux
- redux 整体的工作流程
- redux 和全局对象之间的区别
- Redux 数据回溯设计思路
- Redux 状态管理器和变量挂载到 window 中有什么区别
- react redux
- redux 的设计思想
- 接入 redux 的过程
- 绑定 connect 的过程
- connect 原理
- 介绍 redux 和 vuex 机制
- vuex 优缺点
- 介绍下 redux 整个流程原理
- Redux 怎么实现属性传递,介绍下原理
- 介绍 redux 接入流程
- rudux 和全局管理有什么区别(数据可控、数据响应)
- Redux 在状态管理方面解决了 React 本身不能解决的问题
- Redux 有没有做过封装
- 介绍 redux,主要解决什么问题
- redux 请求中间件如何处理并发
- 介绍 Redux 数据流的流程
- Redux 如何实现多个组件之间的通信,多个组件使用相同状态如何进行管理
- 使用过的 Redux 中间件
- Redux 中异步的请求怎么处理
- Redux 中间件是什么东西,接受几个参数(两端的柯里化函数)
RN
- 介绍 RN 的缺点
- RN 和原生通信
- RN 的原理,为什么可以同时在安卓和 IOS 端运行
- RN 如何调用原生的一些功能
- RN 有没有做热加载
- RN 遇到的兼容性问题
- RN 如何实现一个原生的组件
- RN 混原生和原生混 RN 有什么不同
- 为什么 3 大框架出现以后就出现很多 native(RN)框架(虚拟 DOM)
- 如何做 RN 在安卓和 IOS 端的适配
- RN 为什么能在原生中绘制成原生组件(bundle.js)
网络问题
-
常见 Http 请求头
-
Http 报文的请求会有几个部分
-
介绍 http2.0
-
通过什么做到并发请求 http1.1 时如何复用 tcp 连接
-
介绍下 HTTP 状态码
-
403、301、302 是什么
-
缓存相关的 HTTP 请求头
-
介绍 HTTPS
-
HTTPS 怎么建立安全通道
-
从输入 URL 到页面加载全过程
-
tcp3 次握手
-
tcp 属于哪一层(1 物理层 -> 2 数据链路层 -> 3 网络层(ip)-> 4 传输层(tcp) -> 5 应用层(http))
-
CDN 是什么?
-
http2.0 多路复用
-
http,协商缓存、强制缓存 304
-
http2.0 有什么特点,
-
http 缓存相关机制
-
http 如何升级 https
-
http 缓存
-
http 状态码 401 和 403 区别
-
http 的头部有什么字段,简要描述(缓存,content-type,cookie 等等)
-
cookie 跨域服务端需要如何适配(CORS 头)
-
一个请求跨域是否会抵达服务端
-
304 状态码什么意思,哪些标识。为什么有两个标识
-
cache-control,和协商缓存有什么区别,另一个强制缓存标识是什么
-
http2. 0 你有了解和实现过吗,和 1. 0 有什么区别。多路复用和 keep-alive 有什么区别,多路复用怎么实现的,你有用过 http2. 0 协议吗
-
options 请求你知道吗,什么时候会请求,给 header 里面添加了新的值会发生 otpions
-
三次握手和四次挥手能简单讲一下吗,概括一下。
-
http2.0 什么时候性能比 1.1 差
-
http 的 dns
-
http2.0,资源合并还有意义吗
-
http2.0 多路复用原理
-
http2.0,丢包怎么办
-
dns 存在哪里,整个网络链路上他都有 dns
-
你有解决 http 长链接问题吗
-
请求一张图片在整个 http 会经过哪几个步骤,输入一个 url 会经过哪些步骤
-
http2.0 什么时候性能比 1.1 更差
-
网络的五层模型
-
HTTP 和 HTTPS 的区别
-
HTTPS 的加密过程
-
介绍 SSL 和 TLS
-
介绍 DNS 解析
-
304 是什么
-
从地址栏输入网址时,敲下回车后,发生哪些了哪些事情?
-
http 缓存控制
高级问题
运行环境问题
- localStorage 和 cookie 有什么区别
- 介绍同源策略
- 如何实现 H5 手机端的适配
- 跨端方案
- chrome 对 cookie 第三方获取进行了调整你知道吗
- 对跨域的了解
- 介绍下数字签名的原理
- 前后端通信使用什么方案
- RESTful 常用的 Method
- 介绍下跨域
- Access-Control-Allow-Origin 在服务端哪里配置
- 介绍垃圾回收
- cookie 的引用为了解决什么问题
- cookie 和 localStorage 的区别
- 如何解决跨域问题
- 如何解决跨域的问题
- 跨域怎么解决,有没有使用过 Apache 等方案
- 介绍下浏览器跨域
- 怎么去解决跨域问题
- Ajax 发生跨域要设置什么(前端)
- jsonp 方案需要服务端怎么配合
node 问题
-
koa 原理,为什么要用 koa(express 和 koa 对比)
-
使用的 koa 中间件
-
koa 中 response.send、response.rounded、response.json 发生了什么事,浏览器为什么能识别到它是一个 json 结构或是 html
-
koa-bodyparser 怎么来解析 request
-
node 接口转发有无做什么优化
-
node 起服务如何保证稳定性,平缓降级,重启等
-
介绍 koa2
-
node 有哪些原生模块,它们有哪些作用
-
你用 node 来做什么
-
你的 node 是存储是用来存储东西,数据库有了解吗。mongodb 和 mysql 有什么区别
-
mongodb 不停地往里面写东西,过一段时间清理过怎么做,你写些脚本来定时做这些事情
-
node. js 怎么实现子进程,子进程之间怎么通信
-
用 node. js,每天找到对应条件的文件,字节数和行数,进行统计怎么做,通过 shell 命令怎么做,列出文件,文件信息。条件查询文件,shell
-
你用 koa 你用来做什么,为什么用 koa 来做,为什么不用 express,koa 和 express 有什么不同
-
nodejs 用来做什么
-
node 大文件下载,大文件上传。大文件写入方式
-
node.js 里面它的 commonjs 如何实现的
-
Koa 的洋葱模型它是一个怎么样的概念
-
node 的事件管理机制
-
children_process 包含哪些子模块,有哪些作用
-
koa2 中间件原理
-
node 文件查找优先级
-
在 Node 应用中如何利用多核心 CPU 的优势
-
使用过的 koa2 中间件
-
koa-body 原理
-
介绍自己写过的中间件
-
有没有涉及到 Cluster
-
master 挂了的话 pm2 怎么处理
-
如何和 MySQL 进行通信
-
介绍 pm2
-
npm2 和 npm3+有什么区别
-
pm2 怎么做进程管理,进程挂掉怎么处理
-
不用 pm2 怎么做进程管理
后端问题
- 后端分布式了解吗?
- 服务集群了解吗?
- 现在线上也有用 nginx 吗
- 你对 Python 有什么了解
安全问题
- CORS 如何设置
- xss 攻击有哪些常用的手段
- csrf,它是怎么攻击的,怎么防范
- csrf 原理,如何防范
- web 安全你做过什么事,有哪些方式保证安全
- 作为后端怎么样保证安全性
- 对安全有什么了解
- csrf 跨站攻击怎么解决
- 项目中如何处理安全问题
- 介绍 css,xsrf
- 加上 CORS 之后从发起到请求正式成功的过程
- xsrf 跨域攻击的安全性问题怎么防范
工程问题
- webpack 生命周期
- webpack 打包的整个过程
- 常用的 plugins
- webpack 整个生命周期,loader 和 plugin 有什么区别
- 介绍 AST(Abstract Syntax Tree)抽象语法树
- webpack 如何配 sass,需要配哪些 loader
- 配 css 需要哪些 loader
- git 工作流
- 使用 webpack 构建时有无做一些自定义操作
- webpack 做了什么
- webpack 介绍
- webpack 优化
- webpack 里面有哪些常用的配置,output 里面有哪些配置项
- loader 和 plugin 两者有什么区别
- webpack 的编译阶段主要有哪几个
- webpack,loader 和 plugin 有什么区别,它的事件流的机制怎么实现的
- loader,的 babel 他做了什么事情,转成 AST 之后怎么怎么访问怎么调整
- webpack 有没有做独特的配置
- 为什么不用 vue-cli\react-create-app
- webpack 性能提升大吗
- webpack 和 gulp 的优缺点
- 使用过 webpack 里面哪些 plugin 和 loader
- webpack 里面的插件是怎么实现的
- dev-server 是怎么跑起来
- 抽取公共文件是怎么配置的
- 使用 import 时,webpack 对 node_modules 里的依赖会做什么
- 一般怎么组织 CSS(Webpack)
- 随着 http2 的发展,webpack 有没有更好的打包方案
全链路以及 DevOps 认知
- 单元测试做过吗?你是怎么做的?
- docker 准备流程?
- DevOps 平台关键功能点?
- 自动化测试,CI/CD 的关键核心都有哪些?
- 如何保障 DevOps 推动?
- 接口如何做优化?Mock 平台搭建方案?
性能问题 25%
- 流失率 30% 如何做到的
- 整个前端性能提升大致分几类
- 前端性能优化
应用问题
- 项目优化
- 你有做过服务端渲染吗,页面是怎么渲染的
- 数据爬下来怎么存储的,
- 需求特别多,重复性数据的需求,今天做一个图表、表格,请求数据
- 前端路由有哪些方案,到单页详情页刷新 404 怎么办
- 你这个应用有多少个页面组成
- MOGU-HOST 你这个项目是怎么来实现的
- 登录方案
- 文件上传如何做断点续传
- 图片防盗链原理是什么
- 前端如何进行多分支部署
产品问题
- 你怎么统计到数据提升
- 你怎么做到美丽借数据提升的
- 展开说下店铺装修