【前端面试3+1】16 TCP与UDP的区别、如何清除浮动、哪些原因造成阻塞页面渲染、【相同的树】

news2024/12/28 3:06:35

一、TCP与UDP的区别

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常用的网络传输协议,它们有以下几点区别:

1、连接性:

  • TCP是面向连接的协议,通信双方在传输数据之前需要建立连接,数据传输完毕后需要断开连接。
  • UDP是无连接的协议,通信双方之间在传输数据时不需要建立连接,数据包之间相互独立。

2、可靠性:

  • TCP提供可靠的数据传输,它通过序列号、确认应答、重传机制等来确保数据的完整性和可靠性。
  • UDP不提供数据传输的可靠性保证,数据包可能会丢失或乱序,应用程序需要自行处理数据的丢失或重传。

3、传输效率:

  • TCP的可靠性和连接管理会带来一定的开销,因此在传输效率上通常比UDP略低
  • UDP没有连接管理和可靠性保证,传输效率较高,适用于实时性要求较高的应用场景。

4、应用场景:

  • TCP适用于需要可靠数据传输和顺序传输的应用,如文件传输、网页访问等。
  • UDP适用于实时性要求较高、数据量较小、允许数据丢失的应用,如音视频传输、在线游戏等。

二、如何清除浮动?

清除浮动是为了解决父元素包含浮动子元素时可能导致的高度塌陷或布局错乱的问题。

1、使用clearfix技巧:

        在父元素上应用 clearfix 类,可以通过以下方式实现:

.clearfix::after {
    content: "";
    display: table;
    clear: both;
}

2、使用overflow属性:

        在父元素上添加 overflow: hidden; 或 overflow: auto; 属性,可以触发 BFC(块级格式化上下文),从而清除浮动。

3、使用伪元素清除浮动:

        在父元素上使用伪元素清除浮动,如下所示:

.parent::after {
    content: "";
    display: table;
    clear: both;
}

4、使用clear属性:

        在父元素之后添加一个空元素,并为其应用 clear: both; 属性,也可以清除浮动。

5、使用父元素设置高度:

        如果知道子元素的高度,可以在父元素上设置一个固定高度,也可以清除浮动。

三、哪些原因会造成阻塞页面的渲染?

以下是一些常见的原因:

1、CSS和JavaScript资源的加载:

        当浏览器解析HTML文档时,遇到外部CSS和JavaScript资源的引用时,会停止解析并开始下载这些资源。如果这些资源加载速度较慢或者有大量资源需要下载,会导致页面渲染被阻塞。

2、JavaScript的执行:

        JavaScript的执行会阻塞页面的渲染。特别是在页面底部加载的JavaScript文件,如果JavaScript代码执行时间过长,会延迟页面的呈现。

3、CSS和JavaScript的解析:

        如果CSS和JavaScript文件较大或者包含复杂的代码,会增加解析时间,从而影响页面的加载速度

4、DOM的构建:

        当浏览器构建DOM树时,如果遇到复杂的DOM结构或者大量的DOM元素,会导致页面渲染被阻塞。

5、渲染树的构建

        浏览器在构建渲染树时会合并DOM树和CSSOM树,生成最终的渲染树。如果CSSOM树的构建时间较长,会延迟页面的显示

6、字体加载:

        如果页面中使用了自定义字体或者远程字体,浏览器需要下载并解析这些字体文件,会阻塞页面的渲染。

7、图片加载:

        如果页面中有大量的图片需要加载,或者图片文件较大,会影响页面的加载速度。

8、重排和重绘:

        当页面中的元素样式发生改变时,浏览器会进行重排(reflow)和重绘(repaint),这也会影响页面的渲染速度。

四、【算法】相同的树

1、题目:

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
    
}

2、解题:

这道题可以通过递归的方式来解决。具体的解题思路如下:

  1. 首先判断两棵树是否都为空,如果是,则认为它们相同,返回true
  2. 然后判断其中一棵树为空的情况,如果有一棵树为空一棵树非空,则认为它们不同,返回false
  3. 接着比较两棵树的根节点值是否相同,如果不同,则认为它们不同,返回false
  4. 最后递归比较两棵树的左子树和右子树,如果左右子树都相同,则返回true,否则返回false
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
     if (p == NULL && q == NULL) {
        return true; // 两棵树都为空,认为相同
    }
    if (p == NULL || q == NULL) {
        return false; // 一棵树为空,一棵树非空,认为不同
    }
    if (p->val != q->val) {
        return false; // 根节点值不同,认为不同
    }
    // 递归比较左右子树
    return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1605598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

multiprocessing Process子进程会把非main的代码重新再次执行

from funasr import AutoModel print("2222")def play_audio(text):print(text)if __name__ __main__:audio_process multiprocessing.Process(targetplay_audio, args("1111",))audio_process.start() # 启动进程audio_process_id audio_process.pid解…

Android播放音频、视频

1、播放音频 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:layout_width"match_parent"android:layout_height"match_parent" ><Buttonandroid:id"i…

【Python基础】Redis

文章目录 [toc]进入Redis交互模式Redis服务测试切换仓库字符串Key命令HashListSetZSet数据添加数据查询数据更新数据删除查询存在的所有key 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python基础 学习指南&#xff1a;Python学习指南 进入Redis交互模式 redis-cliRed…

ElasticSearch虚拟机安装(单机版)

1.下载7.10.2 下载链接&#xff0c;选择LINUX X86_64下载 2.创建用户 useradd es也可以使用系统默认用户&#xff08;非root&#xff09;,root用户会报错 3.解压 tar xvf elasticsearch-7.10.2-linux-x86_64.tar.gz假定目录在/home/es/elasticsearch-7.10.2-linux-x86_64 …

Springboot整合nacos报错无法连接nacos

报错信息&#xff1a;Nacos com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING 关于这个报错的原因有很多&#xff1a;如Nacos未启动、网络问题、配置问题、版本不兼容问题等&#xff0c;我的报错原因主要是版本不兼容。 下面…

TCP和UDP协议的区别

1、定义 TCP协议的全称是Transmission Control Protocol&#xff08;传输控制协议&#xff09;&#xff0c;是一种面向连接的点对点的传输层协议。 UDP协议的全称是User Datagram Protocal&#xff08;用户数据报协议&#xff09;&#xff0c;为应用程序提供一种无需建立连接…

更改docker镜像下载地址

一.简介 使用指令 sudo docker info 查看本机的docker镜像下载地址为 由于本机的var文件空间不足&#xff0c;因此&#xff0c;想更改他的存储地址&#xff0c;如下 二.开始操作 1.停止Docker服务&#xff1a; 执行命令 sudo systemctl stop docker 以及 sudo systemctl s…

Python中的Super方法实现问题及解决方案

1、问题背景 在Python中&#xff0c;super方法用于在子类中调用父类的方法。Guido van Rossum曾给出了一个纯Python实现的super方法&#xff0c;以便更好地理解其工作原理。然而&#xff0c;在这个实现中&#xff0c;存在一个问题&#xff1a;当传入的对象不是要调用的父类的实…

PTA L1-009 N个数求和 【C++】【辗转相除法】【Python】

C&#xff1a; 辗转相除法&#xff1a; 每次算最小公倍数和最大公约数都是用的常规思路&#xff0c;本身是不会有错的&#xff0c;但是当数据很大时&#xff0c;就会出现错误&#xff0c;时间复杂度过高 辗转相除法&#xff0c;又称欧几里德算法&#xff08;Euclidean Algori…

解决IDEA https://start.spring.io/连接不上

1.换成下边这个地址试试 https://start.springboot.io/2.换成阿里云试试&#xff0c;绝对可行&#xff0c;但是版本有点低 https://start.aliyun.com

BackTrader 中文文档(二)

原文&#xff1a;www.backtrader.com/ 概念 平台概念 原文&#xff1a;www.backtrader.com/docu/concepts/ 这是平台某些概念的集合。它试图收集可在使用平台时有用的信息片段。 开始之前 所有小代码示例都假设以下导入可用&#xff1a; import backtrader as bt import ba…

用一个寓言故事讲明白KMP算法

在讲寓言故事之前&#xff0c;先讲一下理论的前提知识&#xff0c;避免有些0基础而无法理解 前提知识 首先KMP算法是指在串中&#xff0c;想要快速找出主串里跟我们的模板串一样的位置的一种算法&#xff0c;其主要是解决最普通的BF算法中主串指针回溯的问题。 BF算法就是一…

原生支付宝小程序 - 获取“dom“元素

在支付宝中是不能获取到dom元素的&#xff0c;但是我门可以借助my.createSelectorQuery来实现 Page({data:{sq:{}},onLoad(){},onShow(){this.setData({sq: my.createSelectorQuery()})} })通过axml来查看 <view>{{sq}} </view>会发现它只是一个Object&#xff0…

2024华中杯A题完整1-3问py代码+完整思路16页+后续参考论文

A题太阳能路灯光伏板朝向问题 &#xff08;完整版资料文末获取&#xff09; 第1小问&#xff1a;计算每月15日的太阳直射强度和总能量 1. 理解太阳直射辐射和光伏板的关系**&#xff1a;光伏板接收太阳辐射并转化为电能&#xff0c;直射辐射对光伏板的效率影响最大。 2. 收集…

ssm058基于Java的共享客栈管理系统+jsp

共享客栈管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对房屋出租信息管理混乱&#xff0c;出…

电脑技巧:如何把Edge浏览器扩展程序打包安装到其他浏览器

目录 1、进入浏览器扩展界面 2、找到Edge浏览器扩展插件的路径 3、找到需要扩展的插件ID 4、打开浏览器扩展插件目录 5、进入打包扩展界面 6、 安装到其他浏览器 大家日常使用浏览器的时候通常会安装很多浏览器插件&#xff0c;从而大大提升我们的办公效率&#xff0c;有…

通义灵码使用教程:探索AI编码的新维度

一、概述 介绍 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;并针对阿里云的云服务使用场景…

实战:源码编译安装mariadb(10.2.19)-2024.4.18(测试成功)

目录 文章目录 目录实验环境实验软件安装相关依赖包做准备用户和数据目录准备数据库目录源码编译安装下载并解压缩源码包源码编译安装mariadb 准备环境变量生成数据库文件准备配置文件准备启动脚本,并启动服务安全初始化测试关于我最后 实验环境 centos7.6 1810 mariadb(10.2.…

CTFshow-PWN-前置基础(pwn20)

提交ctfshow{【.got表与.got.plt是否可写(可写为1&#xff0c;不可写为0)】,【.got的地址】,【.got.plt的地址】 前置基础知识&#xff1a; .got 和 .got.plt 是 ELF&#xff08;Executable and Linkable Format&#xff0c;可执行和可链接格式&#xff09;二进制文件中的两个…

OpenHarmony UI动画-rebound

简介 rebound是一个模拟弹簧动力学&#xff0c;用于驱动物理动画的库。 下载安装 ohpm install ohos/reboundOpenHarmony ohpm环境配置等更多内容&#xff0c;请参考如何安装OpenHarmony ohpm 使用说明 import rebound from ohos/rebound;功能一&#xff1a;创建维护弹簧对…