前端面经 [美团 金山 腾讯云智 数字马力 联影]

面试时没有录音过,只能记得印象比较深刻的一些问题了

给我的技术博客引个流: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));

全部评论
then跟闭包的解释感觉没问题啊
点赞
送花
回复
分享
发布于 2023-11-16 14:27 山东
腾讯云智二面面试官有点拉胯啊
点赞
送花
回复
分享
发布于 2023-12-20 12:17 浙江
秋招专场
校招火热招聘中
官网直投
怎么弄出来的腾讯云智那一段的字体样式的?
点赞
送花
回复
分享
发布于 2023-12-28 13:13 陕西

相关推荐

1.&nbsp;自我介绍?2.&nbsp;为什么选择前端?3.&nbsp;学习前端渠道?4.&nbsp;新手引导组件是怎么做的?5.&nbsp;(续)怎么去动态计算高亮区域以及指引的位置?6.&nbsp;(续)要是高亮区域在左上角或是右上角怎么处理?7.&nbsp;(续)如何去做到这个位置的自适应?8.&nbsp;(续)有考虑过这个组件后续还能优化的点吗?9.&nbsp;H5答题模块是怎么去设计的?10.&nbsp;(续)列举几个服务端发送的题目JSON字段?11.&nbsp;图片体积压缩格式转换是怎么做的?12.&nbsp;(续)有没有考虑过使用plugin?13.&nbsp;首屏优化指标怎么分析的?14.&nbsp;(续)介绍一下首屏优化的关键指标?15.&nbsp;Ts类型覆盖率提高到90%这是如何统计的?16.&nbsp;介绍一下响应状态码?301、302是什么?17.&nbsp;(续)强缓存与协商缓存?相关的响应头字段和值?18.&nbsp;(续)304都和这两个有关吗?19.&nbsp;常见的网络攻击xxs、csrf有了解吗?20.&nbsp;数组都有哪些方法?21.&nbsp;(续)unshift和pop有什么区别?22.&nbsp;(续)splice和slice有什么区别?23.&nbsp;节流和防抖?口述怎么写?应用场景?24.&nbsp;说一下垂直居中?25.&nbsp;隐藏一个元素的几种方法?26.&nbsp;介绍一下事件循环?27.&nbsp;宏任务里面有一个微任务和宏任务,微任务里面还有一个微任务,执行顺序?28.&nbsp;promise.all和promise.race有什么区别?29.&nbsp;(续)有没有什么办法可以让promise不管成功还是失败,都并行结束?30.&nbsp;鼠标移入盒子的时候,如何让他宽高增大一倍?31.&nbsp;仅仅只有一个div,里面不能加东西,如何添加省略号(...)?32.&nbsp;(续)那怎么让页面展示三个盒子呢?33.&nbsp;(续)那七个、八个甚至更多呢?34.&nbsp;JQuery和Vue有什么区别?35.&nbsp;(续)为什么需要虚拟DOM?36.&nbsp;(续)为什么性能会更好?37.&nbsp;最近有在学习什么分享一下?许愿复试
数字马力一面28人在聊 查看41道真题和解析
点赞 评论 收藏
转发
13 20 评论
分享
牛客网
牛客企业服务