数字马力前端一面 郑州
1.自我介绍
2.介绍一下实习项目背景
3.websocket在项目中起到的作用,如何用antv做的动态图
4.讲一下http和https的区别,以及加密过程
5.讲一下http1和http1.1以及http2的区别
6.讲一下协商缓存和强缓存
7.讲一下localstoreage和sessionstorage和cookie
8.讲一下事件循环机制
9.讲一下promise
10.用过哪些promise(all,race),面试官拓展了一个处理并发的promise方法
11.看代码说输出
setTimeout(() => { console.log("1") }); new Promise((resolve) => { console.log("Promise") setTimeout(() => { console.log("2") }); resolve(); }).then(() => { console.log("then") }) setTimeout(() => { console.log("3") }, 50 console.log("log") 输出结果是什么
12.说一下数组的方法
13.数组去重有哪些思路(set,fliter+indexof,reduce)
14.用reduce实现数组求和以及扁平化
const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((accumulator, currentValue) => { return accumulator + currentValue; }, 0); console.log(sum); // 输出:15 function deepFlatten(arr) { // 使用 reduce 方法遍历数组 return arr.reduce((acc, val) => { // 如果当前元素是数组,递归调用 deepFlatten if (Array.isArray(val)) { return acc.concat(deepFlatten(val)); } // 否则,将当前元素添加到累加器数组中 return acc.concat(val); }, []); }
15.说一下js中的var,let,const的区别
for(var i=0;i<10;i++){ setTimeout(()=>{ console.log(i) }) } for(let i=0;i<10;i++){ setTimeout(()=>{ console.log(i) }) }
16.判断数据类型的方法
17.原型链有了解吗(实现链式调用)
class Calculator { constructor(value) { this.value = value; } add(number) { this.value += number; return this; } minus(number) { this.value -= number; return this; } multi(number) { this.value *= number; return this; } div(number) { if (number === 0) { throw new Error("Cannot divide by zero."); } this.value /= number; return this; } pow(number) { this.value = Math.pow(this.value, number); return this; } }
18.说一下vue2和vue3响应式的区别
19.为什么有proxy,vue2还要用object.defineProperty(没了解过)
20.说一下react的钩子
21.你觉得hooks可以写在条件语句里吗,为什么
22.react组件间通信方式
23.react全局管理工具除了redux(mobx和reroil)
24.介绍一下另一个项目
25.如何实现大文件上传的
26.反问
#数字马力[话题]##数字马力##字节##快手##美团#