面试题
文章平均质量分 55
想当程序媛的秀妍
这个作者很懒,什么都没留下…
展开
-
面试题--java实现多线程的几种方式
java实现多线程有哪几种方式? 1. 继承Thread 用法:继承Thread,重写里面的run()方法,创建实例,执行start()方法。 优点:代码编写最简单,直接操作 缺点:没有返回值,继承一个类后没法继承其他的类,拓展性差。 public class ThreadDemo1 extends Thread { @Override public void run() { System.out.println("继承Thread实现多线程,名称:"+Thread.cu原创 2021-05-30 11:08:12 · 167 阅读 · 0 评论 -
面试题--接口和抽象类的区别
接口和抽象类的区别 抽象类中可以存在普通的成员函数,而接口中只能存在public abstract方法。 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public abstract final类型的。 抽象类只能继承一个类,而接口可以实现多个。 接口的设计目的是对类的行为进行约束,他只约束了行为的有无,但不对如何实现行为进行约束。抽象类的设计目的是代码复用,当不同的类具有相同的行为,且一部分行为的实现方式一致时,可以让这些类派生于一个抽象类,避免了让所有子类都来实现相同的行为,达到了代码复原创 2021-05-29 21:38:30 · 111 阅读 · 0 评论 -
面试题--为什么局部内部类和匿名内部类只能访问局部final变量
为什么局部内部类和匿名内部类只能访问局部final变量? 首先需要明确一点:内部类和外部类是处于同一个级别的,内部类不会因为定义在方法中就会随着方法的执行完毕而被销毁。 当外部类的方法执行结束时,局部变量就会被销毁,但是内部类对象可能还存在(只有没有人再引用它时才会死亡)。 这里就会有一个矛盾:内部类对象访问了一个不存在的变量,为了解决这个问题就将局部变量复制了一份作为内部类的成员变量,这样放局部变量死亡后,内部类仍可以访问它,实际访问的是局部变量的copy,这样就好像延长了局部变量的生命周期。 将局部变量原创 2021-05-29 21:11:01 · 276 阅读 · 0 评论 -
面试题--从JVM角度谈谈staitc为什么不能调用实例方法
从JVM角度谈谈staitc为什么不能调用实例方法 首先要了解一下Java的内存结构: 静态变量存放在方法区中,并且是被所有线程所共享的。Java堆存放的是我们创建的一个个实例变量。 堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令)。 JVM只有一个堆区被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。 栈区 每个线程包含一个栈区,栈中只保存基本数据类型的对象和自定义对象的的引用,对象本身都存放在堆区中。 每个栈中的数据都是私有的,其原创 2021-05-29 11:06:24 · 160 阅读 · 2 评论 -
面试题--集合相关面试题整理
集合整体框架 1. List和Set区别 List:有序的,按对象进入的顺序保存对象,可重复,允许多个为null的元素对象,可以使用Iterator取出所有元素,再逐一遍历,还可以使用get(int index)获取指定下标的元素。 Set:无序的,不可重复,最多允许一个null元素对象,取元素时只能用Iterator接口取得所有元素,再逐一遍历各元素。 2. ArrayList和LinkedList区别 ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问);扩容机制:因为数组长原创 2021-05-28 20:28:38 · 257 阅读 · 3 评论 -
面试题--String字符串相关
1.String str1="abc";和String str2=new String("abc");有什么区别? 方式一是通过字面量的方式来定义字符串的,方式二是通过new+构造器方式。 通过字面量的方式,此时数据声明在方法区的字符串常量池中;通过new+构造器的方式,此时数据的保存地址值是数据的堆空间中开辟空间以后对应的地址值。 字符串常量存储在字符串常量池中,目的是共享,字符串非常量对象存储在堆中。 2. String s=new String("abc");方式创建对象,在内存中创建了几个原创 2021-05-27 10:46:02 · 101 阅读 · 0 评论 -
面试题--hashCode与equals
hashCode介绍 hashCode()的作用是获取哈希码,也被称为是散列码,实际是返回一个int整数,这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在JDK的Object.java中,Java中的任何类都包含有hashCode()函数。散列表存储的是键值对,他的特点是:能根据键快速的检索出对应的值,这其中就利用了散列码。可以快速的找到所需要的对象。 为什么要有hashCode? 以HashSet如何检查重复为例来说明为什么要有hashCode: 对象加入HashSet时,H原创 2021-05-26 11:01:30 · 276 阅读 · 0 评论 -
面试题--JVM、JRE、JDK的区别
JVM=Java虚拟机 JRE=JVM+基础类库 JDK=JVM+基础类库+编译工具原创 2021-05-26 10:17:10 · 89 阅读 · 0 评论 -
面试题--抽象类与接口
区别 1. 继承方面 抽象类只能单继承;接口可以多实现。 2. 成员属性方面: 抽象类中可以有普通属性,也可以有常量; 接口中的成员变量全部默认是常量,使用public static final修饰,这个可以省略不写。 3. 代码块方面 抽象类可以含有初始化块;接口不能含有初始化块。 4. 构造函数方面 抽象类可以有构造函数,但是这是的构造函数不是用来创建对象的,而是用来被实现类调用进行初始化操作的。 接口不能有构造函数。 5. 方法方面 接口在JDK1.8之后可以定义抽象方法(无方法体)原创 2021-05-26 10:02:17 · 110 阅读 · 0 评论 -
面试题--Java半解释半编译的语言
为什么说Java是一种半解释半编译的程序设计语言? 编译型语言:将源程序全部编译成二进制代码的可运行程序,然后,直接运行这个程序。执行效率高、速度快、依赖编译器,跨平台性稍差;但是编译器需要将代码编译成本地代码,需要一定的执行时间,编译成本地代码之后,执行效率高。 解释型语言:把已经做好的源程序,翻译一句,执行一句,直到结束。响应速度快,省去编译的时间,立即执行,但是执行速度慢、效率低,依靠编译器,但是跨平台性稍好。 Hotspot JVM的执行方式: 当虚拟机启动的时候,解释器可以先发挥作用,而不必等原创 2021-05-26 09:45:58 · 139 阅读 · 0 评论 -
面试题--Comparable和Comparator的区别
文章目录ComparableComparator两者的区别 Java中为我们提供了两种比较机制:Comparable和Compatator,二者都是用来实现对象的比较、排序。 Comparable Comparable是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖comparaTo方法的实现。 自定义对象要进行排序需要继承Comparable接口,并重写了compareTo方法。只有继承了Co原创 2021-05-16 17:22:36 · 198 阅读 · 0 评论 -
面试题--BeanFactory和FactoryBean的区别
文章目录BeanFactoryFactoryBeanFactoryBean和BeanFactory的区别 BeanFactory 它是一个工厂类(接口),负责生产和管理bean的一个工厂。在Spring中,BeanFactory是IOC容器的核心接口,他的职责包括:实例化、定位、配置应用程序中的对象以及建立这些对象间的依赖。 BeanFactory只是一个接口,并不是IOC容器的具体实现,它为其他具体的IOC容器提供了最基本的规范。Spring容器给出了很多种实现,如:在DefaultListableBea原创 2021-05-15 14:33:00 · 173 阅读 · 1 评论