前端-记最近的面试题目(2021.3 - 4月)

227 阅读4分钟

js

  • getPrototypeOf 与 getAttribute 区别
  • typeof instanceof 区别,instanceof 实现
  • 基本类型 引用类型 有哪些;如何判断一个变量的类型
  • 原型链
  • 函数作用域链
  • new 的过程
  • call apply 的过程(改变this指向)
  • es5继承;组合继承与原型链继承区别
  • es5继承 与 es6继承 的区别;super做了什么;class 类实现过程
  • 垃圾回收
  • eventloop 微任务 宏任务;微任务里产生的宏任务什么时候执行(Promise setTimeout 打印顺序题)
  • 深拷贝 浅拷贝
  • if else switch case 优化
  • 装饰器
  • 设计模式(策略模式)
  • es5 xhr es6 fetch 区别
  • encodeURI 和 encodeURICompoent
  • setTimeout 中的错误捕获、异步错误捕获
  • 闭包 如何产生 为什么可以访问到 作用 弊端;addEventListener 事件是不是闭包
  • 箭头函数与普通函数区别
  • for in 和 for of
  • map set
  • forEach map(如何使用forEach渲染组件)
  • AST语法树
  • http 如何上传文件
  • 函数作用域 块级作用域
  • var let
  • let const
  • 如何使一个对象属性不可更改(defineProperty writable)
  • defineProperty 与 proxy 区别
    • defineProperty 还有哪些属性
    • defineProperty 属性可以更改多次吗,如何只更改一次(可以多次;设置 configurable 为false)
  • 如何判断一个对象是 proxy
  • reflect 是什么
  • this指向
  • bind做了什么,实现
  • Symbol (除了用随机数还能如何生成唯一值)
  • Promise.all 并行还是顺序
  • Promise.all 与 Promise.race 区别
  • async await
    • 调用 async 函数不加 await,返回什么
    • await 一个不是async的函数,返回什么
    • await 普通值或promise,返回什么
    • ...
  • ts type 与 interface 区别

浏览器

  • localStorage 如何扩容
  • localStoragecookie 区别
  • cookie 与 session 区别
  • session 如何存储
  • 加载js阻塞页面渲染吗
  • 节流防抖 实现 应用
  • 重排重绘;如何避免重绘
  • 多进程浏览器是怎样的
  • 多个worker会有几个进程
  • worker 通信,同源策略,作用,有什么限制,可不可以访问 IndexedDB(yes)/localstorage(no),可不可以携带cookie(no)
  • service worker 是什么
  • iframe 如何通信,除了postMessage还有什么
  • 使用 iframe 的弊端(如何实现保留状态栏)
  • cdn优点
  • svg vs iconfont
  • 跨域解决方案

css

  • css 优先级 !important > 行内 > id > 类
  • 边框 0.5 px
  • BFC IFC
  • 垂直居中
  • 三角形 梯形
  • 伪类 伪元素区别
  • em rem区别
  • 自适应布局 弹性布局区别
  • H5 1px 现象,为什么
  • 子元素要求宽高1:1,且随父元素的增大而增加宽高,始终保持子元素宽高1:1
  • 父div(BFC) 子img,都没有宽高限制
    1. 子img会如何展示
    2. 子img下方和div会有一段间隙 为什么(BFC中的IFC会按照基线对齐)

react

  • class function 组件区别
  • 为什么有 hook;hook 基于 class 的好处
  • hook 为什么不能写在if里
  • useeffect 代替 class 组件哪些声明周期
  • React.memo / React.lazy
  • usecallback useMemo 区别
  • 合成事件 16 17
  • react15 16区别
  • react diff算法(单节点 多节点)
  • setState 为什么可以更新视图
  • setState 是同步还是异步
  • 父子通信
  • 废除的生命周期有哪些 为什么
  • fiber 架构;react fiber之前的架构
  • fiber node 有哪些属性
  • 时间切片(如何判断当前帧是否还有剩余时间)
  • 双缓存树
  • react 数据流
  • react 状态管理
  • react-router 类型 实现
  • 一个带有特殊占位符的字符串,将占位符改为组件

网络

  • http 与 https 区别
  • https 加密 对称 非对称;为什么用对称加密
  • 网络攻击(XSS, CSRF), 现象、防御、属于哪种类型
  • 缓存
  • 状态码 401 403 301 302 304
  • http2.0
  • request 与 response 头有哪些
  • 多次 post 怎么办(除了防抖还有什么办法,axios 取消上一次...)
  • 请求时序问题,input 输入,先发的请求后返回结果,如果保证拿到的数据是对的

算法

  • 动态规划 爬楼梯
  • 回溯 八皇后
  • 树前中序遍历(非递归)
  • 对两个已经排好序的数组排序
  • 链表倒数第 k 个(时间复杂度O(n),空间复杂度O(1))

webpack

  • 基础配置
  • tree-shaking
  • babel plugin区别
  • commonjs 与 es6 模块区别
  • 热更新如何实现
  • 什么样的模块会在 common.js 中
  • 如何打包出多个文件
  • 优化