阿里云前端面试
09/14 一面
- 自我介绍,前端经历
- 长列表渲染优化,异步加载节点信息。元素不定高场景下怎么做虚拟列表。
- 性能优化的指标。
- XSS注入和SQL注入排查修复。
- 微前端技术,qiankun框架,spa和mpa,js隔离、样式隔离。
- 通用上传组件,中间件机制洋葱模型。
- 低代码平台优势劣势。(问了低代码协议相关,没看过)
- 进程线程协程概念及区别。线程共享进程中哪些资源。
- 如何写一个死锁。
- ES6新增特性,js作用域和块级作用域。
- 闭包和箭头函数特性。箭头函数编译后的es5产物(不会QAQ)。
- 原型与原型链,es6的class编译成es5的产物。
- CommonJS和ESModule区别
- Vue3响应式原理,vue2中怎么解决新增属性的响应式。
- 跨域解决方法。
- 反问。
09/19 笔试
- 第一题不记得了,比较简单
- 第二题:以下数据结构中,id 代表部门编号,name 是部门名称,parentId 是父部门编号,为 0 代表一级部门,现在要求实现一个 convert 方法,把原始 list 转换成树形结构,parentId 为多少就挂载在该 id 的属性 children 数组下,结构如下:
let list =[ {id:1,name:'部门A',parentId:0}, {id:2,name:'部门B',parentId:0}, {id:3,name:'部门C',parentId:1}, {id:4,name:'部门D',parentId:1}, {id:5,name:'部门E',parentId:2}, {id:6,name:'部门F',parentId:3}, {id:7,name:'部门G',parentId:2}, {id:8,name:'部门H',parentId:4} ]; const result = convert(list, ...); // 转化后 let result = [ { id: 1, name: '部门A', parentId: 0, children: [ { id: 3, name: '部门C', parentId: 1, children: [ { id: 6, name: '部门F', parentId: 3 }, { id: 16, name: '部门L', parentId: 3 } ] }, { id: 4, name: '部门D', parentId: 1, children: [ { id: 8, name: '部门H', parentId: 4 } ] } ] }, ··· ];
09/27 二面
基础八股:
- TCP为什么三次握手,为什么四次挥手
- 跨域解决什么问题,为什么
script、img等标签
还是可以跨域,只对ajax、dom等有跨域限制。(不太懂) - HTTP缓存,强缓存和协商缓存分别节省了哪些东西。
- XSS防御方法、CSRF相关
- HTML语义化
- TS泛型,有什么作用
- 原型链,es6 class 的编译产物(两次了,看来这个一定得会)
- 垃圾回收机制,引用计数法、标记清楚法。
简历项目相关:
- 微前端作用及优势,spa 、mpa优缺点。为什么不用 iframe 而用 qiankun。微前端带来了哪些额外工作。
- webpack 插件相关。打包过程静态资源自动上传 cdn。
- 通用上传组件重构维护,分片上传并发控制。(这里扯了好久,问异步任务的并发控制有什么意义,不是真正的并发)应用场景、优化的效果等等。
- 反问。
感觉最后没答好,等结果了。
10/18 三面
自我介绍
没有八股和简历提问,主要聊了技术视野和对前端技术未来发展方向的探讨,以及为什么选前端、自身的一些特点等等。
泡池子
10/31 更新,状态从面试中变为等待面试结果
#前端面经#