oakland / tecblog

My tech blogs
4 stars 0 forks source link

面试 #285

Open oakland opened 3 years ago

oakland commented 3 years ago

基本概念

考你对基本概念的理解,尽量在某个基本概念上有深入的理解,这样就可以有亮点。没有亮点的尽量不要有明显的缺陷。

promise: then, allSettled, all, race, catch 闭包 this 异步 event loop

网络相关

考的是实际中项目的应用和了解

怎么判断是不是一个 ajax 请求,还是正常的浏览器请求。感觉是通过 request.header 来判断

http status code

缓存的各种(304, 302 等等),强弱缓存。

实战

git 操作

数据结构和算法

主要考你的思路和反应速度。单纯的刷题可以开拓眼界,但是并不能代表你的思路和反应能力。

相邻去重 =》 相邻消除

可以用两个栈模拟一个队列吗?

对于写算法的这种操作可以先用注释的方式把思路写出来,然后再开始写,这样至少可以保证自己的伪代码是正确的。

react, vue

里面的一些常见概念和坑

生命周期

设计模式

面试的感悟

最后面试就考几个方面,一个是往深问,就是往细节问,往微观问,比如 promise 就可以问的很深,也可以问的很浅,然后还有 react 相关的概念也可以往深了问。另一个是往高了问,就是往宏观和抽象了问,比如问问设计模式。然后还有就是往快了问,就是考反应能力和思路的,比如数据结构和算法这些。还有就是往广了问,就是比如 git, http 等等这些。

其他

其实有时候面试官问的正好是自己的知识盲点,最后的环节,如果你是面试官可以让对方主动谈谈自己擅长的地方。如果你是被面试的人,也可以问面试官对自己擅长的这部分是不是感兴趣。如果感兴趣可以顺便继续聊一下。另外一方面就是最后的环节如果你是面试者,你可以以出其不意的方式来考面试官,让自己的长处展示的淋漓尽致。给面试官留下一个深刻的印象。

oakland commented 3 years ago

具体题目

按值传参和按引用传参

let a = {
  name: 'julia',
  age: 20
};

function change(o) {
  o.age = 24;
  o = {
    name: 'Juan',
    age: 30
  };
  return o;
}

const b = change(a);
console.log(a);
console.log(b);