- 博客(26)
- 收藏
- 关注
原创 java基础面试题九网络编程与反射机制
的协议,这意味着在数据传输之前,必须先建立连接。加载的类会被放在 JVM 的方法区中,方法区是一个所有线程共享的区域,用于存储类的元数据信息,包括类名称、属性、方法、常量池等。TCP 协议和 UDP 协议都是传输层协议,用于在网络中传输数据,但它们在工作机制和应用场景上存在显著差异。如果需要创建类的实例,需要使用。TCP 协议的三次握手和四次挥手机制是保证 TCP 连接可靠性的重要手段。方法会调用一系列方法来完成类的加载和初始化,但不一定会调用构造方法。由于不需要建立连接,也不进行数据校验和重传,因此。
2024-12-02 22:04:57
939
原创 java基础面试题八File类与IO流
内部提供了一个数组,将读取或要写出的数据,现在此数组中缓存。达到一定程度时,集中性的写出。作用:减少与磁盘的交互,进而提升读写效率。对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原来的Java对象。
2024-12-02 21:29:19
820
原创 java基础面试题七数据结构与集合源码
线程安全的 List是指在多线程环境中,多个线程可以安全地访问和修改同一个 List 实例,而不会导致数据不一致或抛出异常。线程安全的 List 提供了同步机制,确保每个线程在操作 List 时,不会与其他线程发生冲突。Vector:线程安全的。ArrayList:线程不安全。----> 使用同步机制处理。1. 高效的哈希计算在HashMap中,确定元素存储位置(索引)是通过以下公式计算的:索引=(hash&(length−1))hash:键的哈希值。length。
2024-11-22 21:02:03
885
原创 java基础面试题六集合框架
自定义类型可以作为HashMap的key,但必须确保自定义类正确实现了hashCode()和equals()方法,这样才能保证哈希值的正确性和键的唯一性。键对象的hashCode()和equals()方法应该根据对象的实际属性来实现,确保哈希表的效率和正确性。
2024-11-10 14:51:17
881
原创 java基础面试题五常用类与基础API
变量 + 常量 、变量+变量:创建一个StringBuilder的实例,通过append()添加字符串,最后调用toString()返回一个字符串。//底层是new的方式返回一个subStr,实体内容是"el",主要是为了保持它的不可变性、安全性和性能的优化。因此,在多线程环境下处理大量字符串拼接时,推荐使用。是安全且便捷的,对于匹配一组已知字符串非常有用。进行频繁的拼接操作时仍然会带来性能问题,因为每次拼接都会创建新的。可以在字符串池中复用,减少内存消耗并提升程序性能。是线程安全的,但使用。
2024-11-09 23:18:58
954
原创 java基础面试题四多线程
线程(thread):进程可进一步细化为线程,是程序内部的一条执行路径。一个进程中至少有一个线程。一个进程同一时间若并行执行多个线程,就是支持多线程的。线程作为CPU调度和执行的最小单位。一个进程中的多个线程共享相同的内存单元,它们从同一个堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。线程池是一个管理、控制多个工作线程的技术,用于减少线程的创建与销毁次数,提高系统资源的使用效率。在 Java 中,线程池由包中的。
2024-11-02 13:06:16
1011
原创 java基础面试题三异常处理
1.异常的分类Java中的异常主要分为两类:1.1.检查异常(Checked Exceptions)定义:检查异常是在编译时被检查的异常,必须在代码中显式处理(通过try-catch块或throws声明)。示例:常见的检查异常包括::处理输入输出时可能发生的异常。:处理数据库操作时可能发生的异常。1.2.运行时异常(Unchecked Exceptions)定义:运行时异常是在运行时发生的异常,不需要在编译时进行检查,可以选择性地处理。示例:常见的运行时异常包括::尝试访问空对象时抛出。
2024-10-30 21:32:20
1120
原创 java基础面试题二面向对象
1.方法区(Method Area)定义:存放类的结构信息,包括字段、方法、常量池、静态变量和类的元数据等。特点是所有线程共享的区域。当类被加载时,它的相关信息会被存储在方法区中。Java 8 之前,方法区也包括运行时常量池,Java 8 之后,这一部分被移到了元空间(Metaspace)。2.堆区(Heap)定义:用于存储对象实例和数组,是JVM中最大的内存区域。特点所有线程共享堆内存。在堆中分配的对象会在运行时通过垃圾回收(GC)进行管理。
2024-10-29 19:45:36
1068
原创 第十七章_JDK8-17新特性
对于新特性,我们应该从哪几个角度学习新特性呢?语法层面:比如JDK5中的自动拆箱、自动装箱、enum、泛型比如JDK8中的lambda表达式、接口中的默认方法、静态方法比如JDK10中局部变量的类型推断比如JDK12中的switch比如JDK13中的文本块API层面:比如JDK8中的Stream、Optional、新的日期时间、HashMap的底层结构比如JDK9中String的底层结构新的 / 过时的 API底层优化比如JDK8中永久代被元空间替代、新的JS执行引擎。
2024-10-25 19:02:51
1865
原创 第十六章_反射机制
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在运行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射@Inherited@Inherited。
2024-10-24 21:00:43
1193
原创 第十五章_网络编程
Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
2024-10-23 22:32:15
890
原创 第十四章_File类与IO流
File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。File对象可以作为参数传递给流的构造器。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
2024-10-22 21:29:53
1176
原创 第十三章_数据结构与集合源码二
因为一个HashMap的table数组一般不会特别大,至少在不断扩容之前,那么table.length-1的大部分高位都是0,直接用hashCode和table.length-1进行&运算的话,就会导致总是只有最低的几位是有效的,那么就算你的hashCode()实现的再好也难以避免发生碰撞,这时让高位参与进来的意义就体现出来了。那么发生碰撞冲突时怎么办?因为如果数组的长度为2的n次幂,那么table.length-1的二进制就是一个高位全是0,低位全是1的数字,这样才能保证每一个下标位置都有机会被用到。
2024-10-21 20:39:59
1095
原创 第十二章_数据结构与集合源码一
*** 添加元素*/throw new RuntimeException("数组已满,不可添加");size++;/*** 查询元素value在数组中的索引位置* @return*/i < size;return -1;/*** 从当前数组中移除首次出现的value元素* @return*/i++){size--;/*** 将数组中首次出现的oldValue替换为newValue* @return*/
2024-10-21 20:03:22
1002
原创 第十一章_泛型(Generic)
在Java中,我们在声明方法时,当在完成方法功能时如果有未知的数据需要参与,这些未知的数据需要在调用方法时才能确定,那么我们把这样的数据通过形参表示。在方法体中,用这个形参名来代表那个未知的数据,而调用者在调用时,对应的传入实参就可以了。受以上启发,JDK1.5设计了泛型的概念。泛型即为“类型参数”,这个类型参数在声明它的类、接口或方法中,代表未知的某种通用类型。集合类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以。
2024-10-21 13:13:55
1010
原创 第十章_集合框架
一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点数组初始化以后,长度就确定了。数组中的添加的元素是依次紧密排列的,有序的,可以重复的。数组声明的类型,就决定了进行元素初始化时的类型。不是此类型的变量,就不能添加。可以存储基本数据类型值,也可以存储引用数据类型的变量数组在存储数据方面的弊端。
2024-10-20 17:31:49
1034
原创 第九章_常用类和基础API
因为字符串对象设计为不可变,那么所以字符串有常量池来保存很多常量对象。JDK6中,字符串常量池在方法区。JDK7开始,就移到堆空间,直到目前JDK17版本。
2024-10-19 17:07:18
1142
原创 第八章_多线程
Java语言的JVM允许程序运行多个线程,使用类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Thread类的特性每个线程都是通过某个特定Thread对象的run()方法来完成操作的,因此把run()方法体称为线程执行体。通过该Thread对象的start()方法来启动这个线程,而非直接调用run()要想实现多线程,必须在主线程中创建新的线程对象。
2024-10-17 18:06:17
1075
原创 第七章_异常处理
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美客户输入数据的格式问题读取文件是否存在网络是否始终保持通畅等等。异常:指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。异常指的并不是语法错误和逻辑错误。语法错了,编译不通过,不会产生字节码文件,根本不能运行。代码逻辑错误,只是没有得到想要的结果,例如:求a与b的和,你写成了a-b在编写程序时,经常要在可能出现错误的地方加上检测的代码,如进行x/y运算时,要检测分母为0数据为空输入的不是数据而是字符等。
2024-10-17 12:48:33
1141
原创 第六章_面向对象编程三
设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我们用不同的棋谱。"套路"经典的设计模式共有23种。每个设计模式均是特定环境下特定问题的处理方法。简单工厂模式并不是23中经典模式的一种,是其中工厂方法模式的简化版。
2024-10-16 17:57:30
842
原创 第五章_面向对象编程二
角度一:从上而下为描述和处理个人信息,定义类Person:为描述和处理学生信息,定义类Student:通过继承,简化Student类的定义:说明:Student类继承了父类Person的所有属性和方法,并增加了一个属性school。Person中的属性和方法,Student都可以使用。
2024-10-15 21:44:37
1947
原创 第二章_流程控制语句
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,执行终止。(1)如果是嵌套在if语句块中的,只有当外部的if条件满足,才会去判断内部的条件 (2)如果是嵌套在else语句块中的,只有当外部的if条件不满足,进入else后,才会去判断内部的条件。否则,可读性会很差。if语句的条件是一个布尔类型值,if条件表达式为true则进入分支,可以用于范围的判断,也可以用于等值的判断,
2024-10-14 10:53:09
962
原创 第一章_变量与运算符
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。定义long类型的变量,赋值时需要以"l"或"L"作为后缀。Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。Java的整型常量默认为 int 型。
2024-10-14 09:48:15
1096
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人