Skip to content
On this page

1. 声明变量的几种方式?var const let

  • 变量声明提升
    • var 有变量声明提升的功能,可以先使用然后再声明,反之也成立
    • let const 没有此功能,必须要先声明才能使用
  • 重复声明
    • var 可以重复声明,后者覆盖前者
    • let const 则不能重复声明
  • 作用域范围
    • var 的作用域是以函数为界限
    • let const 是块作用域
    • var 可以定义全局变量和局部变量,let const 只能定义局部变量
  • const 的特殊之处
    • 声明之后不能被修改(常量)

2. 解决异步的几种方式和区别

  1. 回调函数:容易造成回调地狱
  2. Promise:使用微任务队列驱动,使用管道式处理,链式调用
  3. generater 函数
  4. async/await:可以讲异步事件使用同步的语法来处理,是 generater 函数的语法糖

3. for 循环和 forEach 的区别

  1. 都可以遍历数组集合,for在复杂循环中效率更高
  2. forEach 不可以删除、修改集合元素,而 for 可以
  3. 都可以修改元素里面的属性
  4. for 可以中断循环(使用 break 或 return),forEach 不可以中断

4. forEach 和 map 的区别

  1. map 会分配内存空间存储新数组并返回,forEach 不会返回数据,是undefined
  2. forEach允许callback更改原始数组的元素,map返回新的数组

5. 浏览器缓存

  1. 强缓存 (200)Expires Cancel-Control
  2. 协商缓存 (304)

6. 事件循环的理解

js 是单线程语言,同一时间内只能做一件事,而实现单线程非阻塞的方式就是事件循环。

所有任务可以分为 同步、异步任务。同步任务是立即执行的任务,一般会直接进入到主线程中执行。异步任务进入任务队列,主线程的任务执行完毕为空,会去任务队列中读取对应的任务,推入主线程执行。

7. 如何看待加班问题

如果项目紧急的话,肯定是不可避免的。无效加班只是为了形式而已

太原 21 人,前端5个,预计招1,2人,后端太原6个,北京3个。UI 1个,3个测试。

React + Ts 医疗

8. interface 和 type 区别

  1. type 可以描述所有数据,只是一个类型别名;interface 只能描述对象,是类型声明
  2. type 不可重新赋值,尽量对内;interface 会自动合并,对外使用,方便扩展

9. 泛型

  • 在定义函数、接口或者类的时候,不预先指定具体的类型,而是在使用的时候再指定类型的一种特性
  • 提高代码的可重用性,使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据

10. 面试中我回答的问题,你感觉哪些方面比较薄弱,需要加强提高的

11. js 防抖节流

12. this 指向

13. 双向绑定的实现原理

14. 视图不更新

绑定的数据没有响应化,可能是新增属性,需要手动通过 $set 设置

15. 父子组件生命周期顺序

  • 加载渲染过程:父beforeCreate —> 父created —> 父beforeMount —> 子beforeCreate —> 子created —> 子beforeMount —> 子mounted —> 父mounted
  • 子组件更新过程:父beforeUpdate —> 子beforeUpdate —> 子updated —> 父updated

16. 闭包

有权访问另一个函数作用域中的变量的函数;一般情况就是在一个函数中包含另一个函数。

  • 隐藏变量,避免全局污染
  • 可以读取函数内部的变量

17. 继承

  1. 原型链继承
  2. 借用构造函数继承(伪造对象、经典继承)
  3. 实例继承(原型式继承)
  4. 组合式继承
  5. 寄生组合继承
  6. es6继承

18. 组件通信方式(vue、React)

  1. $attrs $listener $parent $children $root props/emit vuex pinia eventBus provide/inject
  2. react: props ref 回调函数 context redux mobx

19. react 的 hooks 钩子

  1. useState
  2. useEffect 生命周期管理
  3. useContext
  4. useRef
  5. useMemo
  6. useCallback
  7. useReducer
  8. useLayoutEffect 完成副作用操作,会阻塞浏览器绘制

useEffect:

  1. 不传值:第一次渲染以及每次更新渲染后都执行
  2. 空数组:第一次渲染后执行一次
  3. 基本类型:第一次渲染以及每次更新渲染后都执行

20. 自己要问的问题

20.1 公司团队有多少人,前后端,做什么业务?

20.2 面试过程中觉得我有哪些方面比较欠缺?

20.3 招人的原因,是接手上一个人,还是业务的扩展?