bai面一 试du

28 阅读3分钟

1.网络请求状态码都有什么,具体的含义

  1. 200 OK:请求成功,服务器成功处理了请求。
  2. 301 Moved Permanently:请求的资源已被永久地重定向到新的URL。
  3. 302 Found:请求的资源临时地重定向到新的URL。
  4. 304 Not Modified:客户端发送附带条件的请求后,服务器允许请求,但内容并没修改。
  5. 400 Bad Request:请求报文存在语法错误,服务器没必要给出拒绝的理由。
  6. 401 Unauthorized:请求未授权,需要进行身份验证。
  7. 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
  8. 404 Not Found:服务器上无法找到被请求的资源。
  9. 500 Internal Server Error:服务器在处理请求的过程中有错误或者异常状态发生。
  10. 503 Service Unavailable:服务器处于超载或者故障状态,无法完成对请求的处理。
  11. 501表示“Not Implemented”,即服务器不支持请求中使用的HTTP方法。这通常意味着服务器不支持或不支持该特定资源所要求的动作。
  12. 502通用的报错原因复杂

2.实现一个useDeepEffect

function useDeepEffect(fun,arr){
    const [pre,setPre]=useState()
    useEffect(()=>{
        setPre(arr)
    },arr)
    useEffect(()=>{
        if(isEqual(pre,arr)){
            fun()
        }
    },[fun,pre])
}

2.1 useEffect的使用

return 的方法只有在组件卸载的时候才会 调用

2.2 useEffect如果不传第二个参数

组件在初始化以及更新的时候都会执行 如果只传一个空数组只会在初始化的时候执行 如果传了非空数组,则会在依赖项发生改变的时候触发 blog.csdn.net/zjw0021/art…

3.实现一个数组转树形结构

let arr = [
        { id: 1, parentId: 0, name: '节点1' },
        { id: 11, parentId: 0, name: '节点1' },
        { id: 2, parentId: 1, name: '节点1.1' },
        { id: 3, parentId: 1, name: '节点1.2' },
        { id: 4, parentId: 2, name: '节点1.1.1' },
        { id: 5, parentId: 2, name: '节点1.1.2' },
        { id: 6, parentId: 3, name: '节点1.2.1' },
    ];
   let tree = arrayToTree(arr, 0);
   function arrayToTree(arr, parentId) {
        let result = []
        for (let i = 0; i < arr.length; i++) {
            if (arr[i].parentId == parentId) {
                let children = arrayToTree(arr, arr[i].id)
                console.log(children)
                 if (children.length) {
                     arr[i].children = children
                 }
                result.push(arr[i])
            }
        }
        return result

    }

4.Webpack和Rollup在多个方面存在显著差异:

  1. 构建目标:Rollup的主要目标是ES6模块打包,而Webpack则支持更广泛的构建目标,包括AMD/CJS/ES5/ES6等,因此Webpack更加灵活。
  2. 打包方式:Rollup采用的是Tree-shaking算法,能更加高效地打包应用,移除未被引用的模块。Webpack则通过静态分析和代码分割实现模块化,可以实现按需加载。
  3. 配置方式:Rollup的配置相对简单,只需要一个rollup.config.js文件即可。然而,Webpack的配置较为复杂,需要多个配置文件和插件进行调整。
  4. 体积与性能:Rollup打包的体积较小,代码精简,且较少注入,但动态加载路由代码可能不适用,因此单页项目可能不适合使用Rollup。而Webpack结合插件可以完成前端工程化的绝大多数工作,但体积较大。
  5. 插件与生态系统:Webpack有丰富的插件生态系统,可以处理各种类型的资源(如JavaScript、CSS、图片等),支持代码拆分、按需加载、动态导入等特性,以及更复杂的配置选项。Rollup则仅仅是一款ESM打包器,没有其他功能。

5.plugin与loader的区别

loader仅仅是为了打包 plugin是为了丰富webpack的功能,他可以作用在打包,资源加载,环境变量的定义

6.事件循环

js单线程应用程式,将任务队列中的任务取出放入到调用栈中,直到任务队列为空,当执行异步任务又分为宏任务与微任务。优先执行微任务。

7.CSS实现一个三角形

border-left:100px solid transparent