Java基础精选50道面试题

这篇博客汇总了50道关于Java基础的面试题目,涵盖JVM、集合、异常处理、多态、线程、I/O流、设计模式等多个核心知识点,帮助读者深入理解Java语言并为面试做好准备。
摘要由CSDN通过智能技术生成
1.方法重载和方法重写的区别?
英文 位置不同 作用不同
重载 overload 同一个类中 在一个类里面为一种行为提供多种实现方式并提高可读性
重写 override 子类和父类间 父类方法无法满足子类的要求,子类通过方法重写满足要求
修饰符 返回值 方法名 参数 抛出异常
重载 无关 无关 相同 不同 无关
重写 大于等于 小于等于 相同 相同 小于等于
2. 什么是JVM?什么是JDK?什么是JRE?
1).JVM是java虚拟机,所有的java程序都在java虚拟机中运行
2).JRE是java运行时环境,包含了java虚拟机,java核心类库,是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
3).JDK是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的.

JDK包含了JRE
JDK基本组件,bin目录下:
     1.编译java源码的编译器javac
     2.jar包,打包工具,将相关类似的文件打包成一个文件
     3.文档生成器,javadoc。提取文档
     4.jdb  java调试器 查错工具
3.说说Collection集合的继承结构及其子类的特点
Collection
	|--List	有序,可重复
		|--ArrayList
			底层数据结构是数组,查询快,增删慢。
			线程不安全,效率高
		|--Vector
			底层数据结构是数组,查询快,增删慢。
			线程安全,效率低
		|--LinkedList
			底层数据结构是链表,查询慢,增删快。
			线程不安全,效率高
	|--Set	无序,唯一
		|--HashSet
			底层数据结构是哈希表。
			如何保证元素唯一性的呢?
				依赖两个方法:hashCode()和equals()
				开发中自动生成这两个方法即可
			|--LinkedHashSet
				底层数据结构是链表和哈希表
				由链表保证元素有序
				由哈希表保证元素唯一
		|--TreeSet
			底层数据结构是红黑树。
			如何保证元素排序的呢?
				自然排序
				比较器排序
			如何保证元素唯一性的呢?
				根据比较的返回值是否是0来决定
4. 什么是注释?注释分为几种?注释有什么作用?
注释是一种对代码的说明   分为 单行注释 //  多行注释 /* */ 和文档注释  /** */
作用:能够方便更好的阅读
5.Java语言的执行过程。(*****)
Java编译生成字节码文件,生成的字节码在所有操作系统都是一样的
不同的操作系统,其java虚拟机不一样。虚拟机将java字节码转换为对应系统的相关
指令,保证其正常运行解释器在java虚拟机中,编译器在jdk或jre中
6.Final,finally,finalize的区别?
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方
法,可以覆盖此方法提高垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证
此方法总被调用.
7. Java是一种强类型语言,说明Java的数据类型分类。
Java分为基本数据类型和引用数据类型;
基本数据类型分为整数型:byte  short  Int  long  ;
浮点型: float  double ;
布尔型boolean :true  false ;
字符型:char (character);
引用类型举例:比如String 数组  集合 自定义对象
8. i++和++i的异同之处?运算符||和|的异同之处?
1).i++和++i如果单独在语句中使用没有什么区别;不是单独的语句,i++先使用iba的
值再加1;++i是先加1再使用i的值!
2).||的是逻辑运算符,|是位运算符!
条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,但仅在必要时才计算第二个操
作数。如表达式X||Y和X|Y,如果X为true,Y为false。则第一个表达式只计算X,不计
算Y,因为不论Y为何值,“或”操作的结果都是true。这种情况被称作“短路”计算。
| 运算符是为整型和 bool 预定义的。 对于整型, |计算操作数的按位“或”,就是对
0/1,当且仅当两个操作数中的一个为1,结果就是1。
9 接口和抽象类的区别是什么?
1. 抽象类可以有构造方法,接口中不能有构造方法。
2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
3. 抽象类中可以包含非抽象的普通方法。JDK1.8以前,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法;JDK1.8以后,接口可以定义普通方法,需要加关键字default。
4. 抽象类中的抽象方法的访问类型可以使public、protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认修饰即为public abstract类型。
5. 抽象类中可以包含静态方法,JDK1.8以前接口中不能包含静态方法,JDk1.8以后可以包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
10. Java中基本数据类型转换的规则是什么?
布尔型和其它基本数据类型之间不能相互转换; 
byte型可以转换为short、int、、long、float和double; 
short可转换为int、long、float和double; 
char可转换为int、long、float和double; 
int可转换为long、float和double; 
long可转换为float和double; 
float可转换为double
11. if多分支语句和switch语句的异同之处?while和do-while语句的异同之处?
switch只能用在比较特殊的情况下,就是表达式能得到一个整数值;而if语句比较自
由,可以写各种条件。
都是进行循环语句;do-while是先执行后判断,至少要循环一次;而
while是先判断再执行,如果条件不满足,则一次循环体也不执行
12 Collection 和 Collections 的区别?
Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List。 
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜
索、排序、线程安全化等操作
13. break和continue语句的作用
答:使流程跳出switch结构可以用来从循环体内跳出循环体,即提前结束循环,接着
执行循环下面的语句;结束本次循环,即忽略循环体中continue语句下面尚未执行的
语句,接着进行下一次是否执行循环的判定。
14. 方法重载的定义、作用和判断依据是啥?
方法重载是指在一个类中定义多个同名的方法,但要求们每个方法具有
不同的参数类型或参数的个数
作用:方法的重载是让类以统一的方式处理不同类型数据的一中手段
判断依据:方法名一定要相同
方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法
体。
15.递归的定义和优缺点
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值