前端面经 [美团 金山 腾讯云智 数字马力 联影]
面试时没有录音过,只能记得印象比较深刻的一些问题了
给我的技术博客引个流:https://icheng.github.io/ , 主要是前端的东西
美团
分片上传的设计思路
分片除了md5 还有什么加密方式
js 原生绘制图形方法
微前端、子应用通信方式
金山
开源贡献具体做了哪些
微前端、js隔离原理
webpack打包流程
vite
浏览器缓存(说了一些 indexdb,面试官问项目中有用到吗?没有,只是在红宝书里看到过)
组件重载的方式
cookie 可以设置哪些字段(Name和Value键值对、httponly、secure、expries、max-age、samesite、domain)
各类排序算法适合什么场景
对前端技术发展快速迭代的看法
腾讯云智
一面过程很流利,二面有点无奈
二面面试管问 promise 相关
我谈到它之所以能 .then 之后再 .then 是因为 .then 会返回一个新的Promise
面试官表示质疑,问我凭什么这么说
面对主管的质疑弄得我也不自信了,面试结束后翻了翻阮一峰的es6书,书上明确写到:
then方法返回的是一个新的promise实例(注意不是原来那个promise实例)。因此可以使用链式写法,即then方法后面再调用另一个then方法
并且控制台上随手写一个 Promise.resolve(1).then() 就能看到返回值
随后面试官又问到了闭包,我说到:闭包是由函数以及声明该函数的词法环境组合而成的。面试官表示质疑,说没听过这玩意。
...这不是官网就这样写的吗。好吧可能是太官网的话用来回答问题不太合适,我应该通俗一点。
果然二面完就挂了
数字马力
二面面试官姐姐真的很好看,应该是主管,拒offer的时候心很痛
copmuted和method区别,为什么用copmuted(由于缓存、响应式)
箭头函数可以new一个实例吗(不行,它没有构造函数)
原生切片方法
fetch的错误捕获
后面加面主要问一些思维上的问题
联影
二面是全程手撕,其中一道题是,数组去重的方法多写几种
// 测试数据 const a = {}; const b = { c: 1 }; const array = [ 1, 1, "1", "1", {}, {}, { c: 1 }, { c: 1}, a, a, b, b, [], [], [1], [1], undefined, undefined, null, null, NaN, NaN, ]; // 方法 使用map遍历存储 function comeOn(arr) { const map = new Map() // ⭐ const map for (let i = 0; i < arr.length; i++) { if(!map.has(arr[i])){ map.set(arr[i], true); } } return [...map.keys()] // 返回map的键 并包裹在[]中 } // 方法2 set去重 function comeOn2(arr) { return [...new Set(arr)] } console.log(comeOn(array)); // 方法3 filter const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // 方法4 reduce const uniqueArr = arr.reduce((accumulator, current) => { if (accumulator.indexOf(current) === -1) { accumulator.push(current); } return accumulator; }, []); // 方法5 // 对于含有对象的数组,可以利用 JSON.stringify 和 JSON.parse 来进行去重。 // 利用 JSON.stringify 和 JSON.parse 去重的主要思路是将数组中的对象转换为字符串表示形式,因为JavaScript中的对象比较是基于引用,而不是基于结构或内容。这意味着,尽管两个对象可能看起来在结构和内容上是相同的,但它们在比较时仍然被视为不同的对象。而当我们将它们转化为字符串后,这种比较就基于它们的内容了。 const arr = [ { id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' } ]; const uniqueStrArr = [...new Set(arr.map(item => JSON.stringify(item)))]; const uniqueArr = uniqueStrArr.map(item => JSON.parse(item));