武汉
面试流程
面试题
1 面
- 自我介绍
- 说下如何做的性能优化
- 说一下宏任务和微任务的区别
- 说一下 requestAnimationFrame
- 说一下 requestIdleCallback, 该回调会阻塞渲染么
- 说一下重排和重绘
- getBoundingClientRect 一定会触发重排么
- 有用过 TS 么
- 写下如下函数的 TS 定义
// 获取对象的 key
interface Person {
name: string
age: number
}
setObject(person, 'name', 'tom')
setObject(person, 'age', 12)
- 完成如下算法
/*
实现一个 flatten 方法,输入一个嵌套的对象,输出一个扁平化的对象
{
'a.b': 1,
'a.c': 2,
'a.d.e': 5,
'b[0]': 1,
'b[1]': 3,
'b[2].a': 2,
'b[2].b': 3,
'c': 3
}
*/
flatten({
a: {
b: 1,
c: 2,
d: {
e: 5
}
},
b: [1, 3, {
a: 2,
b: 3
}],
c: 3
})
- 在题目 10 的实现下
/**
* 如果是嵌套对象则输出为 X
* /
2 面
-
自我介绍
-
有做过流式渲染么
-
怎么处理 markdwon 截断的
-
实现一个 markdown 缺省表格字符串补齐的功能
/*
输入缺省的或者完整的 markdown 表格字符串,自动修正表格,避免缺失
CASE1=`
| 姓名 | 年龄 |
| ---- | ---- |
| 张三 | 18
`
补全为
`| 姓名 | 年龄 |
| ---- | ---- |
| 张三 | 18 |
`
CASE2=`
| 姓名 | 年龄 |
`
补全为
`| 姓名 | 年龄 |
| ---- | ---- |
`
*/
function completeTable (markdown: string): string {
// TODO
return ''
} -
如果要设计一个高性能表格,你要如何实现,说一下你回如何定义组件的属性,业务方如何使用?
3 面
- 自我介绍
- 说一下你做过的最有挑战性的项目
- 你对工作的态度是怎样的
- 有用过哪些协同表格产品
- 协同表格存在哪些难点
- 如果要实现一个表格的一列都格式化要怎么做
- 对于一个大量数据的表格如何优化
- 有没有做过内存优化
- 怎么做内存优化
- 为什么表格的协同单位是单元格,不支持单元格里合并
- 如果用户报了一个bug 说表格不支持单元格合并,你要怎么处理
- 如果要将 AI 集成到协同文档你觉得机会在哪
- 字符串计算器
/**
* 实现一个字符串计算器,输入 "1+2*3-4/2" 输出结果为 5
*/
function calculate (str) {
}
- 在 13 的基础上实现如下功能,支持前缀表达式,如
+ 1 2输出 3,支持括号 - 有什么问题问我