java面试(一)

本文深入解析了static和final关键字的使用,TCP的三次握手和四次挥手过程,ArrayList与LinkedList的区别,泛型的优势,滑动窗口协议的功能,以及JVM内存模型的基本原理。

1、static关键字和final关键字

static

  • .随着类的加载而加载,
  • 2.可以使用类名直接调用
  • 3.静态方法中,只能调用静态的成员;非静态的方法中,可以调用静态和非静态的成员
  • 4.在静态方法中,不会出现this

final

  • 修饰类:类可以实例化,不可以被继承,比如String
  • 修饰方法时:方法不能被重写,比如Object类中的wait()
  • 修饰属性时:常量,一旦初始化后,不可再被赋值

2、TCP的三次握手和四次挥手的过程

三次握手过程

  • 主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接请求数据报文;序号seq=x,表明数据传输时的第一个数据字节的序号是x)
  • 主机B收到请求后,会发回连接确认数据包(其中确认报文段中,标志位SYN=1,ACK=1,表示这是一个TCP连接响应数据报文,并含主机B的初始序列号seq(B)=y,以及主机B对主机A初始序列号的确认号ack(B)=seq(A)+1=x+1)
  • 第三次,主机A收到主机B的确认报文后,还需作出确认,即发送一个序列号seq(A)=x+1;确认号为ack(A)=y+1的报文

四次挥手过程

假设主机A为客户端,主机B为服务器,其释放TCP连接的过程如下

  • 关闭客户端到服务器的连接:首先客户端A发送一个FIN,用来关闭客户到服务器的数据传送,然后等待服务器的确认。其中终止标志位FIN=1,序列号seq=u。
  • 服务器收到这个FIN,它发回一个ACK,确认号ack为收到的序号加1。
  • 关闭服务器到客户端的连接:也是发送一个FIN给客户端。
  • 客户端收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加1。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

3、ArrayList和LinkedList的区别

.(1)ArrayList的实现是基于数组来实现的,LinkedList的基于双向链表来实现。这两个数据结构的逻辑关系是不一样,当然物理存储的方式也会是不一样。 

(2)对于随机访问,ArrayList优于LinkedList。

(3)对于插入和删除操作,LinkedList优于ArrayList

(4)LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

4、泛型的好处

 * 类型安全。泛型的主要目的就是提高Java程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设只能我们自己记或者代码注释;
* 消除强制类型转换。泛型一个附带好处是,消除代码中许多强制类型的转换。减少代码出错率,更好阅读;
* 潜在的性能收益。可以带来更好的优化可能。在泛型的初始实现中,编译器强制类型转换(没有泛型的话,程序员会指定这些强制类型转换,)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为以后的JVM可以带来更好的优化。由于泛型的实现方式,支持泛型几乎不需要JVM或类文件更改,所有工作都在编译器中完成,编译器生成的类没有泛型(和强制类型转换),只是来确保数据类型安全。

5、滑动窗口用来做什么

滑动窗口协议(Sliding Window Protocol)属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。

6、JVM内存模型

Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。

简要言之,jmm是jvm的一种规范,定义了jvm的内存模型。它屏蔽了各种硬件和操作系统的访问差异,不像c那样直接访问硬件内存,相对安全很多,它的主要目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题。可以保证并发编程场景中的原子性、可见性和有序性。

Delphi 12.3 作为款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值