小米前端实习一面,已过
- 自我介绍
- 问了一点简历上的项目相关的内容
- 接下来就直接开始了coding环节
- 手写一个三栏布局,左右宽度固定,中间自适应,我用了flex和grid,有问到flex这个复合属性具体是哪三个,分别代表什么意思
- 一个关于js作用域和闭包的代码输出题,大概长这样,问最终console.log的输出结果
var value = 1
function foo() {
console.log(value)
}
function bar() {
var value = 2
foo()
}
bar()
- 考察了原型链,这块有点忘了,在面试官的提醒下还是答错了
Function.prototype.a = () => {
console.log(1)
}
Object.prototype.b = () => {
console.log(2)
}
function Fn() {}
const obj = new Fn()
obj.a()
obj.b()
Fn.a()
Fn.b()
/**
* obj的原型链应该是 obj.__proto__ === Fn.prototype
* Fn.prototype.__proto__ === Object.prototype
* Object.prototype.__proto__ === null
*
* Fn的原型链应该是 Fn.__proto__ === Function.prototype
* Function.prototype.__proto__ === Object.prototype
* Object.prototype.__proto__ === null
**/
- 通过一道代码输出题,考察了浏览器事件循环,
new Promise(resolve => {
console.log(1)
resolve()
}).then(() => {
console.log(2)
}).then(() => {
console.log(3)
})
setTimeout(() => {
console.log(4)
})
new Promise(resolve => {
console.log(5)
resolve()
}).then(() => {
console.log(6)
})
console.log(7)
// 正确答案是 1 5 7 2 6 3 4
- 给你一个多叉树结构,要求写一个dfs和bfs去遍历它,还算比较简单
- 问了一下git的使用,比如如何使用git管理平时的开发代码,如何解决冲突,merge与rebase的区别
- 最后问了vue3的响应式与vue2的响应式之间的区别,以及composition api的好处,对它的理解
注意的点:做这种代码分析题和手写题的时候,可以先把你的思路告诉面试官,然后再进行下一步。写代码的时候不要一言不发,要和面试官有互动。
面试结束之后很快就收到了二面通知。总体给我的感觉就是一面更加关注候选人的基本代码能力,以及对知识的掌握运用,面试官人不错,会提供思路带着你往前走。只要不是太差一般没问题。希望二面顺利吧!