每日十题八股-2025年1月8日

1.HTTP进行TCP连接之后,在什么情况下会中断
2.HTTP、SOCKET和TCP的区别
3.DNS的全称了解么?
4.DNS 域名解析的工作流程?
5.DNS的端口是多少?
6.DNS的底层使用TCP还是UDP?
7.HTTP到底是不是无状态的?
8.携带Cookie的HTTP请求是有状态还是无状态的?Cookie是HTTP协议簇的一部分,那为什么还说HTTP是无状态的?
9.cookie和session有什么区别?
10.token,session,cookie的区别?

1.HTTP进行TCP连接之后,在什么情况下会中断?

  1. 主动close,按照正确的顺序进行四次挥手。 当服务端或者客户端执行 close 系统调用的时候,会发送FIN报文,就会进行四次挥手的过程。
  2. 发送得不到响应,且超过重试最大次数。 当发送方发送了数据之后,接收方超过一段时间没有响应ACK报文,发送方重传数据达到最大次数的时候,就会断开TCP连接。
  3. 双方长时间不互动。 当HTTP长时间没有进行请求和响应的时候,超过一定的时间,就会释放连接。

2.HTTP、SOCKET和TCP的区别?

在这里插入图片描述

HTTP是应用层的协议,承载URL,和一些传输数据的,用于传输超文本数据的,定义了客户端和服务器之间交换的数据格式和规则。
TCP是传输层的协议,承载了端口号,和应用层传下来的数据,包装成TCP报文,基于字节流进行通信两端建立面向连接的,可靠的数据传输。
Socket是传输层和应用层之间的抽象接口,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket不像HTTP基于请求响应,通信双方在建立连接之后都可以主动发送消息。

HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。 (这个比喻没看懂)

3.DNS的全称了解么?

domain name system,域名系统。它是互联网中用于将域名转换为对应IP地址的分布式数据库系统。符合人类记忆的域名转换为复杂无序的IP地址,这些转换关系被存储在DNS服务器中,其中根服务器和顶级服务器用于指路,权威服务器才进行域名解析。
在域名中,越靠右的位置表示其层级越高。实际上域名最后还有一个点,比如 www.server.com.,这个最后的一个点代表根域名。
在这里插入图片描述
互联网名称和数字地址分配机构 (ICANN) 为根区域中 13 个 IP 地址之一操作服务器,并将其他 12 个 IP 地址的操作委托给包括 NASA、马里兰大学和 Verisign(唯一运营两个根 IP 地址的组织)在内的多个组织。Cloudflare 帮助向名为 F-Root 的根服务器提供 DNS Anycast 服务;Cloudflare 根据与 ISC(F-Root 运营商)的合同提供其他 F-Root 实例。

4.DNS 域名解析的工作流程?

本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
在这里插入图片描述

5.DNS的端口是多少?

默认端口号是53。

6.DNS的底层使用TCP还是UDP?

DNS使用UDP协议进行域名解析和数据传输。因为基于UDP实现DNS能够提供低延迟、简单快速、轻量级的特性,更适合DNS这种需要快速响应的域名解析服务。
UDP基于无连接且没有流量控制,因此比TCP更加低延时和快速。
UDP报文的头部小,相比于TCP更加轻量级。

对于UDP带来的不可靠通信,DNS设置缓存机制来缓解。

7.HTTP到底是不是无状态的?

是无状态的。所以并不清楚该HTTP请求的前后请求信息。
但是可以通过Cookie,Session等机制来保持用户状态。

8.携带Cookie的HTTP请求是有状态还是无状态的?Cookie是HTTP协议簇的一部分,那为什么还说HTTP是无状态的?

携带Cookie的HTTP请求实际上是可以在一定程度上实现状态保持的,因为Cookie是用来在客户端存储会话信息和状态信息的一种机制。(Cookie是保存在客户端的,每次请求都附带上Cookie,然后服务器读取就可以识别用户的信息和状态。)
说HTTP请求是无状态的原因是,在设计时HTTP请求就是各个独立的,无状态的。所以,尽管Cookie是HTTP协议簇中的一部分,但还是说HTTP请求是无状态的。

9.cookie和session有什么区别?

存储的位置不一样。Cookie是存在客户端上,session是存储在服务器上。服务器为每个用户分配一个唯一的Session ID,这个ID通常通过Cookie或URL重写的方式发送给客户端,客户端后续的请求会带上这个Session ID,服务器根据ID查找对应的Session数据。

生命周期:Cookie可以设置过期时间,过期后自动删除。也可以设置为会话Cookie,即浏览器关闭时自动删除。Session在默认情况下,当用户关闭浏览器时,Session结束。但服务器也可以设置Session的超时时间,超过这个时间未活动,Session也会失效。

存储容量不同。Cookie要整体在网络请求中传输,因此通常限制在4KB。而Session整个存在服务器上,只传输sessionID,所以可以说没有容量限制。

性能:Cookie随每个请求发送到服务器,可能会影响网络传输效率。Session每次请求都需要查询服务器上的Session数据,这可能会增加服务器的负载。

安全性:Cookie容易收到XSS(跨站脚本攻击)。Seesion可能被Seesion劫持和会话固定攻击。

#
在这里插入图片描述

10.token,session,cookie的区别?

token也是一种身份认证机制,分别存储在服务器和客户端中。用户首次登录,服务器计算token,并保存在服务器内,同时返回token给客户端。客户端之后的每次请求都要携带token,用于服务器的身份验证。
cookie存在请求头里。
在这里插入图片描述

### 常见技术面试问题及答案 #### 1. Java 基础知识 **问题:解释Java中的多态性。** 答案:多态性是指允许不同类的对象对同一消息作出响应的能力。多态性主要通过方法重载(编译时多态)和方法重写(运行时多态)来实现。在运行时多态中,父类引用可以指向子类对象,调用方法时会根据实际对象类型来决定执行哪个方法。 ```java class Animal { void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { void sound() { System.out.println("Dog barks"); } } public class TestPolymorphism { public static void main(String[] args) { Animal myAnimal = new Dog(); // Upcasting myAnimal.sound(); // Outputs "Dog barks" } } ``` #### 2. 数据结构与算法 **问题:解释快速排序的基本思想。** 快速排序的基本思想是选择一个基准元素,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比基准元素小,另一部分记录的关键字均比基准元素大,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的[^1]。 ```java public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } private static int partition(int[] arr, int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j < high; j++) { if (arr[j] <= pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return i + 1; } public static void main(String[] args) { int[] arr = {10, 7, 8, 9, 1, 5}; quickSort(arr, 0, arr.length - 1); for (int num : arr) { System.out.print(num + " "); } } } ``` #### 3. 系统设计 **问题:如何设计一个高并发的Web应用?** 设计高并发的Web应用需要考虑多个方面,包括但不限于负载均衡、缓存机制、数据库优化、异步处理等。负载均衡可以通过Nginx或HAProxy来实现,将请求分发到多个服务器上。缓存机制可以使用Redis或Memcached来减少数据库的压力。数据库优化包括索引优化、读写分离等。异步处理可以通过消息队列如RabbitMQ或Kafka来解耦系统组件,提高系统的响应速度和吞吐量。 #### 4. 编程实践 **问题:解释Java中的垃圾回收机制。** Java的垃圾回收机制是自动管理内存的一种方式,它负责回收不再使用的对象所占用的内存空间。垃圾回收器会定期检查哪些对象是可达的(即仍然被引用的对象),哪些对象是不可达的(即不再被引用的对象)。不可达的对象会被标记为垃圾,并在后续的垃圾回收过程中被清除。Java提供了多种垃圾回收算法,如标记-清除算法、复制算法、标记-整理算法等,不同的垃圾回收器适用于不同的应用场景。 #### 5. 分布式系统 **问题:解释CAP定理。** CAP定理指出,在一个分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个特性最多只能同时满足两个。一致性意味着所有节点在同一时间看到相同的数据;可用性意味着每个请求都能得到响应,但不保证是最新的数据;分区容忍性意味着即使网络分区存在,系统仍能继续运行。根据不同的业务需求,可以选择牺牲其中一个特性来实现其他两个特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值