百度一面
-
Vue3 的源码
-
ref和reactive区别,vue团队为什么要这么设计?
-
源码使用了reflect,为什么要这么使用?
-
他是如何跟踪数据的?为什么要用weakMap?
-
你是如何区别不同的虚拟dom(文本,fragment,自定义组件)?
-
说一下diff算法?
-
diff算法你说到了最长公共子序列这个算法,怎么实现呢,说一说思路?
-
那对于新增的虚拟dom你是怎么实现插入的(换句话说你是怎么记录dom位置的,代码怎么知道我就要插入这个地方)?
-
-
CSS 部分
-
如何使用rem这个单位的,它是什么含义
-
link和import的区别
-
看到你有写拆分css,为什么要这么做,一个css不好吗?
-
你说到首屏渲染加速,拆分css,那么这个东西是绝对的吗,你拆了css,就多了一个http请求,所以你得均衡考虑,鱼和熊掌不可兼得
-
cdn工作原理,为什么要把静态资源放在cdn里面?
-
-
项目
-
讲一讲你做的这个项目(从产品定位,产品需求,功能模块三个部分,能说多少说多少)
-
你做的是哪一部分
-
rpc通信具体实现的方案?
-
现在给你一个场景,后端返回一堆数据,你可能要弹出多个弹窗,但是页面只有一个弹窗,只是我点击弹窗之后下一步操作弹出另一个弹窗,如何做到丝滑操作,不会有弹窗开和关的那种停顿感,如果能有封装的逻辑就更好了。
-
遇到的难点,如何解决的
-
-
代码题
-
将一维数组变为二维数组
-
全排列
-
美团一面
-
自我介绍
-
刚刚说到单点登录,能说一下它的原理吗?
-
前端需要做什么工作?
-
你们这样设计,兼容性不会特别差吗?
-
微应用是如何组织架构的?
-
你知道qiankun是基于什么封装的吗?
-
single SPA框架你了解吗
-
你能说一下单页面应用,能说一下吗?
-
你的理解没有问题,讲得非常通俗易懂,你知道路由切换的原理吗?
-
你提到了代码的复用,你平常做了哪些工作?
-
你这是属于CR后面做优化,然后优化中带了一些复用的点
-
你觉得前端整个系统有哪些复用的方面
-
你说的v-for是vue的?是的
-
你用的vue2还是vue3
-
vue3除了组合API,还有什么变化吗?
-
你刚刚说到proxy,能具体展开吗?
-
你知道$set吗?
-
computed和watch区别
-
能大概介绍一下vue的数据驱动的底层吗?
-
你刚刚说到watcher,是啥?
-
问几个基础性性问题,promise了解吗?new 一个 promise 先resolve,然后reject,会怎么样?
-
有一个then,return了一个值,下一个then能拿到这个值吗?
-
你的项目经历分享了xxxx,不便说
-
原型链你知道吧?
-
原型链的尽头是啥?
-
如果写一个类的继承你应该知道吧?
-
你觉得什么时候再JavaScript会用到类?
-
面向对象的好处是啥?
-
问一个比较开放的问题,你觉得前端是面向对象的吗?
-
闭包你知道吧?
-
你现在是什么时候毕业
-
你在在校期间有没有参加过一些实际的项目开发?
-
你有没有深入去做过一个事情?
-
平时怎么去学习前端的?
-
你觉得你你目前前端是个水平的人?
-
如果你和你的mentor观点上发生了冲突,他认为他的好,你认为你的好,怎么办呢?
-
两数之和
美团二面
-
工作产出
-
npm / pnpm / yarn
-
npm 发包 需要关注哪些点和指标
-
Pnpm 软链接 / 硬链接
-
docer性能优化
-
小程序性能优化
-
跨端原理
-
手撕两道:发红包 & flat函数实现
字节一面
-
项目难点、解决方案
-
数组存储怎么压缩(稀疏矩阵,三元组有关知识)
-
数据类型有哪些,如何判断
-
let、const与栈、堆之间的关系,栈、堆哪个访问速度更快,为什么?
-
settimeout和settimeinterval哪个更准确,为什么?延时设为0ms会怎样?(最少4ms)
-
事件循环
-
tcp、udp的区别
-
http如何建立连接,有哪些过程?(三次握手那些)
-
https如何防窃听和篡改,自己抓过包没,可以修改不?(面试官说实际上可以随便改,没试过 )
-
promise有哪些状态,fulfilled可以改成rejected不?常用的静态方法?
-
前端安全,vue怎么防止xss攻击的?
-
场景题:vue中如何渲染用户想要的自定义文本,比如有各种颜色,各种字体大小(类似于用vue实现一个文本编辑器)
-
手写题1:settimeout(() => {console.log(1)},1000)怎么让1在2s后打印,不能直接修改时间
-
手写题2:实例链式调用:如let a = new Man(); a.sleep(3000).sayHi().sleep(1000).sleep(2000).sayHi();写出Man()构造函数
-
手写题3:遍历DOM树打印每个元素的tagName
-
手写题4:打印数组全排列,[1,2,3] 打印[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]