前端面经分享(社招一年)~
-
BFC(Block Formatting Context)
-
垂直居中
-
http状态码1xx,2xx,3xx,4xx,5xx
-
前端鉴权
-
vue 具名插槽slots、scoped-slots
-
cookie、localStorage、sessionStorage
-
http缓存
-
vue的内置组件
-
keep-alive和transition嵌套
-
npm版本管理(major, minor, patch)
-
组件库如何调试(npm-link)
-
提高打包速度
-
事件循环
-
MVVM
-
vue2是怎么怎么实现依赖收集
-
订阅/发布中的dep类是有什么用
-
为什么data是个函数不是一个对象
-
Vnode是用来做什么的
- diff算法(为什么跨层更新需要O(n^3)的复杂度)
-
npm包版本管理semantic
-
讲讲换肤
-
查找中间节点的链表(实际上就是链表中倒数第k个节点的变式)
-
树的中序遍历
-
css变量
-
单测是怎么测的(这块我得补一下)
-
工作(维护组件库稍微学一下vue3和新组件库)
-
项目的复杂度你觉得在哪
-
interface和type的区别
-
环图
-
cookie插件
-
vue的数据劫持
-
追问:如果是数组你会考虑怎么去实现响应式依赖
-
let和const
-
async函数和promise
-
协程:无栈协程,有栈协程
-
worker线程
-
渲染线程和worker线程可以共享数据吗?
-
如何实现一个搜索组件(输入框、按钮、下拉列表)
-
滚动列表的懒加载,如果一个用户突然滚动到某个中间的办法怎么处理
-
防抖和节流(最好的划分手段还是根据事件在一段时间触发的次数)
- 先后两个请求,如何去区分这两个请求的先后顺序。
- 说说在工作层面遇到最大的难题。
-
有了解过resizeObserve的原理吗
-
怎么去实现resize事件
-
requestAnimateFrame
- 平时是怎么学习的
-
两列布局
-
带缓存的斐波那契数列
-
括号匹配
-
如何提交一个form表单
-
从输入url开始到页面渲染完成。如何优化
-
为什么要SSR
- 原型链问题。
- 两个数组求交集
- 实现一个add函数,可以支持这样调用add(1)(2)(3),且返回的函数有count这个方法,可以计算出所有参数的和
- 将简写的ipv6转换成完整的ipv6
-
vue2和vue3的数据劫持有啥区别,追问讲讲defineProperty和proxy有啥区别
-
JSX、template组件还有createElement函数有啥优缺点
-
nest和next有使用过吗
-
nginx的负载均衡策略
-
KOA和Express的中间件有什么区别
-
为什么整个社区都在推动函数式编程
-
进程和线程的区别
-
线程之间是怎么切换的
-
你用过哪些打包库
-
webpack、gulp之间的区别
-
新的vite、snowpack等的bundle技术有什么优势
-
了解过pipe函数吗
-
pipe除了链式调用,还有什么好的地方
-
node中Stream类了解过吗
-
Transform和Duplex这两个有啥区别
-
node中child_cluster是如何通信的?
-
依赖注入有了解过吗
-
HMR是怎么实现的
-
长连接和短连接有啥区别
-
HTTP1.1和HTTP2.0有啥区别
-
讲一下快排的思路
- 判断下链表中是否有环的思路
- 看题,相等操作符
-
看题,宏任务微任务
-
node的EventLoop
-
箭头函数
-
为什么箭头函数不能new(箭头函数没有prototype)
-
函数作用域(答的不好,没能说明白)
-
Class和function有什么区别
-
讲讲你知道的网络协议
-
TCP是怎么保证可靠的
-
TCP的拥塞控制
-
RPC是什么
-
为什么要离职
-
关于项目的问题
-
数组去重
-
深拷贝
-
vuex
- promise
- 口述输出顺序
new Promise((resolve, reject) => {
reject(3)
setTimeout(() => {
resolve(2)
}, 0)
}).then(a => {
console.log(a)
}, b => {
console.log(b)
})
console.log(4);
console.log(a);
}
function bar () {
var a = 'b'
foo()
}
var a = 'a'
foo()
-
webpack了解深吗
-
有做过性能优化吗?
-
刚刚提到了http2.0,它和http1.x有什么区别吗?
-
loader和plugin,哪些个比较熟悉
-
口述一道promise题
-
实现一个并发数量最大为n的函数
-
了解过vue3吗
-
proxy和defineProperty的区别
-
$set这个API是怎么实现的
-
如何去设计一些组件(程序设计的几个基本准则:最小知识原则,单一原则,依赖倒置原则)
-
了解mixin这个API吗
-
了解过SSR这个原理吗?
-
做的产品主要是面向谁的?
-
产品主要的一些功能。
-
HTTP 405是什么(Method Not Allowed)
-
接受加班吗
-
影响用户体验的有哪几个点
-
为什么要一年跳槽
-
为什么选择前端
-
职业规划
-
vue的本质是什么
-
vnode是什么
-
vue-diff
-
symbol数据类型用过吗
-
proxy中可以用symbol
-
webpack了解过吗
-
loader和plugin的区别
-
讲讲webpack常见的几个hooks
-
说一说URL输入到页面显示发生的过程。
-
网络层是怎么做的找到ip对应的主机
-
三道手撕题
-
反问
-
loader和plugin的区别
-
实现一个plugin
-
实现一个简单的tapable
-
实现一个delay函数
-
webpack5做了哪些方面的优化
-
如果一个loader写死了,那需要plugin监听哪一个hook
-
反问
-
项目每个版本之间有什么区别
-
为什么要做一个cli工具
-
对Vue框架的一些看法
-
了解浏览器哪些原理?
-
算法:编辑距离
-
项目最大的难点在哪里?
-
你是怎么学习前端的
-
对拼多多的了解
-
插件是如何实现的
-
开发过程中遇到最复杂的一个问题
-
vue的数据劫持是怎么做的
-
diff算法能讲细一点吗
-
讲下这个场景下diff是怎么计算的
-
事件循环
-
一道promise题
-
实现一个创建节点树
- vue和react的区别
- 项目中觉得做得最有意义的一件事
- 追问第二个问题
- 你的技术栈是什么
- nginx怎么配置一个302
- nextTick API
- 了解过AST吗
-
cookie插件是怎么做的
-
介绍下项目
-
大文件上传是怎么做的
-
css垂直居中
-
数组的方法
-
flatten方法
- 实现promise.All
- 跨域问题
- 显卡硬件加速
- babel的AST了解吗
- webpack的一些优化了解吗?
- 了解过小程序和H5编程吗?
- 两个子iframe如何通信
- 如果让你实现一个轮播图,需要考虑哪些东西。
- 算法实现一个O(n)复杂度的求数组的第二大值。
- 想怎么去优化项目的打包速度
- 算法:合并有序链表
- vue框架怎么看
- template转render函数你能手写下吗
- 动态组件、异步组件怎么实现的
- 依赖收集?
- vue-loader的原理
- 顺便讲讲css-loader的原理
- webpack具体是怎么实现的?
- babel的parse阶段是怎么实现的?(有限状态机)
- 设计模式你了解哪些
- 你了解过函数式编程吗
- 最近在看哪些书
- 函数上下文讲一下?函数是怎么执行的(旧版本是依靠AST)
- promise和settimeout的问题
- 对象去重+对象是否相同。