火爆大厂的100道Java面试题及答案(2022年整理,持续更新) --网络协议篇

前言:

这是一个基本涵盖Java初中级大部分核心知识点的面试题集,包含了Java基础、容器、多线程、Spring、SpringBoot、MyBatis、Linux、MySQL、Redis、MongoDB、网络协议、JVM等方向。所有题目都是我亲自整理的。

因为无法生成自动跳转的目录,同时我也按照分类汇总整理成了PDF版,排版上相比更加整齐并且带有书签 阅读起来也比较方便全部。前前后后花费半个月的时间,共计24W字。

收藏的时候,顺便点个赞呗~

收藏的时候,顺便点个赞呗~

收藏的时候,顺便点个赞呗~

1. 什么是网络编程

  • 网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给其他设备,然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动,而服务器为了能够时刻相应连接,则需要一直启动。
  • 例如以打电话为例,首先拨号的人类似于客户端,接听电话的人必须保持电话畅通类似于服务器。连接一旦建立以后,就客户端和服务器端就可以进行数据传递了,而且两者的身份是等价的。在一些程序中,程序既有客户端功能也有服务器端功能,最常见的软件就是QQ、微信这类软件了。

2. 网络编程中两个主要的问题

**1、**一个是如何准确的定位网络上一台或多台主机,

**2、**另一个就是找到主机后如何可靠高效的进行数据传输。

  • 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。
  • 而TCP层则提供面向应用的可靠(TCP)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
  • 目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。

3. 网络协议是什么

在计算机网络要做到井井有条的交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。

4. 为什么要对网络协议分层

**1、**简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小问题。

**2、**灵活性好。当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受影响。

**3、**易于实现和维护。

**4、**促进标准化工作。分开后,每层功能可以相对简单地被描述

5. 计算机网络体系结构

.

OSI参考模型

  • OSI(Open System Interconnect),即开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO为了更好的使网络应用更为普及,推出了OSI参考模型,这样所有的公司都按照统一的标准来指定自己的网络,就可以互通互联了。
  • OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)。

TCP/IP参考模型

TCP/IP四层协议(数据链路层、网络层、传输层、应用层)

**1、**应用层 应用层最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,TELNET等。

**2、**传输层 建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。

**3、**网络层 本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。

**4、**数据链路层 通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路,

6. 什么是TCP/IP和UDP

**1、**TCP/IP即传输控制/网络协议,是面向连接的协议,发送数据前要先建立连接(发送方和接收方的成对的两个之间必须建 立连接),TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达

**2、**UDP它是属于TCP/IP协议族中的一种。是无连接的协议,发送数据前不需要建立连接,是没有可靠性的协议。因为不需要建立连接所以可以在在网络上以任何可能的路径传输,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

7. TCP与UDP区别:

**1、**TCP是面向连接的协议,发送数据前要先建立连接,TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达;

**2、**UDP是无连接的协议,发送数据前不需要建立连接,是没有可靠性;

**3、**TCP通信类似于于要打个电话,接通了,确认身份后,才开始进行通行;

**4、**UDP通信类似于学校广播,靠着广播播报直接进行通信。

**5、**TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多;

**6、**TCP是面向字节流的,UDP是面向报文的; 面向字节流是指发送数据时以字节为单位,一个数据包可以拆分成若干组进行发送,而UDP一个报文只能一次发完。

**7、**TCP首部开销(20字节)比UDP首部开销(8字节)要大

**8、**UDP 的主机不需要维持复杂的连接状态表

8. TCP和UDP的应用场景:

对某些实时性要求比较高的情况使用UDP,比如游戏,媒体通信,实时直播,即使出现传输错误也可以容忍;其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失的情况

9. 形容一下TCP和UDP

TCP通信可看作打电话:

李三(拨了个号码):喂,是王五吗? 王五:哎,您谁啊? 李三:我是李三,我想给你说点事儿,你现在方便吗? 王五:哦,我现在方便,你说吧。 甲:那我说了啊? 乙:你说吧。 (连接建立了,接下来就是说正事了…)

UDP通信可看为学校里的广播:

播音室:喂喂喂!全体操场集合

10. 运行在TCP 或UDP的应用层协议分析。

运行在TCP协议上的协议:

  • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
  • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
  • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
  • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
  • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。

运行在UDP协议上的协议:

  • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
  • NTP(Network Time Protocol,网络时间协议),用于网络同步。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

运行在TCP和UDP协议上:

  • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作。
  • ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCPUDP协议上)。
  • SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
  • ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。

11. 什么是Http协议?

  • Http协议是对客户端和服务器端之间数据之间实现可靠性的传输文字、图片、音频、视频等超文本数据的规范,格式简称为“超文本传输协议”
  • Http协议属于应用层,及用户访问的第一层就是http

12. Http和Https的区别?

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:

  • 端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
  • 资源消耗:和HTTP通信相比
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在准备Java大厂面试题时,首先要了解这些面试题的类型和要求,以便能够做出全面而详细的答案。一些常见的Java大厂面试题如下: 1. Java基础知识:这些问主要涵盖Java语言的基础概念、关键字和常用API的用法。例如,讲解面向对象的三大特征、final关键字的作用和用法等。 2. Java集合框架:这些问主要测试对Java集合框架的熟悉程度,例如ArrayList和LinkedList的区别、HashMap的实现原理等。 3. 多线程与并发:这些问涉及多线程编程的基础知识,例如线程的生命周期、线程同步的方式和Java并发包的使用等。 4. JVM相关知识:这些问主要考察对Java虚拟机的理解,例如垃圾回收机制、类加载机制和JVM调优等。 5. 数据库和SQL:这些问主要涉及数据库和SQL语句的基本知识,例如主键和外键的作用、SQL语句的优化等。 6. 设计模式:这些问主要测试对常用设计模式的理解和应用,例如单例模式和观察者模式等。 为了回答这些问,我们需要通过学习和实践来掌握相关知识和技能。可以通过阅读相关书籍、参加培训课程和进行实际项目的练习来提高自己的能力。此外,参与开源项目和积极参加技术社区的讨论也是很好的提升途径。 在面试时,除了准备答案外,还要注意以下几点: 1. 清晰地表达思路:面试官更注重你的思考过程和解决问的能力,所以在回答问时要注意表达清晰,让面试官了解你的思路。 2. 基础扎实:基础知识是面试的基础,所以要对Java的语法、集合框架和多线程等基础知识有一定的掌握。 3. 实践经验:大厂更看重实际项目经验,所以可以在回答问时结合自己的实践经验,展示自己的能力和才华。 总之,准备Java大厂面试题需要有广泛的知识体系和丰富的实践经验。通过系统地学习和实践,我们可以在面试中表现出色,并最终获得理想的工作机会。 ### 回答2: Java 大厂面试题通常涵盖了各种八股文,要想在面试中表现出色,需要对这些目有深入的理解和熟练的应用。238页的整理材料确实是一份非常全面的资源。下面我将以300字的幅对这些目进行回答,希望可以对你有所帮助。 首先,Java的面向对象特性是非常重要的一个方面。我们需要熟练掌握封装、继承和多态等概念,理解它们的用途和具体实现方式。此外,还需要掌握设计模式,比如单例模式、观察者模式等,能够灵活运用在实际项目中。 其次,对于Java的并发编程,我们需要了解线程和锁的相关知识。掌握常用的线程安全类,比如ConcurrentHashMap和CountDownLatch等,以及各种锁机制,比如synchronized和Lock。此外,还需要了解线程池的概念和用法,以及如何使用它们来提高程序的性能。 另外,Java的虚拟机原理和垃圾回收机制也是面试的重要考点。了解JVM内存模型、垃圾回收算法和调优技巧等,对于理解和优化Java程序的运行效率至关重要。 还有,对于网络编程和分布式系统,我们需要了解TCP/IP协议栈、HTTP协议和RESTful架构等。了解Dubbo、Spring Cloud等分布式框架的原理和用法,掌握如何进行接口的设计和调用,对于大型分布式系统的开发非常关键。 此外,还需要熟练运用数据库和缓存等技术。了解数据库的事务、索引和分库分表等,掌握MyBatis和Hibernate等ORM框架的使用方式。对于缓存的选择和使用,需要了解Redis和Memcached等常见缓存中间件的原理和用法。 最后,对于代码质量和系统性能优化也要有一定的了解。熟悉代码规范和重构技巧,能够写出简洁、高效的代码。了解性能测试和调优方法,能够定位和解决程序的性能瓶颈。 总之,Java大厂面试题主要涵盖了面向对象、并发编程、虚拟机原理、网络编程、分布式系统、数据库和缓存技术、代码质量和系统性能优化等多个方面。通过深入了解这些知识点,并能够熟练应用到实际项目中,才能在面试中有更好的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值