每天一道Java面试题
Java面试题
594羞涩男孩
这个作者很懒,什么都没留下…
展开
-
每天一道面试题(28)
1. SpringBoot项目的启动流程简单概述2. MySQL数据库的索引作用和优缺点. 如何创建索引3. 简单介绍ThreadLocal的作用(结合实例)4. 说说自己的缺点5. Spring框架bean对象的生命周期6. SpringBoot框架中yml和properties文件哪个优先加载7. 怎么理解多线程,你的项目当中哪里用到了多线程8. 10000个数据包含字母和数字 用ASCll码排序 怎么实现9. 什么是二叉树,红黑树是什么10. jvm的内存结构介绍一原创 2021-05-21 10:04:18 · 73 阅读 · 0 评论 -
每天一道面试题(27)----hashCode()与equals()的相关规定
hashCode()与equals()的相关规定:如果两个对象相等,则hashCode一定也是相同的 hashCode是JDK根据对象的地址或者字符串以及数字算出来的int类型的数值 两个对象相等,则他们的equals方法返回true 两个对象有相同的hashCode值,它们也不一定相等 因此,equals方法被覆盖重写,则hashCode方法也必须被覆盖重写 hashCode()的默认行为是对堆上的对象产生独特值.如果没有重写hashCode(),则该class的两个对象无论如何都不会相原创 2021-04-08 08:09:19 · 232 阅读 · 0 评论 -
每天一道面试题(24)----类同时继承父类和实现接口时易出现的问题
类同时继承父类和实现接口时易出现的问题使用接口的时候,需要注意:接口是没有静态代码块或者构造方法的。一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。格式:public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB {// 覆盖重写所有抽象方法}如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。原创 2021-04-02 00:03:42 · 562 阅读 · 0 评论 -
每天一道面试题(25)----Collections集合工具类
java.utils.Collections是集合工具类,用来对集合进行操作。public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。public class Demo01Collections { public static void main(St原创 2021-04-01 22:46:46 · 117 阅读 · 0 评论 -
每天一道面试题(21)----Java中ArrayList和LinkedList区别?
ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加、删除、插入新的元素或者数据的扩展和重定向。LinkedList使用了循环双向链表数据结构。与基于数组的ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作场景。LinkedList链表由一系列表项连接而成。一个表项总是包含3个部分:元素内容,前驱表和后驱表,如图所示:在下图展示了一个包含3个元素的LinkedList的各个表原创 2021-03-30 22:37:18 · 76 阅读 · 0 评论 -
每天一道面试题(20)----数组和链表分别比较适合用于什么场景?
数组和链表简介在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中地数据进行各种处理。当内存中有足够大地连续空间时,可以把数据连续地存放在内存中,各种编程语言中的数组一般都是按这种方式存储的;当内存中只有一些离散的可用空间时,想要连续存储数据非常困难,这时能想到的一种解决方式是移动内存中的数据,把离散的空间聚集成连续的一大块空间。然而有时候移动数据也会存在困难;另外能想到的方式是原创 2021-03-30 20:33:38 · 851 阅读 · 0 评论 -
每天一道面试题(19)----HashMap和HashTable有什么区别
HashMap是线程不安全的,HashMap是一个接口,是Map的一个子接口,是将键映射到值的对象,不允许键值重复,允许空键和空值;由于非线程安全,HashMap的效率要较HashTable的效率高一些。HashTable是线程安全的一个集合,不允许null值作为一个key值或者value值。HashTable是synchronized,多个线程访问时不需要自己为它的方法实现同步,而HashMap在被多个线程访问时不需要自己为它的方法实现同步,而HashMap在被多个线程访问的时候需要自己为它的方法原创 2021-03-30 19:45:35 · 105 阅读 · 0 评论 -
每天一道面试题(18)----List、Map和Set的区别
结构特点List和Set是存储单列数据的集合,Map是存储键和值这样的双列数据的集合;List中存储的数据是有顺序的,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的,Set中存储的数据是无序的,且不允许有重复,但元素在集合中的位置由元素的hashcode决定,位置是固定的(Set集合根据hashcode来进行数据的存储,所以位置是固定的,但是位置不是用户可以控制的,所以对于用户来说Set中的元素还是无序的)。实现类List接口有三个实现类:LinkedL原创 2021-03-30 14:42:41 · 200 阅读 · 0 评论 -
每天一道面试题(16)----ArrayList的几个常用方法之clear()
接下来我们分别分析ArrayList的clear方法的实现原理。/** * Removes all elements from this {@code ArrayList}, leaving it empty. * * @see #isEmpty * @see #size */ @Override public void clear() { if (size != 0) { Arrays.fill(array, 0, size, null);原创 2021-03-30 08:52:05 · 164 阅读 · 0 评论 -
每天一道面试题(15)----ArrayList的几个常用方法之remove()
接下来我们分别分析ArrayList的remove方法的实现原理。remove方法有两个重载,我们只研究remove(int index)方法。/** * Removes the object at the specified location from this list. * * @param index * the index of the object to remove. * @return the removed object. * @throws IndexOutOfBo原创 2021-03-30 08:45:16 · 154 阅读 · 0 评论 -
每天一道面试题(14)----ArrayList的几个常用方法之add()
接下来我们分别分析ArrayList的add、remove、clear方法的实现原理。add方法/** * Adds the specified object at the end of this {@code ArrayList}. * * @param object * the object to add. * @return always true */ @Override public boolean add(E object) { Object[] a = arr原创 2021-03-30 07:49:14 · 191 阅读 · 1 评论 -
每天一道面试题(13)----ArrayList内部用什么实现的?
ArrayList内部用什么实现的?回答这样的问题,不要只回答皮毛,可以再介绍一下ArrayList内部是如何实现数组的增删的,因为数组在创建的时候长度是固定的,那么就有个问题我们往ArrayList中不断地添加对象,它是如何管理这些数组呢?ArrayList内部是用Object[]实现的。一、构造函数空参构造 public ArrayList(){ array = EmptyArray.OBJECT;} array是一个Object[]类型。当我们new一个空参构造时系原创 2021-03-29 20:38:40 · 233 阅读 · 0 评论 -
每天一道面试题(12)----集合的安全性问题
请问ArrayList、HashSet、HashMap是线程安全的吗?如果不是,那么想要线程安全的集合该怎么做?上面集合的源码,每个方法都没有加锁,显然都是线程不安全的。在集合中 Vector 和 HashTable 倒是线程安全的。你打开源码会发现其实就是把各自核心方法添加上了synchronized关键字。Collections工具类提供了相关的API,可以让上面那3个不安全的集合变为安全的。Collections.synchronizedCollection(c)Collectio原创 2021-03-29 19:40:49 · 143 阅读 · 0 评论 -
每天一道面试题(11)----HashMap排序题
已知一个HashMap<Integer,User>集合,User有name(String)和age(int)属性,请写一个方法实现对HashMap的排序功能,该方法接收HashMap<Integer,User>public class User { String name; int age; public User() { } public User(String name, int age) { this.name.原创 2021-03-29 17:38:11 · 155 阅读 · 0 评论 -
每天一道面试题(10)--String练习题
请说出下面程序的输出public class String_Test { public static void main(String[] args) { String s1 = "Programming"; String s2 = new String("Programming"); String s3 = "Program"; String s4 = "ming"; String s5 = "Program"原创 2021-03-29 08:16:20 · 539 阅读 · 3 评论 -
每天一道面试题(9)--Java中的方法只支持参数的值传递
按值传递是指在方法调用时,传递的参数是按值的拷贝传递. 按值传递重要特点:传递的是值的拷贝,也就是说传递后值就互不相关了.示例如下:public class TempTest { private void test1(int a) { a = 5; System.out.println("test1方法中的a = " + a); } public static void main(String[] args) { Temp.原创 2021-03-29 07:53:37 · 178 阅读 · 0 评论 -
每天一道面试题(7)--String类常量池、“==”比较
String类概述java.lang.String类代表字符串。Java程序中所有的字符串文字(例如“abc”)都可以被看作是实现此类的实力。类String中包括用于检查各个字符串的方法,比如用于比较字符串、搜索字符串、提取子字符串以及创建具有翻译为大写/小写的所有字符的字符串的副本。特点字符串不变:字符串的值在创建后不能被更改 String s1 = "abc";s1 += "d";System.out.println(s1);//内存中有“abc”,“abcd”两原创 2021-03-28 13:57:02 · 251 阅读 · 3 评论 -
每天一道面试题(6)--栈(stack)堆(heap)方法区(method area)
解释内存中的栈(stack)、堆(heap)、方法区(method area)的用法通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间;而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾回收器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为Eden、Survivor(又可分为From Survivor和To Survivor)、Tenured;方法区和堆都是各个线程共享的内存区域,用原创 2021-03-28 00:06:55 · 172 阅读 · 0 评论 -
每天一道面试题(5)----快问快答(3)
1.抽象的(abstract)方法是否可以同时是静态的(static),是否可以同时是本地方法(native),是否可以同时被synchronized?都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。2.阐述静态变量和实例变量的区别静态变量:是被static修饰符修饰的变量,也称为类变量,它属于类,不原创 2021-03-27 23:25:00 · 98 阅读 · 0 评论 -
每天一道面试题(3)----快问快答(2)
1.当一个对象被当作参数传递到另一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。在Java中没有传引用实在是非常的不方便,这一点在Java8中仍然没有得到改进,正是因为如此,在Java编写的代码才会出现大量的Wrapper类(将需要通过方法调用修改的引用置于一原创 2021-03-25 14:05:08 · 136 阅读 · 0 评论 -
每天一道面试题(4)--for循环
public class Test { public static void main(String[] args) { int x = 1; for (show('a');show('b') && x<3;show('c')){ show('d'); x++; } } public static boolean show(char ch){ S.原创 2021-03-25 14:02:44 · 89 阅读 · 0 评论 -
每天一道面试题(2)----快问快答(1)
1.Java有没有goto语句?goto是Java中的保留字,在目前版本的Java中没有使用。根据James Gosling(Java之父)编写的《The Java Programming Language》一书中的附录给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字。2. & 和 &&原创 2021-03-25 13:36:24 · 98 阅读 · 0 评论 -
每天一道面试题(1)----clone()方法、深拷贝、浅拷贝
为什么要用clone?在实际编程过程中new一个对象的过程和clone一个对象的过程区别原创 2021-03-24 21:58:09 · 221 阅读 · 0 评论