面试题记录(2024/7/1)

289 阅读5分钟

JS基础/ES6

  • 闭包,优缺点
function makeFunc() { 
    var name = "Mozilla" 
    function displayName() { 
        alert(name) } 
    return displayName } 

var myFunc = makeFunc() 
myFunc() // Mozilla
闭包是指有权访问另一个函数作用域中变量的函数
优点:
- 保护函数的私有变量不受外部的干扰,形成不销毁的栈内存。
- 把一些函数内的值保存下来,闭包可以实现方法和属性的私有化
缺点:
- 不正当使用会造成内存泄漏

juejin.cn/post/705160…

const p = Promise.all([p1, p2, p3]);

上面代码中,Promise.all()方法接受一个数组作为参数,p1p2p3都是 Promise 实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步处理。另外,Promise.all()方法的参数可以不是数组,但必须具有 Iterator 接口,且返回的每个成员都是 Promise 实例。

p的状态由p1p2p3决定,分成两种情况。

(1)只有p1p2p3的状态都变成fulfilledp的状态才会变成fulfilled,此时p1p2p3的返回值组成一个数组,传递给p的回调函数。

(2)只要p1p2p3之中有一个被rejectedp的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。

Number(undefined);// 输出NaN
Number(null);// 输出0
得到的正则就不再是正则(变为空对象),得到的函数就不再是函数(变为null)了
1.创建空对象
2.this指向这个对象
3.对象赋值
4.返回实例对象
阻止冒泡:event.stopPropagation()
         return false
默认行为:event.preventDefault()
         return false

CSS/HTML

alt 跟我们键盘上的alt一个意思'切换',顾名思义图片不能正常加载时候替换的提示语
title 属性是鼠标划上去显示的内容

React

每次都认为是新的参数,触发刷新
useMemo不传参数,每次更新都会执行,缓存值
useCallBack参数必传,缓存方法
  • this.setState和直接.key修改的区别
直接.key不会触发优化

React Router

Redux

Webpack

笔试

  • 节流/防抖
  • 数组转对象
  • 手动实现call
  • 多维数组转一维数组
  • 数组去重
  • promise保持同时请求多个接口
  • 递归求1-100和
  • 数组冒泡排序O(n)
  • 递归多维数组
  • 对象数组去重
  • n>m 求n-m区间随机数
  • 解析url参数
  • 一维对象数组转树形结构
  • JS模拟promise.all
  • JS手写promise
  • promise和async await结合循环执行顺序
  • 回文数判断
  • 函数柯里化

业务场景

  • 项目中做的亮点和成就感的事情
  • 前端权限划分
  • 封装了哪些组件,方法
  • 模块化开发理解
  • 图片懒加载,加载大文件,例如视频,怎么优化体验 juejin.cn/post/694474… juejin.cn/post/690377… juejin.cn/post/700849…
  • 页面前进刷新页面,后退缓存页面
  • 大文件切片上传,断点续传
  • websocket实现消息通知,断点重连怎么做的
  • 移动端适配方案
  • 接口请求大文件优化
  • 大数据计算优化
  • CSRF的理解
  • 滚动条加载判断
  • JS实现虚拟列表
  • 前端大量数据处理如何优化

其他

  • mvc,mvvm两种模式的理解
  • base64格式
  • 输入一个url发生了什么
  • react vue 区别
  • react和vue单向数据流和双向绑定
  • TCP与UDP区别
  • http1和http2区别
  • 跨域
  • 浏览器缓存
  • 虚拟DOM与真实DOM
  • 微前端
  • cookie和缓存区别
  • token如何生成,前端保存token方案