
Java经典面试题
文章平均质量分 78
分享Java面试题
冷雨夜♞
进击的菜鸟
展开
-
Java经典面试题-7
反之,如果一个正在执行某个操作的线程必须要正确地关闭掉否则就会出现不好的后果的话,那么这个线程就不能是守护线程,而是用户线程,通常都是些关键的事务,比方说,数库录入或者更新,这些操们都是不能中断的。守护线程:为所有非守护线程提供服务的线程,任何一个守护线程都是整个JVM中所有非守护线程的保姆;GC垃圾回收线程:就是一个经典的护线程,我们的程序中不再有任何运行的Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是JVM上仅剩的线程时,垃圾回收线程会自动离开。守护线程的作用是什么?原创 2024-07-23 09:59:36 · 456 阅读 · 0 评论 -
Java经典面试题-6
(1)、等待阻塞:运行的线程执行wait方法,该线程会释放占用的所白资源,JVM会把该线程放入"等待池"中,进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用nolify或nolifyAII方法才能被唤,wait是objecl类的方治。所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。是每个线程独有的,保存其运行状态和局部自动变量的。原创 2024-07-22 14:36:13 · 804 阅读 · 0 评论 -
Java经典面试题-5
每一种平台的解释器是不同的,但是实现的虚拟机是相问的。Java源程序经过编译器编译后变成字节码,字节码由虚似机解释执行,虚拟机将每一条执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。在java中,这种供虛拟机理解的代码叫做 字节码(即护展名为 .class的文件),它不面向任何特定的处理器,只面向虚拟机。同时也避免了类的重复加载,因为JVM中区分不同类,不仅仅是根据类名,相同的 class文件被不同的ClassLoader加载就是不同的两个类。(空指针,程序员可以处理)原创 2024-07-22 14:00:33 · 291 阅读 · 0 评论 -
Java经典面试题-4
ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能、其至超过LinkedList(需要创建大量的node对象)冲突,先进行equal比较,相同则取代该元素,不同,则判断链表高度插入链表,链表高度达到8,并且数组长度到64则转变为红黑树,长度低于6则将红黑树转回链表。原创 2024-07-19 10:58:14 · 381 阅读 · 0 评论 -
Java经典面试题-3
它实际上是返回一个int整数,这个哈希的作用是确定该对象在哈希表中的承引位置,hashCode()定义在JDK的0bjecl.java中,java中的任何类都包含有hashCode() 函数。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。接口的设计目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。(先有子类后有父类)原创 2024-07-19 10:00:17 · 409 阅读 · 0 评论 -
Java经典面试题-2
这里就出现了一个矛盾:内部类对象访问了一个不存在的变量,为了解决这个问题,就将局部变量复制了一份作为内部类的成员变量,这样当局部交量死亡后,内部类仍可以访问它,实际访问的是局部交量的"copy"。就将局部变量设置为final,对它初始化后,我就不让你再去修改这个变量,就保证了内部类的成员变量和方法的局部变量的一致性。将局部变量复制为内部类的成员变量时,必须保证这两个变量是一样的,也就是如果我们在内部类中修改了成员变量,方法中的局部受量也得跟着改变,怎么解决问题呢?但是引用的值是可变的。原创 2024-07-18 15:42:37 · 1074 阅读 · 0 评论 -
Java经典面试题-1
当创建 String类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。String中的 equals方法是被重写过的,因为 Object的 equals方法是比较的对象的内存地址,而 String的 equals方法比较的是对象的值。4、清洗--->5、烘干。操作数据库,我们不需要关心链接是如何建立的、sql是如何执行的,只需要引入mybatis,调方法即可。==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址。原创 2024-07-18 14:54:35 · 414 阅读 · 0 评论