时间:2023.8.28
时长:66 min
base:北京 帝都
面试岗位:前端 秋招
自我介绍
你有Java经验,为啥选择前端?
刚刚说到单点登录,能说一下它的原理吗?
前端需要做什么工作?
你们这样设计,兼容性不会特别差吗?
微应用是如何组织架构的?
你知道qiankun是基于什么封装的吗?
single SPA框架你了解吗
你能说一下单页面应用,能说一下吗?
你的理解没有问题,讲得非常通俗易懂,你知道路由切换的原理吗?
你提到了代码的复用,你平常做了哪些工作?
你这是属于CR后面做优化,然后优化中带了一些复用的点
你觉得前端整个系统有哪些复用的方面
你说的v-for是vue的?是的
你用的vue2还是vue3
vue3除了组合API,还有什么变化吗?
你刚刚说到proxy,能具体展开吗?
你知道$set吗?
computed和watch区别
能大概介绍一下vue的数据驱动的底层吗?
你刚刚说到watcher,是啥?
问几个基础性性问题,promise了解吗? new 一个 promise 先resolve,然后reject,会怎么样?
有一个then,return了一个值,下一个then能拿到这个值吗?
你的项目经历分享了xxxx,不便说
原型链你知道吧?
原型链的尽头是啥?
如果写一个类的继承你应该知道吧?
你觉得什么时候再JavaScript会用到类?
面向对象的好处是啥?
问一个比较开放的问题,你觉得前端是面向对象的吗?
闭包你知道吧?
你现在是什么时候毕业
你在在校期间有没有参加过一些实际的项目开发?
你有没有深入去做过一个事情?
平时怎么去学习前端的?
你觉得你你目前前端是个水平的人?
如果你和你的mentor观点上发生了冲突,他认为他的好,你认为你的好,怎么办呢?
简单写个题吧,手撕代码是两数之和,但是有一点小改动,就是下标从1开始,而不是0,花了五分钟把背诵的全文默写了一遍,看我写完了,又给我出了一提,让我递归构建树结构,给一个数组,让树结构生成出来,由于当时剩余时间不多,没写出来,然后我下来自己写了一遍,代码如下:
const fun = function (arr) {
//找到 head,
const head = arr.filter(item => item.pid == null)[0]
dfs(head)
return head
function dfs(root) {
const list = arr.filter(item => item.pid === root.id)
if (list.length === 0) return;
root.childrem.push(...list)
for (let i = 0; i < list.length; i++) {
dfs(list[i])
}
}
}
class Person {
constructor(name, age, id, pid) {
this.name = name
this.age = age
this.id = id
this.pid = pid
this.childrem = []
}
}
const arr = [
{name: '张三', age: 18, pid: null, id: 1},
{name: '李四', age: 18, pid: 1, id: 2},
{name: '王五', age: 18, pid: 2, id: 3},
{name: '赵六', age: 18, pid: 3, id: 4},
{name: '孙七', age: 18, pid: 2, id: 5},
{name: '钱八', age: 18, pid: 1, id: 6}
]
console.log(fun(arr.map(item => {
return new Person(item.name, item.age, item.id, item.pid)
})));
反问环节 经典问技术栈和做什么
面试官比较友好,可惜了,背诵的手撕代码写太快,导致又给我出一题,呜呜呜
#秋招##面经##前端##美团#