英语流利说
一面
- 微前端描述下
将前端应用分解成一些更小、更简单的能够独立开发、测试、部署的小块,而在用户看来仍然是内聚的单个产品。
简单来讲就是将庞大的整体拆成可控的小块,并明确它们之间的依赖关系,关键优势在于:
a.代码块更小,更内聚,可维护性更高。
b.松耦合,自治的团队可扩展性更好。
c.渐进的升级、更新甚至重写部分前端功能成为了可能。
- 怎么协同开发
围绕业务功能纵向组建团队,而不是基于技术职能划分。最简单的可以根据最终用户看到的内容来划分,比如将应用中的每个页面作为一个微前端,并交付给一个团队全权负责。这种方式能够提升团队工作的凝聚力。
实施渐进式重构,先让新旧代码和谐共存,再逐步转化旧代码,直到整个重构完成,这种增量升级的能力,可以降低产品局部替换的风险,包括升级依赖项、更替架构、UI改版等。另一方面也带来了技术选型上的灵活性,有助于新技术、新交互模式的实验性试错。 - 注意事项
独立构建意味着公共资源的冗余,继而增加用户的流量负担。
团队自治程度的增加,可能会破坏协作。
微前端将产生一堆小的东西,因此需要考虑是否具备采用这种方法所需的技术和组织成熟度。
a.现有的前端开发、测试、发布流程如何扩展支持很多个应用
b.分散的,控制弱化的工具体系及开发实践是否可靠
c.针对各式各样的前端代码库,如何建立质量标准
- 场景问题
- 两个请求并行发送,如果其中一个请求出错,就用默认值代替,怎么实现
- 页面有两个相同的请求怎么复用
- react 生命周期
- react通信
- 跨域通信有哪些
- http缓存
- 懒加载
- commonjs 和 es module区别
- tree sharking原理
- loader 会 plugins区别
- 防抖和节流区别,大概实现
- 了解哪些新技术
二面
- 介绍一下项目亮点
- 介绍一下微前端
- 说一下npm包管理机制
- A插件依赖D插件版本是1.0.1,B插件依赖D插件版本是1.0.2,C插件依赖D插件1.1.0,那么npm i 之后,下载了几个版本的D插件
HTTP常见的状态码 ,401 403分别是什么, 常见的请求头响应头有哪些
- 说一下webpack配置,常用的loader、plugin
- 场景题目
1
2
3
4
5if(a == 1) {
console.log(a);
}
// 控制台会报错么
// 如果报错是什么类型的错误
三面
- 介绍项目
- 你充当的角色
- 你平时是如何学习的
- 对自己的规划
- 别人怎么评价你的
携程
一面
- 介绍微前端
- 乾坤框架怎么实现的沙盒机制
- 手写一个单例模式
- 手写一个发布订阅模式
- 手写一个redux的compose函数
- 手写一个组合继承
- 垃圾回收机制了解么,介绍一下
- 自定义hooks和函数有什么区别
二面
- 事件循环输出顺序问题
- 实现函数异步请求成功后就返回,失败后重试max次
- 前端怎么埋点监控
- hooks为什么不能写在if 语句里面
- useCallback的实现原理
- 怎么画1px像素线,逻辑像素,物理像素的概念
- 自己写的mock服务是怎么实现的,为什么不在webpack里用相关插件
三面
- 公司是做什么的,介绍下公司产品
- 你现在充当的团队角色
- 你现在是一个管理者了,为什么离职了
- 将来的规划
- 携程面的是一个新的业务线,需要一段时间的996,但是携程本身不是996公司了,加班有加班费,并且携程面试完之后会有一个行测评测和英语口语评测,必须要过。
携程面试完之后会有一个行测评测和英语口语评测,必须要过。
比心APP
一面
- 介绍下项目
- 说一下微前端实现
- 写一个Promise.all函数
- 写一个发布订阅模式
- 一道setTimeout事件循环的题目
- 手写题实现电话号码隔位显示(3 4 4)
- 算法题[0, 2, 3, 0, 5, 0, 0]将0全部移动到后面去
二面
- 介绍下项目亮点
- 说一下redux如何使用
- redux源码介绍下
- 你说你angular, vue, react都使用过,说一下三者的区别
- 了解缓存么 大概讲一下
- 解释下https
- 介绍几个git常见的操作命令
三面
- 介绍项目亮点
- react通信是怎么样的
- react-redux中connect怎么连接组件的
- 为什么要离职
- 你最擅长的是什么
百度
一面
- 介绍一下微前端
- 乾坤框架源码看过么
- 写一个自定义hooks,useDiff
- 数组去重方法越多越好
- 写一个匹配邮箱的正则
- 实现函数
1
2function repeat(s, count) {}
repeat('s', 3) // 输出 ‘sss’ - 函数实现
1
2
3
4
5
6
7
8// 正则匹配标签名 输出div p span
<div>
<p>
<span></span>
</p>
<span>
</span>
</div> - 实现一个深拷贝
- 实现函数统计字符串里面出现次数最多的字符
- 有做过什么优化么
二面
- 介绍下微前端
- hooks常用的api有哪些
- useState,useEffect,useRef,useMemo在存储数据方面有什么区别
- hooks组件怎么向外传递方法
- 写一个三列等距布局,越多越好
- 写一个公共组件需要注意哪些
- 写一个表单生成组件
- 生成一个完整的组件
- 表单填入的值,可以返回出去
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15const config = [
{
type: 'input',
name: 'name',
key: 'name'
},
{
type: 'select',
name: 'work',
key: 'work',
options: []
}
]
<FormC config={config} />
- 你ts用的多么,说几个高级用法
- 介绍下interface和type的区别
三面
- 介绍下项目
- 为什么要重构项目
- 为什么要做微前端
- 详细说一下机器学习做的事情
- 你觉得AI智能给前端带来的变化
百度好像react比较看重,其他的几个岗位基本也是招react
京东凹凸实验室
- 介绍下微前端实现方式,以及你们是怎么做的
- 乾坤框架源码看过没
- commonjs 和 es module区别
- 代码题1
1
2
3
4
5
6
7
8// a.js
module.exports = {};
exports = {
name: 'json'
};
// b.js
const a = require('./a.js'); // 输出什么 - 代码题2
1
2
3
4
5// a.js
module.exports = function a() {}
// b.js
// 在b中用es6 module语法怎么引入 - 介绍下浏览器缓存机制
- webpack打包原理是怎么样的
- webpack 插件写过没,介绍下原理
- webpack5介绍下
- 看你用过react介绍下fiber架构
- esbuild知道么介绍下
- 你用过vue,现在出了vue3.0介绍下
- vue现在出了一个打包工具vite,介绍下为什么会比其他的打包工具快
字节跳动
一面
- 介绍下项目,微前端实现
- 介绍下https加密过程
- redux原理
- 第三方登录,如果让你去设计,你会怎么考虑
- 介绍下浏览器和node的事件循环
- 做了一道原型链输出问题
- 做了一道setTimeout输出问题
- 做了一道this.setState输出问题(异步和合并)
- 实现一下promise.race
- 实现一下task().eat().sleep(2000).eat().sleep(2000)函数
- 判断链表有环但是空间复杂度是O(1)
二面
- 介绍下项目
- redux用的熟么,介绍一下源码
- connect怎么处理组件的
- context会有什么性能问题么
- 实现防抖节流
- 实现sum(1)(2, 3)(4)柯里化
- 实现一个非树状结构转树状结构函数
- 一个查找最长子字符串算法
三面
- 介绍下项目
- 微前端实现
- 乾坤框架如何做到隔离
- 实现一个String.prototype._trim函数
- 实现一个reduce
- 实现一个多个请求,并行和串行的函数
tips: 想面试字节的同学,一定多刷函数实现,算法(连续做一个月),源码理解