JAVA基础面试题

集合    :JAVA集合面试题
JVM      :JVM面试题
多线程     :Thread面试题
SPRING  :SPRING面试题

 

1.作用域public,private,protected,以及不写时的区别

 2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)

匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现

3.&和&&的区别

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)

4.Collection 和 Collections的区别

Collection是集合类的上级接口,继承于它的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

5.String s = new String("xyz");创建了几个String Object

两个,一个字符对象,一个字符对象引用对象

6.Math.round(11.5)等於多少? Math.round(-11.5)等於多少

Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor

7.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错

short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)   short s1 = 1; s1 += 1;(可以正确编译)

8.数组有没有length()这个方法? String有没有length()这个方法

数组没有length()这个方法,有length的属性。String有有length()这个方法

9.构造器Constructor是否可被override

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading

10.是否可以继承String类

String类是final类故不可以继承

11.用最有效率的方法算出2乘以8等於几

2 << 3

12.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

13.swtich参数范围

switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

14.什么是java序列化,如何实现java序列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

15.java基本数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:8位、有符号的,以二进制补码表示的整数。最小值是 -128(-2^7);最大值是 127(2^7-1);默认值是 0;
short:16 位、有符号的,以二进制补码表示的整数。最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);默认值是 0;
int:32位、有符号的以二进制补码表示的整数。最小值是 -2,147,483,648(-2^31);最大值是 2,147,483,647(2^31 - 1);默认值是 0 ;
long: 64 位、有符号的以二进制补码表示的整数。最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);默认值是 0L;
float:单精度、32位、符合IEEE 754标准的浮点数。默认值是 0.0f;
double:双精度、64 位、符合IEEE 754标准的浮点数。默认值是 0.0d;
boolean:表示一位的信息。只有两个取值:true 和 false;默认值是 false;
char:单一的 16 位 Unicode 字符。最小值是 \u0000(即为 0);
最大值是 \uffff(即为65、535);char 数据类型可以储存任何字符;

16.自动装箱与拆箱

装箱:将基本类型用它们对应的引用类型包装起来;
拆箱:将包装类型转换为基本数据类型;   
Java使用自动装箱和拆箱机制,节省了常用数值的内存开销和创建对象的开销,提高了效率,由编译器来完成,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。

17.静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?

当类加载器将类加载到JVM中的时候就会创建静态变量,这跟对象是否创建无关。静态变量加载的时候就会分配内存空间。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。
静态代码块不能包含this或者super,它们通常被用初始化静态变量。

18.什么是反射API?它是如何实现的?

反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能。这些功能是通过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以获取到类名。

19.JVM自身会维护缓存吗,是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理的堆?为什么?

JVM自身会管理缓存,它在堆中创建对象,然后在栈中引用这些对象。

20.final 在 Java 中有什么作用

final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。特征:凡是引用final关键字的地方皆不可修改!
(1)修饰类:表示该类不能被继承;
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

21.普通类和抽象类有哪些区别

普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能直接实例化,普通类可以直接实例化。

22.BIO、NIO、AIO 有什么区别

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

23.java支持多继承吗?

不支持。只能支持单继承,即一个类只有一个父类。可以用implements实现多个接口扩展

24.值传递和引用传递

值传递是对基本类型变量而言,传递是该变量的一个副本,改变副本不会影响原变量
引用传递一般是对于对象型变量而言,传递的是该对象地址的一个副本,改变副本,会影响原变量

25.什么是JDK?什么是JRE?

JDK: 顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的。它除了包括完整的JRE(Java Runtime Environment),Java运行环境,还包含了其他供开发者使用的工具包。
JRE:普通用户而只需要安装JRE(Java Runtime Environment)来运行Java程序。而程序开发者必须安装JDK来编译、调试程序。

26.java如何对大数据进行查重

参考 Java进阶(七)布隆过滤器

posted @ 2021-02-20 17:30  鄙人取个名字好难  阅读(83)  评论(0编辑  收藏  举报