前端面试基础题库——关于底层原理的面试题

简介: 前端面试基础题库——关于底层原理的面试题



七十一、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么

       1、浏览器查找域名对应的 IP 地址(DNS 查询:浏览器缓存->系统缓存->路由器缓存->ISP DNS 缓存->根域名服务器)

       2、浏览器向 Web 服务器发送一个 HTTP 请求(TCP 三次握手)

       3 服务器 301 重定向(从 HTTP://example.com  重定向到 HTTP://www.example.com

       4、浏览器跟踪重定向地址,请求另一个带 www 的网址

       5、服务器处理请求(通过路由读取资源)

       6、服务器返回一个 HTTP 响应(报头中把 Content-type 设置为 'text/html')

       7、浏览器进 DOM 树构建

       8、浏览器发送请求获取嵌在 HTML 中的资源(如图片、音频、视频、 CSS、JS 等)

       9、浏览器显示完成页面

       10、浏览器发送异步请求


七十二、什么是 TCP 连接的三次握手

       TCP 是因特网中的传输层协议,使用建立连接,完成三次握手, 与服务器开始传送。


       第一次握手:建立连接时,发送包(syn=j)到服务器,并进入等待状态, 等待服务器确 认; SYN:同步序列编号(Synchronize Sequence Numbers)。

       第二次握手: 收到 SYN 包,必须确认客户的 SYN(syn=j+1),同时自己也发送一个   SYN包(syn=k),即 SYN+ACK 包,此时服务器进入等待状态;

       第三次握手:客户端收到服务器器的 SYN+ACK 包, 向服务器发送确认包 ACK(ack=k+1), 此包发送完毕, 客户端和服务器进入(TCP 连接成功) 状态,完成三次握手。


       TCP 协议优点

       TCP 发送的包有序号,对方收到包后要给一个反馈,如果超过一定时间还没收到反馈就自动执 行超时重发,因此 TCP 最大的优点是可靠。


       TCP 协议缺点

       很简单,就是麻烦, 如果数据量比较小的话建立连接的过程反而占了大头,不断地重发 也会造成网络延迟, 因此比如视频聊天通常就使用 UDP,因为丢失一些包也没关系,速度流畅才是重要的。


七十三、为什么 TCP 连接需要三次握手四次挥手


       为什么是三次握手

为了防止已失效的连接请求报文段突然有送到了服务器, 因而产生错误,假设两次握手时,


客户发出的第一个请求连接报文段在某一网络节点长时间滞留, 以致延误到连接释放后才 到达服


务器。服务器收到失效的连接请求报文段后,认为是客户又发出一次新的连接请求。于是 向客户


发送确认报文段,同意建立连接, 此时在假定两次握手的前提下,连接建立成功。这样会导致服务器的资源白白浪费


       为什么是四次挥手

               TCP 协议是全双工通信, 这意味着客户端和服务器端都可以向彼此发送数据, 所以关


闭连接 是双方都需要确认的共同行为,假设是三次挥手时, 首先释放了客户到服务器方向的连


接, 此时 TCP 连接处于半关闭状态,这时客户不能向服务器发送数据,而服务器还是可以向客 户


发送数据。如果此时客户收到了服务器的确认报文段后,就立即发送一个确认报文段, 这会导致


服务器向客户还在发送数据时连接就被关闭。这样会导致客户没有完整收到服务器所发的报文段


七十四、介绍一下 websocket

       什么是 websocket

       websocket 是一种网络通信协议, 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通信的协议,这个对比着 HTTP 协议来说,HTTP 协议是一种无状态的、无连接的、单向的应用 层协议,通信请求只能由客户端发起,服务端对请求做出应答处理。 HTTP 协议无法实现服务器 主动向客户端发起消息,websocket 连接允许客户端和服务器之间进行全双工通信,  以便任一方都可以通过建立的连接将数据推送到另一端。 websocket 只需要建立一次连接,  就可以一直保持连接状态。

七十五、setTimeout、Promise、Async/Await 的区别

       事件循环中分为宏任务队列和微任务队列

               宏任务(macrotask):在新标准中叫 task

               主要包括:script(整体代码),setTimeout,setInterval,setImmediate,I/O,ui rendering 微任务(microtask):在新标准中叫 jobs

               主要包括:process.nextTick, Promise,MutationObserver(html5 新特性)


       setTimeout、Promise、Async/Await 的区别

               setTimeout 的回调函数放到宏任务队列里, 等到执行栈清空以后执行

               Promise.then 里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码 执  行完再执行

               async 函数表示函数里面可能会有异步方法,await 后面跟一个表达式

               async 方法执行时, 遇到 await 会立即执行表达式, 然后把表达式后面的代码放到微任务队 列里,让出执行栈让同步代码先执行


 

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
消息中间件 存储 缓存
大厂面试高频:Kafka 工作原理 ( 详细图解 )
本文详细解析了 Kafka 的核心架构和实现原理,消息中间件是亿级互联网架构的基石,大厂面试高频,非常重要,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka 工作原理 ( 详细图解 )
|
11天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
3天前
|
Java 数据库连接 Maven
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
自动装配是现在面试中常考的一道面试题。本文基于最新的 SpringBoot 3.3.3 版本的源码来分析自动装配的原理,并在文未说明了SpringBoot2和SpringBoot3的自动装配源码中区别,以及面试回答的拿分核心话术。
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 安全 Java
面试高频:Synchronized 原理,建议收藏备用 !
本文详解Synchronized原理,包括其作用、使用方式、底层实现及锁升级机制。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
面试高频:Synchronized 原理,建议收藏备用 !
|
25天前
|
移动开发 缓存 前端开发
深入理解前端路由:原理、实现与应用
本书《深入理解前端路由:原理、实现与应用》全面解析了前端路由的核心概念、工作原理及其实现方法,结合实际案例探讨了其在现代Web应用中的广泛应用,适合前端开发者和相关技术人员阅读。
|
1月前
|
前端开发 开发者
本文将深入探讨 BEM 的概念、原理以及其在前端开发中的应用
BEM(Block-Element-Modifier)是一种前端开发中的命名规范和架构方法,旨在提高代码的可维护性和复用性。通过将界面拆分为独立的模块,BEM 提供了一套清晰的命名规则,增强了代码的结构化和模块化设计,促进了团队协作。本文深入探讨了 BEM 的概念、原理及其在前端开发中的应用,分析了其优势与局限性,为开发者提供了宝贵的参考。
53 8
|
1月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
75 1
|
1月前
|
监控 前端开发 jenkins
Jenkins 在前端项目持续部署中的应用,包括其原理、流程以及具体的实现方法
本文深入探讨了Jenkins在前端项目持续部署中的应用,涵盖其基本原理、流程及具体实现方法。首先介绍了Jenkins的基本概念及其在自动化任务中的作用,随后详细解析了从前端代码提交到生产环境部署的全过程,包括构建、测试、部署等关键步骤。最后,强调了持续部署中的代码质量控制、环境一致性、监控预警及安全管理等注意事项,旨在帮助开发者高效、安全地实施持续部署。
66 5
|
1月前
|
安全 算法 网络协议
网易面试:说说 HTTPS 原理?HTTPS 如何保证 数据安全?
45岁老架构师尼恩在其读者交流群中分享了关于HTTP与HTTPS的深入解析,特别针对近期面试中常问的HTTPS相关问题进行了详细解答。文章首先回顾了HTTP的工作原理,指出了HTTP明文传输带来的三大风险:窃听、篡改和冒充。随后介绍了HTTPS如何通过结合非对称加密和对称加密来解决这些问题,确保数据传输的安全性。尼恩还详细解释了HTTPS的握手过程,包括如何通过CA数字证书验证服务器身份,防止中间人攻击。最后,尼恩强调了掌握这些核心技术的重要性,并推荐了自己的技术资料,帮助读者更好地准备面试,提高技术水平。