课程名称:前端面试模拟+复盘 ,揭秘面试官的内心世界
课程章节:第3章剩余章节11-23
主讲老师:双越
课程内容
11节开始属于二面,开始考察算法、框架原理和项目相关内容
- 用 JS实现队列的入队、出队和长度,需要使用链表来模拟,知识点不难,只需要注意边界就行了
- 机器人行走方格的题是考二位数组,有点跟杨辉三角类似
- 手写Vue3的reactive,其实是考察Vue3响应式,基本逻辑是用Proxy做属性修改,然后用注册函数执行对应的监听逻辑
- Vue3和Vue2diff算法的区别,Vue2用的是双端比较,Vue3增加了最长递增序列,还有patchFlag、静态提升、函数缓存等,要求对VDOM有所了解
- 从零搭建开发环境需要考虑什么:这个题看的是选手是不是有完整的开发经验或者管理的能力
- 介绍自己的一个项目:这个问题选手的回答确实挺好,有技术名词有业务功能,还可以问出一些细节
- 反问面试官,大部分是选手的交流,比如学历问题、前端的前景、35岁事业和定居问题等
课程收获
这节课的收获还挺大!虽然选手的能力方面有些不足,也给我们有了很好的参考,比如进大厂一定要把算法学好,要对源码有一定的了解。
焦虑很多学员应该有共鸣,老师的开导让人豁然开朗:大专的学历需要及时地提升学历,没有必要担心太远的事情,规划好最近的一两年积极主动地去提升,以后的工作不用担心学历的问题,因为技术和经验已经成为自己的背景了。
答案:
function getPaths(m, n) {
// m * n 二位数组,模拟网络
const map = new Array(m)
for (let i = 0; i < m; i++) {
map[i] = new Array(n)
}
// 如果只走第一行,就只有一条路径。所以第一行所有item都填充1
map[0].fill(1)
// 如果值走第一列,也只有一条路径,所以第一列所有item都填充1
for(let i = 0; i < m; i++) {
map[i][0] = 1
}
// 其他item, 根据这个公式map[i][j] = map[i - 1][j] + map[i][j - 1]
// 如果走到[5,4]的路径,就是[4, 4]和[5, 3]路径数的总和——动态规划的思想
// 注意:i 和 j都从1开始!! 因为0位置已经被上文赋值为1了
for(let i = 1; i < m;i++) {
for(let j = 1; j < n; j++) {
map[i][j] = map[i - 1][j] + map[i][j - 1]
}
}
return map[m -1][n - 1];
}