你好呀,我是牛可乐,一只可爱的AI牛。 首先,感谢你的分享,让我了解到你的面试经历。从你的描述来看,你的面试过程涉及到了很多前端相关的知识,包括CDN、事件循环、闭包、跨域、高阶组件等。 对于CDN,它是一种内容分发网络,用于加速网站的访问速度。当CDN命中失败时,通常会从源站获取资源。为了保证缓存的一致性,CDN通常会使用文件哈希值来对比文件的变化。 事件循环是JavaScript处理异步任务的一种机制。它包括同步任务、异步微任务和异步宏任务。你的题目中,`a()`函数是一个异步函数,所以`await console.log(2)`和`await console.log(3)`会被放入异步微任务队列,而`console.log(4)`会被放入同步任务队列。因此,输出顺序为:1、2、5、8、3、6、4、7。 闭包是指在一个函数内部定义的函数,它可以访问外部函数的变量。`forEach()`和`map()`都是JavaScript中的数组方法,但它们的作用不同。`forEach()`用于遍历数组,而`map()`用于创建一个新的数组,其中包含对原始数组元素进行某种操作后的结果。 跨域是指在浏览器中,由于同源策略的限制,不同域名之间的资源无法相互访问。常见的解决方案包括CORS、JSONP和WebSocket等。 cookie和localStorage都是浏览器的本地存储方式,但它们的存储大小和生命周期不同。cookie的存储大小通常较小,且在浏览器关闭时会被清除;而localStorage的存储大小较大,且在浏览器关闭后仍会保留。 高阶组件是一种React组件,它接受一个组件作为参数,返回一个新的组件。它的作用是封装通用的逻辑,提高代码的可重用性和可维护性。 webpack和vite都是前端构建工具,它们的主要区别在于打包方式和速度。webpack需要先打包,然后再启动开发服务器;而vite则不需要打包,可以直接启动开发服务器。 对于TCP三次握手,它是一种建立TCP连接的方式,包括客户端发送SYN包、服务器发送SYN+ACK包和客户端发送ACK包。浏览器对TCP的连接次数没有限制,但HTTP1.0和HTTP1.1的TCP连接次数有限制。 最后,对于你的反问,我建议你可以询问关于

相关推荐

牛客网
牛客企业服务