计算机网络50问,看看你能撑到哪一步?【文末送书】

欢迎订阅查看学习:Java编程基础教程系列(零基础小白搬砖逆袭)

在这里插入图片描述

一,物理层

题:请简述物理层在计算机网络中的作用是什么?
答案:物理层是计算机网络中最底层的一层,它负责为数据在节点之间的传输提供物理连接,并规定传输介质的机械、电气、功能和规程等特性。物理层的作用是确保原始比特流的正确传输,而不关心这些比特的具体含义。

题:物理层的主要功能有哪些?
答案:物理层的主要功能包括:
数据编码:将原始比特流转换为适合在传输介质上传输的信号。
数据同步:确保发送方和接收方能够同步地进行数据传输。
数据传输:在发送方和接收方之间传输信号。
连接器规格:定义各种接口和设备之间的机械、电气、功能和规程特性。

题:物理层如何建立、维护和断开物理连接?
答案:物理连接的建立、维护和断开通常涉及物理设备(如网线、光纤、无线信号等)的插拔或开关操作。在物理层,没有专门的协议来建立或断开连接,这些操作通常是由网络设备和用户手动完成的。

题:请解释物理层中的EIA/TIA RS-232、EIA/TIA RS-449等典型规范是什么?
答案:EIA/TIA RS-232和EIA/TIA RS-449是物理层中的串行通信标准。RS-232定义了数据终端设备(DTE)和数据通信设备(DCE)之间的接口标准,常用于计算机和调制解调器之间的连接。RS-449则是一个更高速、更可靠的标准,通常用于高速串行数据传输。

题:描述一下物理层中数据传输的基本过程。
答案:在物理层,数据传输的基本过程包括:发送方将比特流转换为适合在传输介质上传输的信号;信号在传输介质上传输;接收方接收到信号后,将其转换回比特流。这个过程涉及编码、调制、传输、解调和解码等步骤。

题:物理层如何处理数据传输中的错误和噪声?
答案:物理层通常不直接处理数据传输中的错误和噪声。这些问题主要由数据链路层通过差错控制和流量控制机制来处理。然而,物理层可以通过选择高质量的传输介质和接口设备,以及采用合适的信号调制技术,来减少错误和噪声的发生。

题:请解释物理层中的比特流服务是什么?
答案:比特流服务是物理层提供的一种基本服务,它负责在发送方和接收方之间传输原始的、未经处理的比特流。比特流服务不关心比特的具体含义或结构,只负责确保比特流的正确传输。

题:在物理层中,如何保证数据传输的可靠性和完整性?
答案:在物理层,数据传输的可靠性和完整性主要通过以下方式保证:使用高质量的传输介质和接口设备;采用合适的信号调制技术;以及利用数据链路层的差错控制和流量控制机制来检测和纠正传输过程中的错误。

题:描述物理层如何与其他网络层次(如数据链路层、网络层等)进行交互?
答案:物理层与其他网络层次的交互主要体现在数据的传输和接收上。物理层接收来自数据链路层的比特流,并将其转换为适合在传输介质上传输的信号;同样,物理层也将从传输介质上接收到的信号转换为比特流,并传递给数据链路层。这种交互确保了数据能够在不同网络层次之间正确、高效地传输。

题:对于物理层的网络安全问题,你有哪些了解和看法?
答案:物理层的网络安全问题主要涉及传输介质和设备的安全性。例如,未经授权的访问或破坏物理设备、窃听或干扰传输介质上的信号等都可能对网络安全构成威胁。为了保障物理层的安全,需要采取一系列措施,如加强设备的物理保护、使用加密技术保护传输的数据、以及定期检查和维护传输介质等。此外,还应关注新兴的物理层安全技术,如量子密钥分发等,以应对不断变化的网络安全威胁。

这些面试题和答案涵盖了物理层的基本概念、功能、数据传输过程、错误处理、与其他网络层次的交互以及安全等方面,有助于全面评估应聘者对物理层的理解和掌握程度。

在这里插入图片描述

二,数据链路层

题:请简述数据链路层的主要功能是什么?
答案:数据链路层的主要功能是在物理层提供的服务基础上,向网络层提供可靠的数据传输服务。这包括将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上透明地传输帧,以及实现差错控制和流量控制等功能。

题:数据链路层中的帧是什么?它在数据传输中起什么作用?
答案:帧是数据链路层中的协议数据单元,它由首部和尾部以及数据部分组成。在数据传输中,帧起着界定数据块的作用,使得接收端能够准确地识别出一个个完整的数据块,从而实现数据的正确传输。

题:什么是数据链路层的封装成帧?
答案:封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。首部中包含了帧的一些控制信息,如帧的长度、帧的类型等;尾部则用于标识帧的结束。封装成帧的作用是使得接收端能够准确地识别出一个个完整的数据帧。

题:请解释数据链路层的透明传输是什么意思?
答案:透明传输是指无论发送方发送什么样的比特组合,数据链路层都能够按照原样无差错地传输到接收方。也就是说,数据链路层对于传输的数据内容是“透明”的,不会对其进行任何修改或解释。

题:差错控制在数据链路层中是如何实现的?
答案:数据链路层通过差错控制机制来检测和纠正传输过程中可能发生的差错。常见的差错控制方法包括检错编码(如奇偶校验码)和纠错编码(如循环冗余校验码CRC)。这些方法通过在数据中添加一些冗余信息,使得接收端能够检测出数据中的错误并进行纠正。

题:请解释数据链路层中的流量控制是什么?
答案:流量控制是数据链路层的一种机制,用于防止发送方发送数据的速率过快,导致接收方来不及处理而丢失数据。通过流量控制,发送方可以根据接收方的接收能力来调整发送速率,确保数据的可靠传输。

题:数据链路层中的链路和数据链路有什么区别?
答案:链路是指从一个结点到相邻结点的一段物理线路,它只负责提供物理连接。而数据链路则是除了物理线路外,还必须有一些必要的通信协议来控制数据的传输。也就是说,数据链路是在物理链路的基础上,加上了一些必要的通信协议来实现数据的可靠传输。

题:请简述CSMA/CD协议的工作原理。
答案:CSMA/CD(载波侦听多路访问/碰撞检测)协议是数据链路层中的一种介质访问控制协议,主要用于以太网中。它的工作原理是:发送方在发送数据前先侦听信道是否空闲,若空闲则发送数据;在发送数据的同时继续侦听信道,若检测到碰撞(即有其他发送方也在发送数据),则立即停止发送并等待一段时间后再重新尝试发送。

题:交换机在数据链路层中的作用是什么?
答案:交换机工作在数据链路层,它的主要作用是连接多个网络设备,并实现数据包在这些设备之间的转发。交换机通过维护一个转发表来记录每个设备所在的网络地址,当接收到一个数据包时,它会根据转发表中的信息将数据包转发到目标设备所在的端口。

题:请解释数据链路层中的点对点信道和广播信道有什么区别?
答案:点对点信道是指两个相邻节点之间的通信信道,它们之间的通信是点对点的,即每个节点只能与它的相邻节点进行通信。而广播信道则是多个节点共享一个通信信道,任何一个节点发送的数据都可以被其他所有节点接收到。这两种信道的主要区别在于通信方式和范围的不同。
在这里插入图片描述

三,网络层

题:请解释什么是IP地址,它分为几类?
答案:IP地址(Internet Protocol Address)是分配给连接到互联网上的每台设备的唯一标识符。它用于在计算机网络中定位设备,以便实现数据的传输和通信。传统的IPv4地址分为五类:A类、B类、C类、D类和E类。其中,A、B、C类用于标识网络中的主机,D类用于多播地址,E类保留用于将来的应用。

题:请描述子网掩码的作用是什么?
答案:子网掩码用于划分IP地址中的网络部分和主机部分。它通过与IP地址进行逻辑与运算,来确定一个IP地址所属的网络地址。子网掩码可以帮助路由器等设备确定数据包应该发送到哪个网络。

题:什么是CIDR(无类别域间路由)?
答案:CIDR(无类别域间路由)是一种用于分配IP地址和构造路由表的IP地址分配方法。它消除了传统的A、B、C类网络划分的概念,允许更灵活和高效的IP地址分配。CIDR使用斜线记法(如192.168.1.0/24)来表示网络前缀的长度。

题:请解释ARP协议的工作原理。
答案:ARP(地址解析协议)用于将网络层(IP层)提供的32位IP地址解析为数据链路层使用的物理地址(如MAC地址)。当一个设备需要与另一个设备通信时,如果只知道目标设备的IP地址而不知道其MAC地址,它会发送一个ARP请求到本地网络,请求中包含目标设备的IP地址。收到ARP请求的设备会检查其IP地址是否与请求中的IP地址匹配,如果匹配,则回应其MAC地址。这样,发送方就能获取到目标设备的MAC地址,进而进行通信。

题:什么是路由?请解释静态路由和动态路由的区别。
答案:路由是指数据包在网络中从源节点到目标节点所经过的路径选择过程。静态路由是手动配置的路由信息,管理员根据网络拓扑结构手动指定每个路由条目。而动态路由则是路由器之间通过路由协议(如OSPF、BGP等)交换路由信息,自动计算并选择最佳路径。动态路由更适应网络变化,但可能会产生额外的路由协议开销。

题:请描述ICMP协议的主要功能。
答案:ICMP(Internet Control Message Protocol)是互联网控制报文协议,用于在IP主机、路由器之间传递控制消息。其主要功能包括报告IP数据包的传输错误(如目的不可达、超时等),以及进行网络探测和诊断(如ping命令就利用了ICMP协议)。

题:什么是NAT(网络地址转换)?它有什么作用?
答案:NAT(网络地址转换)是一种在IP地址私有和公有之间转换的技术。它允许一个私有IP地址的网络(如家庭或企业内部网络)通过公共IP地址(如ISP提供的单一IP地址)连接到互联网。NAT有助于缓解IPv4地址空间不足的问题,同时提供了一定的网络安全性,因为它隐藏了内部网络的私有IP地址。

题:请解释什么是VPN(虚拟私人网络),它如何工作?
答案:VPN(虚拟私人网络)是一种通过公共网络(如互联网)建立加密通道来传输数据的技术,从而实现远程用户访问公司内部网络资源时,数据的安全传输。VPN使用隧道协议(如PPTP、L2TP、IPsec等)在公共网络上建立虚拟的私人网络,并对传输的数据进行加密,以确保数据的机密性和完整性。

题:什么是IGMP(Internet组管理协议)?
答案:IGMP(Internet组管理协议)是用于IPv4网络的组播成员资格报告协议。它允许IP主机通知本地路由器它们希望加入或离开某个特定的组播组。路由器则使用这些IGMP报告来构建组播转发表,从而只将组播流量转发给那些实际感兴趣的接收者。

题:什么是MTU(最大传输单元)?它在网络层中的作用是什么?
答案:MTU(最大传输单元)是指网络层协议所允许的最大数据包大小(以字节为单位)。当数据包在网络中传输时,每个网络设备(如路由器、交换机等)都有其自己的MTU限制。如果数据包的大小超过了某个设备的MTU,那么该设备就会对数据包进行分片(fragmentation),将其拆分成多个较小的数据包进行传输。在网络层中,了解并合理配置MTU可以避免数据包分片带来的额外开销和潜在的性能问题。

这些面试题涵盖了网络层的基本概念、协议和工作原理,希望对您有所帮助。在准备面试。

在这里插入图片描述

四,传输层

题:请简述传输层的主要功能是什么?
答案:传输层的主要功能是为两台主机上的应用程序提供端到端的通信服务。这包括数据包的分割与重组、流量控制、差错控制以及服务质量的保证。具体来说,传输层将来自应用层的数据分割成合适大小的数据段,并在接收端进行重组;同时,它还通过一系列机制确保数据的可靠传输,防止数据丢失或乱序。

题:请解释TCP和UDP的主要区别。
答案:TCP(传输控制协议)和UDP(用户数据报协议)是传输层的两种主要协议。它们的主要区别在于连接性、可靠性、有序性以及流量控制等方面。TCP是面向连接的协议,提供可靠的数据传输服务,通过确认和重传机制确保数据的完整性和顺序;而UDP则是无连接的协议,不保证数据的可靠传输,但具有较低的传输延迟。

题:TCP的三次握手过程是怎样的?
答案:TCP的三次握手过程是为了在客户端和服务器之间建立可靠的连接。首先,客户端向服务器发送一个SYN包,请求建立连接;服务器收到SYN包后,回复一个SYN+ACK包,表示同意建立连接并请求客户端确认;最后,客户端再发送一个ACK包,确认收到服务器的SYN+ACK包,至此三次握手完成,连接建立成功。

题:TCP的四次挥手过程是怎样的?
答案:TCP的四次挥手过程用于关闭一个已经建立的连接。首先,客户端向服务器发送一个FIN包,请求关闭连接;服务器收到FIN包后,回复一个ACK包,表示收到客户端的关闭请求;然后,服务器发送一个FIN包给客户端,表示自己也准备关闭连接;最后,客户端回复一个ACK包给服务器,确认收到服务器的FIN包,至此四次挥手完成,连接关闭。

题:TCP是如何保证数据传输的可靠性的?
答案:TCP通过一系列机制保证数据传输的可靠性。包括使用序列号对数据包进行编号,以便在接收端进行重组和排序;使用确认和重传机制确保每个数据包都被正确接收;使用流量控制机制防止发送方发送过多数据导致接收方缓冲区溢出;以及使用拥塞控制机制避免网络拥塞导致的数据丢失。
题:UDP为什么不提供可靠的数据传输服务?
答案:UDP不提供可靠的数据传输服务是因为它主要面向的是那些对实时性要求较高而对数据完整性要求相对较低的应用场景,如音频、视频流等。UDP的设计目标是尽可能快地传输数据,因此它不会进行复杂的确认和重传操作,从而减少了传输延迟。当然,这也意味着UDP在传输过程中可能会出现数据丢失或乱序的情况。

题:请解释TCP的流量控制机制。
答案:TCP的流量控制机制是通过滑动窗口来实现的。发送方和接收方各维护一个窗口,窗口的大小表示接收方当前可用的缓冲区空间。发送方在发送数据时,会检查接收方的窗口大小,确保发送的数据量不会超过接收方的处理能力。当接收方的缓冲区空间不足时,它会缩小窗口大小并通知发送方,发送方则根据新的窗口大小调整发送速率,从而实现了流量控制。

题:什么是TCP的拥塞控制?
答案:TCP的拥塞控制是为了防止过多的数据包注入网络,导致网络性能下降甚至崩溃。TCP通过一系列算法和机制来检测网络拥塞并调整发送速率。例如,当发送方连续收到多个重复确认时,它会认为网络发生了拥塞并降低发送速率;当发送方检测到超时事件时,它会认为网络拥塞严重并大幅度降低发送速率。这些措施有助于维护网络的稳定性和性能。

题:请简述UDP的应用场景。
答案:UDP主要适用于那些对实时性要求较高而对数据完整性要求相对较低的应用场景。例如,在线视频、音频流、实时游戏等应用通常使用UDP作为传输层协议。因为这些应用需要快速传输数据以保持实时性,而数据丢失或乱序对它们的影响相对较小。此外,一些简单的服务或查询请求也可能使用UDP作为传输层协议,因为它们不需要建立复杂的连接和进行复杂的错误处理。

题:在传输层中,如何实现数据的加密和安全性?
答案:在传输层实现数据的加密和安全性通常依赖于SSL/TLS等安全协议。这些协议在传输层和应用层之间建立了一个安全通道,对传输的数据进行加密和解密操作。通过SSL/TLS协议,可以确保数据的机密性(防止数据泄露给未经授权的第三方)、完整性(防止数据在传输过程中被篡改)以及身份认证(验证通信双方的身份)。这些协议在握手阶段协商加密算法和密钥,并在后续的数据传输阶段使用这些算法和密钥对数据进行加密和解密。

这些面试题涵盖了传输层的基本概念、协议、工作机制以及安全性等方面,希望对您有所帮助。在准备面试时,还可以进一步深入研究TCP和UDP的具体实现细节、性能优化以及在实际应用中的使用场景等。
在这里插入图片描述

五,应用层

题:请简述应用层的主要功能是什么?
答案:应用层是计算机网络体系结构中的最高层,负责为用户提供各种网络应用服务。其主要功能包括:提供网络应用与进程间的通信服务,如文件传输、电子邮件、网页浏览等;对传输的数据进行编码和解析,以适应不同的应用需求;以及实现应用进程之间的同步和会话控制等。

题:HTTP协议的主要特点是什么?
答案:HTTP(超文本传输协议)是应用层的一种协议,用于在Web浏览器和服务器之间传输超文本(如网页)。其主要特点包括:无连接(每次请求都需要建立新的连接);无状态(服务器不保留客户端的状态信息);支持B/S模式;以及支持多种请求方法,如GET、POST等。

题:请解释HTTP请求中的GET和POST方法的区别。
答案:GET和POST是HTTP协议中的两种请求方法,它们的主要区别在于:GET方法用于请求指定的页面信息,并将参数附加在URL中;而POST方法用于提交表单数据,数据包含在请求体中。此外,GET请求的数据大小有限制(通常受限于URL长度),而POST请求则没有此限制。安全性方面,POST方法相对更安全,因为它不会在URL中暴露敏感数据。

题:什么是HTTPS,它与HTTP有何不同?
答案:HTTPS(安全超文本传输协议)是在HTTP基础上添加了SSL/TLS层的安全协议。与HTTP相比,HTTPS通过加密的方式传输数据,确保数据的机密性和完整性;同时,HTTPS还通过证书机制验证服务器的身份,防止中间人攻击。因此,HTTPS在安全性方面优于HTTP。

题:请简述DNS的作用和工作原理。
答案:DNS(域名系统)的作用是将人们易于记忆的域名转换为计算机能够理解的IP地址。工作原理上,当用户在浏览器中输入一个域名时,浏览器会向DNS服务器发送一个查询请求;DNS服务器根据域名的层次结构逐级查询,最终找到与该域名对应的IP地址,并将其返回给浏览器;浏览器根据返回的IP地址与对应的服务器建立连接,完成网页的加载。

题:什么是SMTP和POP3,它们在电子邮件系统中扮演什么角色?
答案:SMTP(简单邮件传输协议)用于在电子邮件服务器之间发送和传输邮件;POP3(邮局协议第三版)用于从邮件服务器下载邮件到本地计算机。SMTP负责将发送方撰写的邮件从发送方邮件服务器传输到接收方邮件服务器;而POP3则允许用户在本地计算机上通过邮件客户端软件(如Outlook、Foxmail等)访问并管理存储在邮件服务器上的邮件。

题:请简述FTP协议的工作原理。
答案:FTP(文件传输协议)是一种用于在计算机网络上进行文件传输的协议。工作原理上,FTP采用客户端-服务器模式,客户端通过FTP命令与服务器建立连接;服务器验证客户端的身份并授权访问;客户端指定要传输的文件和传输模式(如二进制或文本模式);服务器根据客户端的请求执行文件的上传或下载操作;操作完成后,客户端发送断开连接的命令,服务器关闭连接。

题:什么是Telnet协议,它有什么用途?
答案:Telnet协议是一种远程登录协议,用于在本地计算机上通过网络远程登录到另一台计算机,并在该计算机上执行命令和操作。Telnet协议通过将本地用户的输入命令传输到远程计算机并执行,同时将远程计算机的输出结果返回给本地用户,实现了远程管理和控制的功能。它广泛应用于网络管理、服务器维护等场景。

题:什么是WebSocket,它与传统HTTP相比有何优势?
答案:WebSocket是一种网络通信协议,提供了在单个TCP连接上进行全双工通信的能力。与传统HTTP相比,WebSocket具有以下优势:实时性更高,因为WebSocket建立持久连接后,服务器可以主动向客户端推送消息,无需客户端轮询;通信效率更高,因为WebSocket通过单个连接进行数据传输,减少了建立和关闭连接的开销;以及更好的交互性,WebSocket支持双向通信,使得客户端和服务器之间可以实时交换数据。

题:请简述RESTful API的设计原则。
答案:RESTful API是一种基于REST(表述性状态转移)架构风格的Web服务接口设计原则。其主要设计原则包括:使用HTTP协议进行通信;使用动词(如GET、POST、PUT、DELETE)表示对资源的操作;使用URI标识资源;返回的数据应具有自描述性,通常采用JSON或XML格式;以及无状态性,即每次请求都应包含足够的信息以理解请求本身,服务器不应保存客户端的状态。这些原则有助于设计出简洁、一致和易于理解的Web服务接口。

这些面试题涵盖了应用层的基本概念、协议、工作原理以及API设计原则等方面,希望对您有所帮助。在准备面试时,可以进一步深入研究HTTP、HTTPS、DNS等协议的实现细节和性能优化,以及在实际应用中的最佳实践。

每日一题

🌏反转链表

🌄原题:反转链表

1.题目描述

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。

数据范围: 0≤n≤1000
要求:空间复杂度 O(1) ,时间复杂度 O(n)。

如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。

以上转换过程如下图所示:
在这里插入图片描述

2.示例

示例1

输入: {1,2,3}
返回值: {3,2,1}

示例2

输入: {}
返回值: {}

说明:空链表则输出空

3.个人思路分析

双链表求解是把原链表的结点一个个摘掉,每次摘掉的链表都让他成为新的链表的头结点,然后更新新链表。下面以链表1→2→3→4为例画个图来看下:
在这里插入图片描述

继续往下看:
在这里插入图片描述

他每次访问的原链表节点都会成为新链表的头结点,最后再来看下代码:

4.题解

Java版本代码实现:

public ListNode ReverseList(ListNode head) {
    //新链表
    ListNode newHead = null;
    while (head != null) {
        //先保存访问的节点的下一个节点,保存起来
        //留着下一步访问的
        ListNode temp = head.next;
        //每次访问的原链表节点都会成为新链表的头结点,
        //其实就是把新链表挂到访问的原链表节点的
        //后面就行了
        head.next = newHead;
        //更新新链表
        newHead = head;
        //重新赋值,继续访问
        head = temp;
    }
    //返回新链表
    return newHead;
}

递归解决:

我们再来回顾一下递归的模板,终止条件,递归调用,逻辑处理。

public ListNode reverseList(参数0) {
    if (终止条件)
        return;

    逻辑处理(可能有,也可能没有,具体问题具体分析)

    //递归调用
    ListNode reverse = reverseList(参数1);

    逻辑处理(可能有,也可能没有,具体问题具体分析)
}

终止条件就是链表为空,或者是链表没有尾结点的时候,直接返回

if (head == null || head.next == null)
    return head;

递归调用是要从当前节点的下一个结点开始递归。逻辑处理这块是要把当前节点挂到递归之后的链表的末尾,看下代码

public ListNode ReverseList(ListNode head) {
    //终止条件
    if (head == null || head.next == null)
        return head;
    //保存当前节点的下一个结点
    ListNode next = head.next;
    //从当前节点的下一个结点开始递归调用
    ListNode reverse = ReverseList(next);
    //reverse是反转之后的链表,因为函数reverseList
    // 表示的是对链表的反转,所以反转完之后next肯定
    // 是链表reverse的尾结点,然后我们再把当前节点
    //head挂到next节点的后面就完成了链表的反转。
    next.next = head;
    //这里head相当于变成了尾结点,尾结点都是为空的,
    //否则会构成环
    head.next = null;
    return reverse;
}

因为递归调用之后head.next节点就会成为reverse节点的尾结点,我们可以直接让head.next.next = head;,这样代码会更简洁一些,看下代码

public ListNode ReverseList(ListNode head) {
    if (head == null || head.next == null)
        return head;
    ListNode reverse = ReverseList(head.next);
    head.next.next = head;
    head.next = null;
    return reverse;
}

这种递归往下传递的时候基本上没有逻辑处理,当往回反弹的时候才开始处理,也就是从链表的尾端往前开始处理的。我们还可以再来改一下,在链表递归的时候从前往后处理,处理完之后直接返回递归的结果,这就是所谓的尾递归,这种运行效率要比上一种好很多

public ListNode ReverseList(ListNode head) {
    return reverseListInt(head, null);
}

private ListNode reverseListInt(ListNode head, ListNode newHead) {
    if (head == null)
        return newHead;
    ListNode next = head.next;
    head.next = newHead;
    return reverseListInt(next, head);
}

尾递归虽然也会不停的压栈,但由于最后返回的是递归函数的值,所以在返回的时候都会一次性出栈,不会一个个出栈这么慢。但如果我们再来改一下,像下面代码这样又会一个个出栈了

public ListNode ReverseList(ListNode head) {
    return reverseListInt(head, null);
}

private ListNode reverseListInt(ListNode head, ListNode newHead) {
    if (head == null)
        return newHead;
    ListNode next = head.next;
    head.next = newHead;
    ListNode node = reverseListInt(next, head);
    return node;
}

粉丝福利

购书链接点击购买

橙子直接送2本好书,参与好评送书~
参与好评送书:随机抽取2位幸运读者,各送一本《计算机考研精炼1000题》实体书。
参与方式:点赞收藏评论本文,随机抽取。

统计截止时间:2024/04/09 19:00:00

请中奖的读者统计截止时间过后2天内私信收货地址,过期奖励作废哈!

编辑推荐

冲刺阶段怎么学?快刷1000题!本书全方位覆盖408的4门科目高频考点,基于历年考点频次编写,精准匹配新考纲,内容科学。赠送秘制电子包祝您轻松上岸!

在这里插入图片描述本书特色

本书主要针对经过一轮复习,且希望进行强化复习的同学。

本书的编排按照408科目的分值对数据结构、计算机组成原理、操作系统和计算机网络4科的题量进行了合理划分,数据结构和计算机组成原理都是大约300题,操作系统约230题,计算机网络约170题,题目按照章节划分。

每一章的章首都包含本章的知识总结,知识总结是按照大纲进行的精炼整理。在做题前、中、后,同学们都可以翻看章首总结,进行查漏补缺或者知识回顾。

做完每一章的习题后,同学们可以参考章节后给出的答案,进行题目的复盘。有些题目的解析会对涉及的知识点进行扩展,同学们也可以跟随思路对考点进行串联。

在这里插入图片描述

  • 42
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙 子_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值