【前端面试3+1】11 http和https有何不同及https的加密过程、数组有哪些方法及作用、tcp三次握手四次挥手、【分发饼干】

一、http和https有何不同?https的加密过程

1、不同:

        HTTP和HTTPS的主要区别在于安全性。HTTP是超文本传输协议,是一种用于传输数据的协议,但是传输的数据是明文的,容易被窃听和篡改。而HTTPS是在HTTP基础上加入了SSL/TLS协议,通过加密和认证机制来保护数据的安全性。

2、https的加密过程:

  1. 客户端向服务器发起HTTPS请求。
  2. 服务器返回自己的SSL证书,包含公钥和数字签名。
  3. 客户端验证证书的合法性,如果合法则生成一个随机的对称密钥,并用服务器的公钥加密这个对称密钥,然后发送给服务器。
  4. 服务器使用自己的私钥解密客户端发送过来的对称密钥。
  5. 服务器和客户端使用这个对称密钥进行对称加密通信,保障数据的安全性。

3、补充:

        对称密钥是在握手过程中由客户端生成的,然后通过非对称加密的方式传输给服务器。这样可以保证数据在传输过程中是加密的,同时也确保了服务器和客户端之间的通信是安全的。

二、数组有哪些方法,并说明每个方法有什么作用?

下面列出了一些常用的数组方法以及它们的作用:

  1. push():向数组末尾添加一个或多个元素,并返回数组的新长度。

  2. pop():删除数组末尾的元素,并返回该元素的值。

  3. shift():删除数组的第一个元素,并返回该元素的值,同时将数组长度减一。

  4. unshift():向数组的开头添加一个或多个元素,并返回数组的新长度。

  5. concat():用于合并两个或多个数组,不会改变原数组,返回一个新的数组。

  6. slice():从已有的数组中返回选定的元素,不会改变原数组,返回一个新的数组。

  7. splice():向/从数组中添加/删除项目,然后返回被删除的项目,会改变原数组。

  8. join():将数组中的所有元素转换为字符串并连接起来,返回一个字符串。

  9. indexOf():返回指定元素在数组中第一次出现的索引,如果不存在则返回-1。

  10. lastIndexOf():返回指定元素在数组中最后一次出现的索引,如果不存在则返回-1。

  11. forEach():对数组中的每个元素执行一次提供的函数。

  12. map():对数组中的每个元素执行一次提供的函数,并返回一个新数组。

  13. filter():使用提供的函数测试所有元素,并返回一个包含所有通过测试的元素的新数组。

  14. reduce():对数组中的每个元素执行一个累加器函数,将其减少为单个值。

  15. sort():对数组元素进行排序,默认是按照字符串Unicode码点进行排序。

  16. reverse():颠倒数组中元素的顺序,原地修改数组。

三、tcp的三次握手和四次挥手

tcp简短:

        TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它通过三次握手建立连接和四次挥手释放连接。

三次握手

  • 第一步:客户端向服务器发送一个SYN(同步)标志的数据包,表明客户端请求建立连接。
  • 第二步:服务器收到客户端的SYN数据包后,会回复一个带有SYN和ACK(确认)标志的数据包,表示接受客户端的请求并准备好建立连接。
  • 第三步:客户端收到服务器的确认后,会再次向服务器发送一个带有ACK标志的数据包,表示客户端也确认连接已建立。

四次挥手

  • 第一步:客户端向服务器发送一个带有FIN(结束)标志的数据包,表明客户端不再发送数据,但仍愿意接收数据。
  • 第二步:服务器收到客户端的FIN后,会回复一个带有ACK标志的数据包,表示服务器已接收到客户端的结束请求。
  • 第三步:服务器在发送完所有数据后,会向客户端发送一个带有FIN标志的数据包,表明服务器也准备关闭连接。
  • 第四步:客户端收到服务器的FIN后,会回复一个带有ACK标志的数据包,表示客户端已接收到服务器的结束请求,并准备关闭连接。

        通过三次握手建立连接和四次挥手释放连接,TCP协议保证了数据在传输过程中的可靠性和完整性。三次握手确保双方都同意建立连接,四次挥手则确保双方都完成数据传输并同意关闭连接。

四、【算法】分发饼干

1、题目:

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。


 

int findContentChildren(int* g, int gSize, int* s, int sSize) {
    
}

2、解题:

解题思路:
1. 首先对孩子数组g和饼干数组s进行升序排序,以便后续分配饼干时从小到大进行比较。
2. 使用双指针i和j分别指向孩子数组和饼干数组的起始位置。
3. 在一个while循环中,不断比较孩子的胃口和饼干的大小:
   - 如果当前孩子的胃口可以满足当前的饼干大小,则将满足的孩子数量加一,并且移动到下一个孩子和下一个饼干。
   - 如果当前孩子的胃口无法满足当前的饼干大小,则只移动到下一个饼干,继续寻找可以满足的孩子。
4. 最终返回满足的孩子数量re,即尽可能多地满足孩子的胃口。
 

int cmp(const void*a,const void*b)
{
    return *(int*)a-*(int*)b;
}
int findContentChildren(int* g, int gSize, int* s, int sSize) {
    int re=0;int i=0,j=0;
    qsort(g,gSize,sizeof(int),cmp);
    qsort(s,sSize,sizeof(int),cmp);
    while(i<gSize&&j<sSize)
    {
        if(g[i]<=s[j])
        {
            i++;
            j++;
            re++;
        }
        else
            j++;
    }
    return re;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode.1379. 找出克隆二叉树中的相同节点

题目 1379. 找出克隆二叉树中的相同节点 分析 这道题目其实利用的是递归的思想&#xff0c;同时遍历两棵树即可。具体流程&#xff08;下面所讲解的流程基于的前提一定是两棵树一起遍历哦&#xff09;&#xff1a; 如果 original 为空节点&#xff0c;直接返回 null&#…

Python 爬虫基础——http请求和http响应

写本篇文章&#xff0c;我认为是能把自己所理解的内容分享出来&#xff0c;说不定就有和我一样有这样思维的共同者&#xff0c;希望本篇文章能帮助大家&#xff01;✨✨ 文章目录 一、 &#x1f308;python介绍和分析二、 &#x1f308;http请求三、 &#x1f308;http响应四、…

初识MySQL(中篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 目录 1.SQL语言 1.1 SQL语言组成部分 2.MySQL数据类型 2.1 数值类型 2.2 字符串类型 2.3 日期类型 3.创建数据表 3.1 创建数据表方法1 …

00-JAVA基础-注解及反射解析注解

注解 什么是注解 Java 注解&#xff08;Annotation&#xff09;是 JDK 5.0 引入的一种元素&#xff0c;用于为 Java 代码提供元数据。元数据是关于数据的数据&#xff0c;它为代码提供附加信息&#xff0c;而这些信息并不直接参与到程序的逻辑中&#xff0c;但可以被编译器或…

如何根据黄金行情进行交易操作?

根据黄金行情进行交易操作是许多投资者关注的重要议题&#xff0c;黄金作为一种重要的避险资产和投资工具&#xff0c;其价格波动受多种因素影响&#xff0c;包括经济数据、地缘政治风险、货币政策等。为了有效地进行黄金交易操作&#xff0c;投资者需要综合考虑多方面因素&…

ST表---算法

相当于二分的思想&#xff0c;一直比较最值 ST的创建 现在创建成功&#xff0c;是应该如何查询的问题 ST表的查询 虽然这两区间有重叠&#xff0c;但是可以一个往前数&#xff0c;一个往后数&#xff0c;互不影响 时间复杂度 创建st表的复杂度为n*logn 使用时的复杂度为O(…

ROS 2边学边练(12)-- 创建一个工作空间

上一篇我们已经接触过工作空间的概念&#xff0c;并简单了解体验了一点构建包、测试包的流程&#xff0c;此篇会深入一点学习工作空间相关内容。 前言 一个工作空间是包含了ROS 2的功能包的目录&#xff08;文件夹&#xff09;&#xff0c;在使用ROS 2之前我们得激活一下目标工…

【信号与系统 - 1】周期信号的傅里叶级数展开

1 傅里叶级数展开的定义 已知&#xff1a;一个周期信号 f ( t ) f(t) f(t) 是一个直流分量&#xff08;幅度为 c 0 c_0 c0​&#xff09;加上一序列余弦信号分量&#xff08; w 0 w_0 w0​基波分量和与之成谐波关系的k次谐波分量 k w 0 kw_0 kw0​&#xff09;经过加权求和得到…

高并发场景下分布式事务处理方案探讨及代码实现

本文将深入探讨高并发场景下&#xff0c;分布式事务处理的方案。随着互联网的快速发展&#xff0c;对系统性能和稳定性的需求也日益增长&#xff0c;尤其在高并发场景下&#xff0c;分布式事务成为重中之重。在本文中&#xff0c;我将分享我对分布式事务的理论理解&#xff0c;…

多线程重点知识(个人整理笔记)

目录 1. java 多线程 1.1. 什么是进程?什么是线程? 1.1.1. 进程 1.1.2. 线程 1.1.3. 多线程 2. 并行和并发有什么区别&#xff1f; 3. 守护线程是什么&#xff1f; 4. 创建线程有哪几种方式&#xff1f; 4.1. 线程的常见成员方法 5. 线程安全问题 5.1. synchronize…

39.基于SpringBoot + Vue实现的前后端分离-无人智慧超市管理系统(项目 + 论文PPT)

项目介绍 随着互联网时代的发展&#xff0c;传统的线下管理技术已无法高效、便捷的管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;国家在环境要求不断提高的前提下&#xff0c;无人智慧超市管理系统建设也逐渐进入了信…

Spring Boot | Spring Boot的“数据访问“、Spring Boot“整合MyBatis“

目录: 一、Spring Boot”数据访问概述“二、Spring Boot”整合MyBatis”1. 基础环境搭建 (引入对应的“依赖启动器” 配置数据库的“相关参数”)① 数据准备 (导入Sql文件)② 创建项目&#xff0c;引入相应的启动器&#xff0c;编写数据库对应的“实体类”③额外添加pom.xml文…

尚硅谷50道Java面试题笔记 写的不全

b站链接&#xff1a;https://www.bilibili.com/video/BV1Bb411d7SL/?p4&vd_source714a8042f058b82c668750a0930ff9b0 1 mysql使用innodb引擎&#xff0c;请简述mysql索引的最左前缀如何优化orderby语句。 关键点&#xff1a; 如果排序字段不在索引列上&#xff0c;file…

Filter Listener Interceptor

文章目录 第一章 Filter1. 目标2. 内容讲解2.1 Filter的概念2.2 Filter的作用2.3 Filter的入门案例2.3.1 案例目标2.3.2 代码实现2.3.2.1 创建ServletDemo012.3.2.2 创建EncodingFilter 2.4 Filter的生命周期2.4.1 回顾Servlet生命周期2.4.1.1 Servlet的创建时机2.4.1.2 Servle…

趣学前端 | 类,我想好好继承它的知识点

背景 最近睡前习惯翻会书&#xff0c;重温了《JavaScript权威指南》。这本书&#xff0c;文字小&#xff0c;内容多。两年了&#xff0c;我才翻到第十章。因为书太厚&#xff0c;平时都充当电脑支架。 JavaScript 类 话说当年类、原型、继承&#xff0c;差点给我绕晕。 在J…

Excel、PowerQuery 和 ChatGPT 终极手册(下)

原文&#xff1a;Ultimate ChatGPT Handbook for Enterprises 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 使用 SUMIFS、SUMPRODUCT、AGGREGATE 和 MAX 函数查找数值数据 其中之一鲜为人知的事实是&#xff0c;当查找单个数值时&#xff0c;匹配和三角函数可能比查…

软考--软件设计师(软件工程总结1)

目录 1.定义 2.软件生存周期 3.软件过程&#xff08;即软件开发中遵循的一系列可预测的步骤&#xff09; ​编辑4.软件开发模型 5.需求分析&#xff08;软件需求分析&#xff0c;系统需求分析或需求分析工程&#xff09; 6. 需求工程 7.系统设计 8.系统测试 1.定义 软件…

Android Studio学习9——使用Logcat打印日志

在Android开发中&#xff0c;Logcat是一个工具&#xff0c;它允许开发者查看设备或模拟器的日志信息。开发者可以使用Log类来打印日志信息&#xff0c;这对于调试和错误排查非常有帮助。 v 或 verbose: 最低等级&#xff0c;显示所有消息。d 或 debug: 用于调试消息。i 或 info…

在集群中使用deepspeed如果端口被占用可以使用deepspeed参数更改

在集群中使用deepspeed如果端口被占用可以使用deepspeed参数更改 这一次G老师不好使了 在集群中使用deepspeed默认的端口号29500被占用&#xff0c;显示更改居然不起作用 G老师给的方法也不好使 #!/bin/bash MASTER_ADDRlocalhost MASTER_PORT29501 # 选择一个未被占用的端…

Qt | 发布程序(以 minGW 编译器为例)

1、注意:修改 pro 文件后,最好执行“构建”>“重新构建项目”,否则 pro 文件的更改将不会反应到程序上。 2、发布程序的目的:就是让编译后生成的可执行文件(如 exe 文件),能在其他计算机上运行。 一、编译后生成的各种文件简介 Qt Creator 构建项目后产生的文件及目录…