经常在社区看面经,我也回馈一下
3.2号一面(25分钟)
最尴尬的一次,,,我啥都还没开始复习,直接打电话给我,措手不及
- 自我介绍
- 说一个你觉得最有成就感的项目
- 怎么使用canvas压缩图片,说思路
- 你用canvas做过什么
- canvas还可以做什么
- 说一下盒子模型
- 怎么实现垂直居中
- 元素的margin设置百分比的时候是以什么为基准
- http的缓存了解吗
- es6使用过哪些东西
- promise怎么用的,有了解过吗
- promise的状态
- promise里面的函数是不是异步的,resolve呢
- async和await是怎么利用promise实现的
- 箭头函数和普通函数的区别
- 怎么修改this的执行
- call和apply有什么区别
- 说一下大概的实现思路
- 跨域的解决方法
- jsonp的原理
- jsonp的缺陷
- cors的缺点是什么(预检请求option)
- 预检请求是什么
- 怎么样可以避免预检请求
- 了解xxs和csrf吗
- xxs的预防方法,csrf的预防方法
- 你在项目中有解决过这两个问题吗
- token该放在哪个字段,怎么用
- cookie和token的区别
- 最近在看什么书,在哪里学前端的知识
- 反问阶段(最好问一下对这次面试的评价,还有你自己在这次面试中有什么问题)
3.5二面(2h10min)
自我介绍
网络请求的类型
复杂请求和简单请求
什么是跨域还有解决方法
进程和线程的区别
- 进程之间的通信
- 线程执行一段代码是怎样的
c语言是怎么执行一段代码的(虐待前端,问了好多道后端题目,我不会啊)
- c语言和js有什么区别
- char c = 128输出什么
- 源码反码补码的区别
- 什么是虚拟内存空间
- 符号表了解吗(然后问我学的是不是java)
- 有学数据结构吗
- treemap和hashmap的区别
- java和c的区别(会node吗?会)
- bff层和服务端渲染的区别(我说我对服务端渲染和客户端渲染知道的多点,然后扯会前端)
CSR和SSR的区别
看代码说输出
let obj = { func1: function () { console.log(this); }, func2: () => { console.log(this); } } var list = [obj.func1, obj.func2]; var a1 = obj.func1; var a2 = obj.func2; obj.func1(); obj.func2(); a1(); a2(); list[0](); list[1]();
加上一个“use strit”结果会变成什么
什么是严格模式,说说有什么
基本数据类型有什么,什么是包装类型
var a = 1 a.toString() //为什么a是Number类型,这个a还会有toString方法 //这个就是包装类型的东西 这个我不会,所以我说了valueof和toString的隐式调用
虚拟Dom是什么,有什么好处
http的请求有哪些
- get和post有什么区别
- http和https的区别
- 了解http2.0吗
- 说一下http的状态码
- http的头部有哪些字段
tcp和udp的区别
- tcp怎么保证数据传输正确的
- udp怎么可以像tcp一样安全(我说了http3.0)
使用过webpack吗(用过)
- 说一下webpack的打包原理
- 生成的souce map文件是什么
- 他有什么核心概念
网络安全说一下,说一下cdn截断
vue的生命周期
- nextTick是什么
浏览器输入url之后发生了什么
- 浏览器的渲染过程
js怎么实现多线程(web worker和异步方法)
promise的all和race是什么,怎么用
手写一个promise函数(有状态,要异步,能使用then和catch)
不知道为啥,到这里还没过,可能是因为太菜了,然后说下午再来个笔试加试
笔试加试题目:
请在1个半小时内完成下面2道题目,要求功能正常,代码具有可读性。 1. 页面内有一个正方形元素,实现对其拖拽和放下,需要考虑窗口的边界情况。 2.实现大整数相加算法,两个数用字符串模拟函数原型:function add(a, b) {} 要求:代码具备一定的可读性,不能查阅相关资料,可以使用任意ide,可以使用浏览器进行代码调试。 第二题的测试用例如下: 用例1: console.log(add('999', '1') === '1000'); 用例2: console.log(add('1', '999') === '1000'); 用例3: console.log(add('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999', '1')==='1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
3.18三面(1h)
昨天打电话来了,因为在外面没有时间面,你们一定要注意看状态,只要状态变了就不要乱走,尽量保证自己在任何时候都可以面试,不然可能就凉了
- 项目内容的询问(20min)
- 你觉得小程序和h5网页有什么区别
- h5网页和pc网页的不同(适配和300ms延迟)
- 移动端的适配方法
- 虚拟dom的好处和diff算法
- vue双向绑定的底层原理
- vue3.0和vue2.x的实现区别
- proxy是什么,有什么方法
- reflect是什么
- tcp和udp的不同
- 三次握手和四次挥手
- 输入url到页面显示的过程
- 做过什么动画效果,怎么实现的
- 什么是事件机制
- eventLoop是什么
- 什么是微任务和宏任务
- 项目中有什么应用
- 强缓存和协商缓存
- 为什么要etag
- 什么时候选择使用哪个
- https的加密方法(混合加密)
- 为什么会有这样的方法,详细步骤
- https既然加密,为什么还会有网络安全问题
- http的https的区别
- websocket的使用见解和连接原理
- websocket的加密了解多少
- 快速排序和冒泡排序的区别
- 为什么快排不稳定,冒泡稳定
- 刷了多少算法题
- 项目中有用经常使用算法吗(很少用到)
- 那你为什么刷算法,你觉得有什么意义
- 后面的工作或者学习规划
- 反问
我也不知道为什么还会有一个四面,一般实习最多就是三面,腾讯有些部门二面过的也有,我竟然还有个四面,应该是太菜了
3.24四面(55min)
- 自我介绍
- 项目挖掘(30分钟左右,写几个比较有意思的题目)
- websocket的连接原理
- websocket怎么保证长链接的(http也可以长连接,也可以实现websocket的功能,为什么还要使用他)
- 长轮询、long poll和websocket的性能比较
- 懒加载怎么实现(js文件的异步加载呢)
- AMD、CMD等的区别
- http的了解是很重要的
- https的加密过程和加密方法
- http1.0和http1.x的区别
- http的301和302的区别(浏览器处理这两个状态码有什么区别)
- http和https有什么区别
- http2.0和http3.0讲一下
- 网络安全XSS和CSRF
- 把token放在cookie安全吗(为什么)
- cookie和session的区别
- 浏览器的存储(localStorage和sessionStorage等)
- js的闭包是什么(举一个使用闭包的例子)
- JS的内存泄露是什么(怎么检测)
- 浏览器的缓存
- http1.0使用什么缓存(为什么淘汰了)
- cacheControl的各个字段意思
- 协商缓存有了last-modified为什么还要用etag
- 事件捕获和事件冒泡
- 两个为什么不冲突(DOM事件流)
- 怎么阻止事件冒泡
- js的事件机制
- webpack的打包原理
- vite怎么用(原理是什么)
- 首屏优化的方法,说的越多越好
- 说说最近的学习规划
- 反问
球球了,过了这最后一个技术面,让我来个hr面吧
全部评论
(9) 回帖