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

前端面经合集 [美团 金山 腾讯云智 数字马力 联影]
最新回答
捂住眼睛捂不住人心

2022-04-20 02:34:30

前端面经合集 [美团、金山、腾讯云智、数字马力、联影]美团
  1. 分片上传的设计思路

    分片加密方式:除了MD5,还可以使用AES、RSA等加密算法对分片进行加密,以确保数据的安全性。

    分片策略:根据文件大小和上传速度,动态调整分片大小,以提高上传效率和成功率。

  2. JS原生绘制图形方法

    使用<canvas>元素及其相关的API(如getContext('2d'))进行图形绘制。

    常用的绘制方法包括fillRect、strokeRect、lineTo、arc等。

  3. 微前端、子应用通信方式

    事件总线:通过全局事件总线进行通信,子应用可以监听和触发事件。

    自定义属性:利用HTML的自定义属性进行数据传输。

    状态管理:使用全局状态管理工具(如Redux、Vuex)进行状态共享。

金山
  1. 开源贡献具体做了哪些

    参与开源项目的代码编写、测试、文档编写等工作。

    提交bug报告、修复bug、提出改进建议。

    参与开源社区的讨论,分享技术心得和经验。

  2. 微前端、JS隔离原理

    JS隔离:通过沙箱技术、iframe等方式实现不同微前端应用之间的JS隔离,防止相互影响。

    样式隔离:使用CSS模块化、CSS-in-JS等技术实现样式隔离。

  3. Webpack打包流程

    入口分析:从入口文件开始,递归地解析依赖关系。

    模块转换:将模块转换为浏览器可识别的格式(如将ES6转换为ES5)。

    代码分割:根据配置和依赖关系,将代码分割成多个文件。

    优化:进行代码压缩、去重等优化操作。

  4. Vite

    Vite是一个现代化的前端构建工具,它利用ES Module的浏览器原生支持,实现了极快的冷启动和热模块更新。

    Vite通过插件系统支持多种前端框架和工具链。

腾讯云智
  1. Promise相关

    then方法:then方法返回一个新的Promise实例,因此可以使用链式写法。

    闭包:闭包是由函数以及声明该函数的词法环境组合而成的,它允许函数访问其词法作用域之外的变量。

  2. 前端技术发展快速迭代的看法

    前端技术发展迅速,迭代周期短,这要求开发者不断学习新技术,保持竞争力。

    同时也促进了前端生态的繁荣和多样化,为开发者提供了更多的选择和工具。

数字马力
  1. computed和method区别

    computed:基于响应式依赖进行缓存,当依赖发生变化时,重新计算结果。

    method:每次调用时都会执行函数体,不会进行缓存。

  2. 箭头函数

    箭头函数没有自己的this、arguments、super或new.target绑定。

    箭头函数不能用作构造函数,即不能使用new关键字来创建实例。

  3. 原生切片方法

    使用Array.prototype.slice方法对数组进行切片操作,返回一个新的数组。

  4. fetch的错误捕获

    使用try...catch语句捕获fetch调用过程中可能抛出的异常。

    使用Promise.catch方法捕获fetch返回的Promise对象可能抛出的异常。

联影
  1. 数组去重方法

    使用Map遍历存储:通过遍历数组,利用Map的键唯一性进行去重。

    Set去重:利用Set集合的唯一性特性进行去重。

    filter方法:通过filter方法和indexOf判断元素是否唯一。

    reduce方法:通过reduce方法累加唯一元素。

    JSON.stringify和JSON.parse:对于含有对象的数组,可以将对象转换为字符串进行去重,然后再转换回对象。

综上所述,这些面经涵盖了前端开发中常见的知识点和技术点,包括分片上传、JS原生绘制、微前端通信、Webpack打包流程、Vite、Promise、闭包、computed和method的区别、箭头函数、原生切片方法、fetch错误捕获以及数组去重等。通过学习和掌握这些知识点,可以提升自己的前端开发能力和竞争力。