最新Java基础面试题

时间:2022-07-02 11:39:46 面试 我要投稿
  • 相关推荐

最新Java基础面试题

Java基础面试题(一)

最新Java基础面试题

1.面向对象的特征

1)抽象

抽象就是忽略一个主题中与当前目标无关的那些方面,一边更充分地注意与目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2)继承

在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这个就是继承。继承是子类自动贡献父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。

3)封装

封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。

4)多态

多态是指程序中所定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在程序运行期间才能决定。

2.Java的基本数据类型

byte, short, int, long, float, double, char, boolean

3.int和Integer有什么区别

Java提供两种不同类型:引用类型和原始类型。int是Java的原始数据类型,Integer是Java为int提供的封装类型。

原始类型 封装类

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

封装类型的实例变量的缺省值为null,而原始类型实例变量的缺省值跟他们的类型有关。

4.String和StringBuffer的区别

String类用来表示那些创建后就不会再改变的字符串。

StringBuffer类用来表示内容可变的字符串,并鼻孔了修改底层字符串的方法,当我们进行字符串拼接时使用。

5.StringBuffer和StringBuilder的区别

它们都是表示可变的字符串。StringBuffer是线程安全的,StringBulider是非线程安全的。两者方法基本相同,优先采用StringBuilder,在大多数的时候比StringBuffer快。StringBuilder一般使用在方法内部来完成字符串拼接功能,StringBuffer要用来全部变量中。

6.运行时异常与一般异常有何异同

Java一共了两类主要的异常:runtime exception和checked exception。我们经常遇到的IO异常以及SQL异常是checked exception,对于这些非运行时异常必须进行捕获或抛出。但并不要求对运行时异常进行处理,如NullPointerException,出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码块或Java虚拟机处理。运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。

7.ArrayList,Vector,LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。

LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需记录本项的前后项即可,所以插入速度较快。

8.Collection和Collections的区别

Collection是集合类的上级接口,继承于他的接口主要有Set和List。

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

9.&和&&的区别

&和&&都有逻辑运算符and的功能,&还可以用作位运算符,&&具有短路功能,即如果第一个表达式为false,则不再计算第二个表达式的值。

10.HashMap和Hashtable的区别

HashMap是非线程安全的,Hashtable是线程安全的。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

11.final,finally,finalize的区别

final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是会执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。

12.sleep()和wait()有什么区别

sleep()是Thread类的方法,在指定的毫秒数内让正在执行的线程暂停执行,把执行机会让给其他线程,到指定时间会自动恢复。调用sleep不会释放对象锁。

wait()是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify/notifyAll方法后,本线程才进入对象锁定池准备获得对象锁进入运行状态。

13.Overload和Override的区别。Overload的方法可以改变返回值的类型吗?

方法的重写Override和重载Overload是Java多态性的不同表现。重写Override是父类与子类之间多态性的一种表现,重载Overload是一个类中多态性的一种表现。

方法覆盖要求参数签名必须一致,而办法重载要求参数签名必须不一致。

方法覆盖要求返回类型必须一致,而方法重载不做限制。

方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法。

方法覆盖对方法的访问权限和抛出的异常有特殊要求,而方法重载没有限制。

父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次。

方法重载可以改变返回值的类型。

14.error和exception有什么区别?

error表示恢复不是不可能但很困难的情况下的一种严重问题。比如内存溢出,不可能指望程序能处理这样的情况。

exception表示一种设计或实现问题。如果程序运行正常,从不会发生的情况。

15.同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享,例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

16.abstract class和interface有什么区别?

声明方法的存在而不去实现他的类叫做抽象类。接口是抽象类的特例。接口中的所有方法都必须是抽象的,接口中的方法定义默认为public abstract。接口中的变量是全局常量,即public static修饰的。一个类可以实现多个接口,但只能继承一个抽象类。

17.heap和stack有什么区别

栈是一种线型集合,添加和删除的操作在同一端完成,按照后进先出的方式进行处理。堆是栈的一个组成元素。

18. Static Nested Class和Inner Class的不同。

Static Nestec Class是被声明为静态static的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

19.JSP中动态include与静态include的区别

动态include用jsp:include动作实现 它总是检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态include用include伪码实现,不会检查所含文件的变化,适合包含静态页面<%@ include file="include.html" %>

20.GC是什么?为什么要有GC?

GC是垃圾回收的意思(Garbage Collection),内存处理是编程人员出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供自动垃圾回收机制,自动检测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显式操作方法。

21. 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; // 可以正确编译

22.Math.round(11.5)等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)==12;Math.round(-11.5)==-11;

round方法返回与参数最接近的长整数,参数加1/2后求其floor。

23.Java中有没有goto?

goto在Java中作为保留字,但没有被使用。

24.String s = new String("xyz");创建了几个对象?

两个

25.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?

接口可以继承接口。

抽象类可以实现接口。

抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。

26.List,Set,Map是否继承自Collection接口?

List,Set是,Map不是。

<p< p="">


【最新Java基础面试题】相关文章:

java基础面试题07-13

java 基础面试题07-11

java基础面试题(2012完整版)07-13

Java面试题07-12

JAVA题库:JAVA面试题目整理07-11

求java面试题07-11

java面试题307-13

JAVA面试题(问题)07-13

java面试题分析07-13

JAVA面试题求解?07-13