![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 86
整理面试资料的集合
binggoling
在大学就是学习软件工程专业,在学期间就已经和老师一起开发软件,到现在已经有五年的java开发经验,自己还在不停学习中,一起加油
展开
-
1000道 互联网 Java 工程师面试题2021
目录1000道 互联网 Java 工程师面试题2021MyBatis 面试题ZooKeeper 面试题Dubbo 面试题Elasticsearch 面试题Memcached 面试题Redis 面试题MySQL 面试题Java 并发编程(一)Java 并发编程(二)Java 面试题(一)Java 面试题(二)1)多线程、并发及线程的基础问题2)有经验程序员的 Java 面试题3)数据类型和 Java 基础面试问题4)JVM 底层 与 GC(Garbage Collection) 的面试问题5)3 年工作经验的原创 2021-02-22 09:45:02 · 397 阅读 · 0 评论 -
(2002)interface可以有方法的实现吗【中等】
java1.8新特性之一——在interface中写实现方法这个新特性的用途:java类只支持单继承,但可实现多个接口,在此新特性出来之前,所有的子类共用的方法都只能写在extends的抽象类中,有点不符合面向对象的封装,现在可以写在实现的接口中,感觉更加符合面向对象的特性。JDK1.8中为了加强接口的能力,使得接口可以存在具体的方法。前提是方法需要被default或static关键字所修饰。简单的代码demo:interface:package interfaceDemo;public i原创 2020-09-01 10:39:31 · 1596 阅读 · 0 评论 -
(2001)Java 中如何实现序列化,有什么意义【中等】
Java 中如何实现序列化,有什么意义?【中等】1.实现序列化:1)让类实现Serializable接口,该接口是一个标志性接口,标注该类对象是可被序列2)然后使用一个输出流来构造一个对象输出流并通过writeObect(Obejct)方法就可以将实现对象写出3)如果需要反序列化,则可以用一个输入流建立对象输入流,然后通过readObeject方法从流中读取对象2.作用:1)序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可以将流化后的原创 2020-09-01 10:38:39 · 226 阅读 · 0 评论 -
(1034)重写和重载的区别【基础】
重写和重载的区别一、基本定义构造函数: 是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。重写: 当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。重载: 一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。二、实现方法重写:原创 2020-09-01 10:37:23 · 104 阅读 · 0 评论 -
(1033)new string(”abc“)创建了几个对象【基础】
new string(“abc”)创建了几个对象我们再来通过两种写法分析:String a = "123";String b = new String("123");如上第1行,定义了一个常量 a ,第2行,通过关键字 new 的形式,创建了一个变量 b 。我们结合之前学过的 JVm 再深入一些,第1行在常量池开辟了一块空间,存放字符串 123,通过 a 对象指向这个常量对象。第2行由于使用了 new 关键字,所以会在堆空间中开辟一块内存区域,在其中存放字符串 123,并把内存的地址赋予 b 变原创 2020-09-01 10:36:31 · 203 阅读 · 0 评论 -
(1032)Java创建对象的四种方法【基础】
Java创建对象的四种方法Java创建有四种方式:(1)用new 语句创建对象,这是最常用的创建对象方法。(2)运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。(3)调用对象的clone()方法(4)运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。1.用new语句创建对象User user = new User();2.运用反射机原创 2020-09-01 10:35:38 · 113 阅读 · 0 评论 -
(1030)get 和 post 请求的区别【基础】
get 和 post 请求的区别?【基础】GET和POST是HTTP请求的两种基本方法。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留原创 2020-09-01 10:34:26 · 186 阅读 · 0 评论 -
(1029)获得一个类的类对象有哪些方式【基础】
获得一个类的类对象有哪些方式?【基础】方法1:类型.class,例如:String.class方法2:对象.getClass(),例如:”hello”.getClass()方法3:Class.forName(),例如:Class.forName(“java.lang.String”)第一种方式:通过类本身来获得对象Class classname = this .getClass();第二种方式:通过子类的实例获取父类对象ClassName cn = new ClassName();原创 2020-08-29 13:23:18 · 1121 阅读 · 0 评论 -
(1027)Integer.parseInt()和这个Integer.valueOf()的详解【基础】
Integer.parseInt()和这个Integer.valueOf()的详解【基础】new Integer.valueof()返回的是Integer的对象。Integer.parseInt() 返回的是一个int的值。new Integer.valueof().intValue();返回的也是一个int的值。parseInt public static int parseInt(String s, int radix) throws NumberFormatException原创 2020-08-29 13:22:30 · 130 阅读 · 0 评论 -
(1025)Java抽象类abstract【基础】
Java抽象类abstract一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明原创 2020-08-29 13:18:27 · 207 阅读 · 0 评论 -
(1024)当一个线程进入一个对象的一个synchronized 方法后,其它线程是否可进入此对象的其它方法 【基础】
当一个线程进入一个对象的一个synchronized 方法后,其它线程是否可进入此对象的其它方法? 【基础】分两种情况1):进入此对象的非同步方法答案:可以2):进入此对象的同步方法答案:不可以Java:同步方法接着上篇博客多线程,继续分析解决 线程同步 的两个方法:同步块 和 同步方法 中的 同步方法。用 synchronized 关键字给针对共享资源进行操作的方法加锁。一个方法使用 synchronized 关键字修饰后,当一个线程A使用这个方法时,其他线程想使用这个方法时就必须等待,直到原创 2020-08-29 13:16:41 · 579 阅读 · 0 评论 -
(1023)sleep() 和wait() 有什么区别【基础】
sleep() 和wait() 有什么区别? 【基础】第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.第二种解释:sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时原创 2020-08-24 07:59:37 · 101 阅读 · 0 评论 -
(1022)List、Map、Set 三个接口,存取元素时,各有什么特点【基础】
List、Map、Set 三个接口,存取元素时,各有什么特点?【基础】1.存放(1)List存放元素是有序,可重复(2)Set存放元素无序,不可重复(3)Map元素键值对形式存放,键无序不可重复,值可重复2.取出(1)List取出元素for循环,for-each循环,Iterator迭代器迭代(2)Set取出元素for-each循环,Iterator迭代器迭代(3)Map取出元素需转换为Set,然后进行Iterator迭代器迭代,或转换为Entry对象进行Iterator迭代器迭代List原创 2020-08-22 14:35:03 · 552 阅读 · 0 评论 -
(1020)HashMap 和Hashtable 的区别 【基础】
HashMap 和Hashtable 的区别? 【基础】HashMap和Hashtable区别hash数组初始化时机不同,Hashtable是在构造函数初始化,而HashMap是在第一次put()初始化hash数组。在HashTable中,hash数组默认大小是11,增加的方式是old*2+1。在HashMap中,hash数组默认大小是16,增加的方式是2 *old而且一定是2的整数.HashMap允许空(null)键值(key),而HashTable不允许。HashMap把Hashtable的原创 2020-08-22 14:33:53 · 112 阅读 · 0 评论 -
(1019)说出ArrayList,Vector, LinkedList 的存储性能和特性【基础】
说出ArrayList,Vector, LinkedList 的存储性能和特性?【基础】ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。LinkedList使用原创 2020-08-22 14:32:08 · 122 阅读 · 0 评论 -
(1018)List,Set,Map 是否继承自Collection 接口【基础】
List,Set,Map 是否继承自Collection 接口?【基础】Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。 Set 和List 都继承了Conllection;Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)Map没有继承于C原创 2020-08-22 14:31:31 · 753 阅读 · 0 评论 -
(1017)try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后【基础】
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?【基础】try 中的 return 语句调用的函数先于 finally 中调用的函数执行,也就是说 return 语句先执行,finally 语句后执行,但 return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回!但此时会出现两种情况:①、如果finall原创 2020-08-22 14:30:55 · 145 阅读 · 0 评论 -
(1016)error 和exception 有什么区别【基础】
error 和exception 有什么区别? 【基础】典型的回答是这样的:Exception 和 Error都继承了Throwable类,在java中只有Throwable类型的实例才可以被抛出(Throw)或者捕捉(catch),它是异常处理机制的基本组成类型。Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应的处理。Error指在正常情况下,不大可能出现的情况,绝大部门的Error都会导致程序处于非正常的,不可恢复状态。既然是非正常情况,所以不便于也不需要捕获原创 2020-08-22 14:29:51 · 210 阅读 · 0 评论 -
(1015)编码转换,怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串【基础】
编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串?【基础】先来一个Java编程答案:import java.io.UnsupportedEncodingException;public class Test { public static void main(String[] args) { String s1 = "你好"; try { String s2 = new String(s1.getBy原创 2020-08-22 14:28:21 · 2089 阅读 · 0 评论 -
(1014)Java 中的 final 关键字有哪些用法【基础】
Java 中的 final 关键字有哪些用法?【基础】首先,我们可以从字面上理解一下final这个英文单词的中文含义:“最后的,最终的; 决定性的; 不可更改的;”。显然,final关键词如果用中文来解释,“不可更改的”更为合适。当你在编写程序,可能会遇到这样的情况:我想定义一个变量,它可以被初始化,但是它不能被更改。例如我现在想要定义一个变量保存圆周率的值,作为一个客观的、正确性有保障的值,如果在后序程序中更改它,可能会造成结果的错误,甚至程序的崩溃。那么这个时候final关键字就可以发挥它的用处了。原创 2020-08-22 14:27:33 · 127 阅读 · 0 评论 -
(1013)一个“.java”源文件中是否可以包含多个类(不是内部类),有什么限制【基础】
一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?【基础】可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。然而知其然,更要知其所以然,这样才能够让我们更加深刻的去理解。问题一:为什么类之中只能有一个public的类?每个编译单元(文件)都只有一个public 类。因为每个编译单元都只能有一个公共接口,用public类来表现。该接口可以按照要求包含众多的支原创 2020-08-22 14:26:22 · 195 阅读 · 0 评论 -
(1012)数据去重【基础】
1.用JDK提供的Set对元素进行去重Set<Integer> set = new HashSet<>(list);此种方式是利用了Set的特性:元素不可重复,其底层原理是通过先计算每个对象的hash值,再比较元素值是否相同,如果相同,则保留最新的.2.用JDK1.8 Stream中对List进行去重list.stream().distinct();首先获得此list的Stream.然后调用distinct()方法,java8中提供流的方式对数据进行处理,非常快,底层用原创 2020-08-22 14:24:45 · 93 阅读 · 0 评论 -
(1011)是否可以从一个static 方法内部发出对非static 方法的调用【基础】
是否可以从一个static 方法内部发出对非static 方法的调用?【基础】不可以静态方法只能访问静态成员,因为非静态方法的调用要先创建对象,在调用静态方法时可能对象并没有被初始化。非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?原创 2020-07-24 21:27:13 · 102 阅读 · 0 评论 -
(1010)重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分【基础】
重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?【基础】重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Excepti原创 2020-07-24 21:25:35 · 215 阅读 · 0 评论 -
(1009)String、StringBuffer与StringBuilder的区别,及实现原理【基础】
String、StringBuffer与StringBuilder的区别,及实现原理【基础】源码分析String使用final关键字修饰可以知道String是不可变的类,String中字符数组的长度你定义多少,就是多少,不存在字符数组扩容一说。内部是final修饰的char[] value,表示String类不可被继承,且value只能被初始化一次。这里的value变量其实就是存储了String字符串中的所有字符。StringBuffer和StringBuilder二者的源码以及append方法,二者原创 2020-07-24 21:21:29 · 104 阅读 · 0 评论 -
(1008)当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 【基础】
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 【基础】是值传递。Java编程语言只有值传递参数。示例代码如下:在函数中传递的是基本数据类型public class Test { public static void main(String[] args) { int a = 3; int b = 4; change(a, b);原创 2020-07-24 21:19:43 · 318 阅读 · 0 评论 -
(1007)是否可以继承String 类【基础】
是否可以继承String 类? 【基础】String类的方法头是:Public final class String extends Object之所以不能被继承就是因为其中的修饰关键字 final附: 什么样的类不能被继承?在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的。final是java中的一个关键字,可以用来修饰变量、方法和类。用关键词final修饰的域成为最终域。用关键词final修饰的变量一旦赋值,就不能改变,也称为修饰的标识为常量。如果原创 2020-07-23 21:10:52 · 91 阅读 · 0 评论 -
(1006)构造器(constructor)是否可被重写(override)【基础】
构造器(constructor)是否可被重写(override)?【基础】构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。一、构造器是干什么用的?(what)构造器是用来生成一个类的实例是用来初始化这个实例用的二、构造器如何工作?(how原创 2020-07-23 21:10:32 · 636 阅读 · 0 评论 -
(1005)数组有没有 length()方法,String 有没有 length()方法【基础】
数组有没有 length()方法?String 有没有 length()方法?【基础】数组没有length()方法数组只有length属性,表示的是数组的长度。而且这个属性可以理解为止一个常量,一旦数组被产生,我们可以得到length的值,但不能改变。String有length()方法返回的是字符串的长度。也不能修改。...原创 2020-07-23 21:10:05 · 345 阅读 · 0 评论 -
(1004)编程题,用最有效率的方法算出2 乘以8 等於几【基础】
编程题: 用最有效率的方法算出2 乘以8 等於几? 【基础】2的二进制表示法左移3位,2的二进制应该是0000 0010,左移3位后0001 0000(可以看成是一个框就能显示8位数据,向左移动后前面的三位不就看不到了嘛,后面的自动补0)2 << 3 = 8...原创 2020-07-23 21:09:40 · 212 阅读 · 0 评论 -
(1003)Math.round(11.5) 等于多少,Math.round(-11.5)等于多少【基础】
Math.round(11.5) 等于多少,Math.round(-11.5)等于多少【基础】ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;floor的英文是地板,该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12;round方法,他表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math原创 2020-07-23 21:04:52 · 236 阅读 · 0 评论 -
(1002)int 和Integer 有什么区别【基础】
Java基础之int和Integer有什么区别1 Java两种数据类型1.1 Java两种数据类型分类(1)基本数据类型,分为boolean、byte、int、char、long、short、double、float;(2)引用数据类型 ,分为数组、类、接口。1.2 Java为每个基本数据类型提供了封装类为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integ原创 2020-07-23 21:03:14 · 122 阅读 · 0 评论 -
(1001)面向对象的特征有哪些方面?【基础】
面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。通常情况下,只要记住让变量和访问这个变量的方法放在一起原创 2020-07-23 21:02:08 · 130 阅读 · 0 评论 -
【面试篇】自己整理的一套2020最新版的java面试题
(1001)面向对象的特征有哪些方面?【基础】(1002)int 和Integer 有什么区别【基础】原创 2020-07-23 21:00:34 · 306 阅读 · 0 评论