最新Java面试题 每一题都是经典

简介: 最新Java面试题 每一题都是经典

Java语言有哪些特点?


1,简单易学;  


2,面向对象(封装,继承,多态);  


平台无关性(Java虚拟机实现平台无关性);  

  一次编译,处处运行    


4,可靠性;


5,安全性;


6,支持多线程


7,支持网络编程并且很方便


jvm jre jdk    分别是什么  


jvm是java虚拟机,所有的java程序必须运行在java虚拟机上


jre是java运行环境,包含jvm和java常用类库


jdk是java开发工具,包含jre和java开发工具,


如:java.exe 运行工具;javac.exe编译工具


写出所有的基本数据类型和对应的字节数


1.整型:byte(1个字节)、short(2个字节)、int(4个字节) 、long(8个字节)


2.浮点型:float(4个字节)、double(8个字节)


3.字符型:char(2个字节)


4.布尔型:boolean(1个字节)


写出所有的基本数据类型和对应的包装类型

                                       


   1.整型:byte(Byte)、short(Short)、int(Integer) 、long(Long)


2.浮点型:float(Float)、double(Double)


3.字符型:char(Character)          


4.布尔型:boolean(Boolean)


说出 i++和++i的区别  


"++i":先自增,后赋值


"i++":先赋值,后自增


& 和 &&的区别


& 位运算符,也可以进行逻辑运算,表达式左边为false,表达式右边继续执行。


&& 逻辑运算符,短路与,表达式左边为false,整个表达式结果为false,因此表达式右边不执行。


Java中 下面运算符的运算规则  &&  ||  !  ^

 &&  同真则真,有假则假


 ||   有真则真,同假则假


!    取相反


^   不同为真,相同则假


 


写出三种程序运行的结构


1、顺序结构


顺序结构表示程序中的操作是按照代码先后顺序执行的。


2、选择结构


选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。


3、循环结构


循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。


列举5种常见的运行时异常(写全英文单词)


(1)java.lang.NullPointerException 【空指针异常】


(2)java.lang.ClassNotFoundException 【类找不到异常】


(3)java.lang.NumberFormatException 【数字格式化异常】


(4)java.lang.IndexOutOfBoundsException  【数组索引越界异常】


(6)java.lang.ClassCastException 【类型转换异常】


break和continue的区别


(1)break:


     常用于循环中,含义:结束循环,跳出循环体


     其他应用场景:switch语句中,结束语句。


(2)continue:


      跳出本次循环,进行下一次循环;(注意:如果,循环进行到最后一次,continue执行,结束本次循环, 继续进行循环逻辑判断结束循环。循环结束与continue无关)


while循环和do while循环有什么不同?


while结构在循环的开始判断下一次循环是否应该继续。


do/while结构在循环的结尾来判断是否将继续下一次循环。do结构至少会执行一次循环体。


Integer与int的区别  


1.int是Java的基本数据类型之一,Integer是Java为int提供的包装类;


2.int的初始化值为0,而Integer的初始化值为null。


JAVA的自动拆箱装箱


自动装箱就是将基本数据类型自动的转换为对应的对象包装类型;


拆箱就是将对象包装类型转换为基本数据类型。


什么是自动类型强转,什么是强制类型转换


自动类型强转  范围小的数据类型自动转为为范围大的数据类型


强制类型转换,范围大的数据类型需要强制转换为范围小的数据类型


一维数组的三种创建方式


数据类型[] 数组名=new数据类型[长度];

数据类型[] 数组名={元素1,元素2,…,元素N};  

数据类型[] 数组名=new数据类型[]{元素1,元素2,…,元素N};


二维数组的两种创建方式


数据类型[][] 数组名= new 数据类型[长度][长度];


数据类型[][] 数组名= {


{元素1,元素2,…,元素N },


{元素1,元素2,…,元素N }


};


什么是方法重载


方法重载: 发生在同一个类中,方法名必须相同,参数列表不同(参数类型不同、个数不同、顺序不同),方法返回值和访问修饰符可以不同,发生在编译时。


数组和ArrayList的区别


1. 数组的长度是固定的,ArrayList的长度可以变化


2. 数组初始化必须指定长度,ArrayList初始化不需要指定长度。


3. 数组的元素可以是基本类型和引用数据类型,ArrayList的元素只能是引用数据类型。


List、 Set和Map的区别


1、List中的元素,有序、可重复、可为空;


2、Set中的元素,无序、不重复、只有一个空元素;


3、Map中的元素,无序、键不重,值可重、可一个空键、多个空值;


break和continue


break和continue都是用来控制循环的语句、


break:1.用于switch语句中,从中途退出switch语句。 2.用于循环语句中,从循环体内直接退出当前循环


continue用户跳过本次循环,执行下次循环


什么是面向对象


面向对象是一种编程思想。面向对象把现实生活中的事物抽象成类,事物的行为抽象成方法,事物的信息封装成属性。对象是指具体的某个事物,对象通过类创建出来的,完成某项功能则通过调用对象的方法。


什么是多态


多态是父类或接口定义的引用变量指向子类或具体实现类的实例对象。


前提:实现或继承关系;覆写父类方法。


好处:提高了程序的扩展性。


final关键字可以修饰什么,被修饰后的特点

final关键字可以修饰 类,成员方法,成员变量


final修饰的类 无法被继承。


final修饰的方法 无法被重写。


final修饰的变量 无法被二次赋值。


面向对象的三大特性


面向对象具有三大特性,分别是:封装、继承、多态


封装:是指隐藏内部实现的细节,仅对外提供公共访问方式。  


继承:子类继承父类就拥有了父类所有的成员变量和成员方法。


多态:父类引用,指向子类对象。


接口和抽象类的区别


抽象类:


抽象类可以定义构造方法

可以有抽象方法和具体方法

抽象类的中的成员可以用public private 缺省和protected修饰

抽象类中可以定义普通成员变量

一个类只能继承一个抽象类

接口:


接口不能定义构造方法

方法全部是抽象方法

接口中的成员都是public修饰的

接口中定义的变量都是常量

一个类可以实现多个接口


什么是方法重写


子类根据自己的需求重新定义父类继承过来的方法叫做方法重写。


方法重写有以下几个注意实现:


  1. 方法名相同
  2. 方法参数列表相同
  3. 方法返回值相同或者是比父类小
  4. 子类方法访问权限>=父类方法的访问权限
  5. 子类重写方法异常范围要小于父类方法异常或没有异常


方法重载和方法重写的区别


  1. 重载是在同一个类,重写是在父子类中
  2. 重载的参数列表不同,重写参数列表相同
  3. 重载和返回值无关, 重写的返回值相同或者是父类方法返回值的子类
  4. 重载可以使用任意访问修饰符,重写访问修饰符大于等于父类方法修饰符
  5. 重载可以抛出不同异常,重写异常小于等于父类方法异常


四种修饰符的访问范围


public 公共的 任意位置都可以访问


protected 受保护的,本类、子类和同一个包 可以访问


缺省 ,本类和同一个包 可以访问


private  私有的,本类中可以访问


静态变量和普通成员变量的区别


静态变量是被static修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝。静态变量可以实现让多个对象共享内存。


普通成员变量必须依存于某一个对象,需要先创建对象然后通过对象才能访问到它


HashMap和HashTable的区别

1、HashMap是非线程安全的,HashTable是线程安全的。


2、HashMap的键和值都允许有null值存在,而HashTable则不行。


3、HashMap效率比HashTable的要高。


相关文章
|
11天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
39 2
|
16天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
21天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
17天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
41 4
|
18天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
67 4
|
1月前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
96 1
Java面试题之Java集合面试题 50道(带答案)
|
30天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
55 5
|
29天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
21 1
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
30 3
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
432 37
下一篇
无影云桌面