微训领航一面面经

First Post:

Last Update:

前30min

  • 自我介绍

  • 如何学习前端

  • 项目介绍

八股吟唱

  • var let const 区别

  • for in for of区别

  • 原型和原型链

  • 闭包

  • 箭头函数

  • 跨域

  • 基本数据类型和引用类型

  • splice和slice

  • 知道promise吗

  • 垂直水平居中的方法

  • 宏任务与微任务

  • 知道Set吗

  • 输入域名到进入网页中间经历了什么

    • DNS解析

    • 从服务器获取静态资源

    • HTML和CSS渲染

  • react的hook你知道几个

场景题和算法

  • 看代码说输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
console.log("Start");

setTimeout(() => {

console.log("Timeout");

}, 0);

Promise.resolve().then(() => {

console.log("Promise");

});

console.log("End");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function MyComponent() {

const [count, setCount] = useState(0);

useEffect(() => {
console.log('useEffect');
return () => {
console.log('Cleanup');
};
}, []);

useEffect(() => {
console.log('count refresh');
}, [count]);

console.log('Function body');

return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
interface RootNode {

type: "operator" | "number";

operator?: "+" | "-"

value?: number

// 如果是操作符,那么一定有左右子节点

left?: RootNode

right?: RootNode

}

// 1 + 1 + 1

const root: RootNode = {

type: "operator",

operator: "+",

left: {

type: "number",

value: 1,

},

right: {

type: "operator",

operator: "+",

left: {

type: "number",

value: 1

},

right: {

type: "number",

value: 1

}

}

}

// 实现算法计算一个表达式树的值

function evaluate(root: RootNode): number {



}

// 将一个表达式树转换为表达式字符串

function toExpression(root: RootNode): string {



}

反问

  • 有什么建议吗?“回去多学学数据结构和算法再来吧”