JAVA面试经典题(必看32题)易错知识点

合集下载

java经典面试题汇总

java经典面试题汇总

Java基础方面:

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

答:区别如下:

作用域当前类同一package 子孙类其他package

public √√√√

protected √√√ ×

friendly √√ × ×

private √ × × ×

不写时默认为friendly

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

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

3、Static Nested Class 和 Inner Class的不同

答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

4、&和&&的区别

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

5、Collection 和 Collections的区别

答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.

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

100道java中高级面试题汇总+详细拆解

100道java中高级面试题汇总+详细拆解

100道java中高级面试题汇总+详细拆解

Java中高级面试题汇总+详细拆解

Java是一门广泛应用于软件开发领域的高级编程语言,因其跨平台性、安全性和可靠性而深受开发者欢迎。在面试过程中,Java的高级

知识点常常是考察的焦点。本文将为您提供100道Java中高级面试题,并对每道题目进行详细拆解。

1. 什么是Java中的序列化(Serialization)?

Java中的序列化是指将对象转化为字节流的过程,从而可以在网

络上传输或保存至文件中。反序列化则是将字节流转换回对象的过程。

2. 请解释Java中的线程(Thread)和进程(Process)的区别。

线程是程序中的执行单元,每个线程都有独立的执行路径。而进

程是操作系统分配资源的基本单位,每个进程都有独立的内存空间。

3. 请解释Java中的反射(Reflection)机制。

反射是指在运行时,程序可以动态获取并操作类的成员(如方法、

字段、构造器)的能力。通过反射,可以在编译时未知某个类的情况下,动态地创建对象、调用方法等。

4. 解释Java中的JVM(Java Virtual Machine)。

JVM是Java程序的运行环境,它负责将Java字节码翻译为机器码,以便在各种操作系统上执行。JVM还提供了垃圾回收、内存管理

等机制来提高程序的性能和安全性。

5. 请解释Java中的垃圾回收(Garbage Collection)机制。

垃圾回收是指自动释放不再使用的内存空间的过程。Java中的垃圾回收器会自动寻找不再被引用的对象,并进行回收,从而减轻程序员的内存管理负担。

java面试题大全带答案

java面试题大全带答案

java面试题大全带答案

Java开发的同学们在的时候都会遇到一些头疼的面。现在给大家一下。

一、面向对象的特征有哪些方面

1.抽象:

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

2.继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

3.封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个根本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

4.多态性:

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

二、String是最根本的数据类型吗?

根本数据类型包括byte、int、char、long、float、double、boolean和ng.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类。

经典java面试题及答案详解

经典java面试题及答案详解

经典java面试题及答案详解

java面试题1、

说说HashMap和Hashtable的差别

答案分析:

都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或排序。他允许一个null键和多个null 值。

Hashtable类似于HashMap,不过不允许null键和null值。他也比HashMap慢,由于他是同步的。

java面试题2、

Anonymous Inner Class (匿名内部类)是否能e*tends(继承)其他类,是否implements(实现)interface(接口)?

答案分析:

匿名的内部类是没出名字的内部类。不能e*tends(继承)其他类,但一个内部类能作为一个接口,由另一个内部类实现。java面试题3、

STRING与STRINGBUFFER的区分是什么?

答案分析:

STRING的长度是不可变的',STRINGBUFFER的长度是可变的。假如你对字符串中的内容常常进行操作,特别是内容要修改时,那么运用StringBuffer,假如最末需要String,那么运

用StringBuffer的toString()方法。

java面试题4、

什么时候用assert

答案分析:

断言是个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。假如表达式计算为false,那么系统会报告一个AssertionError,他用于调试目的。

java面试题5、

Set里的元素是不能重复的,那么用什么方法来区分重复和否呢?是用==还是equals()?他们有何差别?

答案分析:

(完整版)Java经典面试题大全带答案

(完整版)Java经典面试题大全带答案

Java经典面试题带答案一、单项选择题

1.Java是从()语言改进重新设计。

A.Ada

B.C++

C.Pasacal

D.BASIC

答案:B

2.下列语句哪一个正确()

A. Java程序经编译后会产生machine code

B.Java程序经编译后会产生byte code

C.Java程序经编译后会产生DLL

D.以上都不正确

答案:B

3.下列说法正确的有()

A.class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C.constructor在一个对象被new时执行

D.一个class只能定义一个constructor

答案:C

4.提供Java存取数据库能力的包是()

A.java.sql

B.java.awt

C.java。lang

D.java。swing

答案:A

5.下列运算符合法的是()

A.&&

B.〈>

C.if

D.:=

答案:A

6.执行如下程序代码

a=0;c=0;

do{

-—c;

a=a-1;

}while(a〉0);

后,C的值是()

A.0

B.1

C.—1

D.死循环

答案:C

7.下列哪一种叙述是正确的()

A.abstract修饰符可修饰字段、方法和类

B.抽象方法的body部分必须用一对大括号{}包住

C.声明抽象方法,大括号可有可无

D.声明抽象方法不可写出大括号

答案:D

8.下列语句正确的是()

A.形式参数可被视为localvariable

B.形式参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数

D.形式参数不可以是对象

答案:A

java面试选择题题库及答案

java面试选择题题库及答案

java面试选择题题库及答案

(实用版)

编制人:__________________

审核人:__________________

审批人:__________________

编制单位:__________________

编制时间:____年____月____日

序言

下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!

并且,本店铺为大家提供各种类型的实用范文,如自我介绍、自我总结、自我鉴定、职场资料、工作报告、策划方案、演讲致辞、合同协议、条据文书、其他范文等等,想了解不同范文格式和写法,敬请关注!

Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!

In addition, this shop provides various types of practical sample essays, such as self-introduction, self-summary, self-assessment, workplace information, work report, planning plan, speeches, contracts, agreements, documents, other sample essays, etc. Please pay attention to the different formats and writing methods of the model essay!

java面试选择题题库及答案

java面试选择题题库及答案

java面试选择题题库及答案java面试选择题题库及答案(一)

1.Java是从()语言改进重新设计。

A.Ada

B.C++

C.Pasacal

D.BASIC

答案:B

2.下列语句哪一个正确()

A. Java程序经编译后会产生machine code

B.Java程序经编译后会产生byte code

C.Java程序经编译后会产生DLL

D.以上都不正确

答案:B

3.下列说法正确的有()

A.class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C.constructor在一个对象被new时执行

D.一个class只能定义一个constructor 答案:C

4.提供Java存取数据库能力的包是()

A.java.sql

B.java.awt

ng

D.java.swing

答案:A

5.下列运算符合法的是()

A.

B.

C.if

D.:=

答案:A

6.执行如下程序代码

a=0;c=0;

do{

--c;

a=a-1;

}while(a0);

后,C的值是()

A.0

B.1

C.-1

D.死循环

答案:C

7.下列哪一种叙述是正确的()

A.abstract修饰符可修饰字段、方法和类

B.抽象方法的body部分必须用一对大括号{}包住

C.声明抽象方法,大括号可有可无

D.声明抽象方法不可写出大括号

答案:D

8.下列语句正确的是()

A.形式参数可被视为localvariable

B.形式参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数

D.形式参数不可以是对象

答案:A

9.下列哪种说法是正确的()

常见java面试题

常见java面试题

常见java面试题

Java作为目前最热门的编程语言之一,在面试中也成为了必问的一个议题,以下是常见的Java面试题:

一、Java基础知识

1. Java的特点和优势;

2. JDK和JRE有何区别?

3. Java语言中final、finally、finalize有何不同?

4. 面向对象的三大特性是什么?

5. 什么是多态?如何实现多态?

6. 如何实现Java程序的多线程?

二、Java集合框架

1. Java集合框架是什么?它都包含哪些集合类?

2. ArrayList和LinkedList的区别是什么?

3. HashMap和HashTable有何区别?

4. ConcurrentHashMap的实现原理是什么?

三、Java高级特性

1. 接口和抽象类的区别是什么?

2. 如何理解反射机制?

3. Java中的注解是什么?它有何作用?

4. 如何进行Java的序列化和反序列化?

四、Web开发相关

1. 什么是Servlet?

2. 什么是JSP?它和Servlet的区别是什么?

3. Spring框架的特点有哪些?

4. 如何进行Java Web的部署?

五、数据库相关

1. JDBC是什么?

2. 如何使用Java连接MySQL数据库?

3. 什么是ORM(对象关系映射)?Hibernate是ORM的一个框架,你熟悉它吗?

六、常见问题与优化

1. 何时使用ArrayList和LinkedList?

2. Java中的异常机制是什么?如何处理异常?

3. 如何进行Java程序的优化和调优?

4. 如何进行Java内存泄漏的排查和修复?

java必背面试题

java必背面试题

.011# 面试题1

1.为什么要使用static?

使用方式: 通过类名调用

创建多个对象时,共享一个静态属性和方法,当有一个对象修改了,其他对象使用时,也会改变

一个类只能有一个同名的静态属性和静态方法,这样每个对象创建时,就不会再分配额外空间了,

存储在方法区(静态区)节省空间。

2. jvm 内存模型有哪些,分别介绍一下?

包括: 堆虚拟机栈本地方法栈程序计数器方法区

堆:存储对象数组集合存储new出来的东西

方法区: 存储类的信息常量(常量池中)静态变量编译器编译后的数据

程序计数器: 相当于当前程序制定的字节码行号,指向下一行代码

(因为多线程并发,如何实现轮流切换的,是因为每一个线程都会独立有一个程序计数器,

可以保证每个线程切换之后,可以回到原来的位置)

虚拟机栈: 存放的是每一个栈帧,每一个栈帧对应的一个被调用的方法

栈帧包括: 局部变量表操作数栈常量池引用返回地址 .....

局部变量表 : 存储局部变量

操作数栈 : 程序中所有的计算过程都是它来完成

常量池引用: 在方法运行时,用于引用类中的常量

返回地址: 当方法被调用时,方法执行结束,还要回到调用的位置

所以要保存一个方法返回地址。

本地方法栈:类似于虚拟机栈,只不过虚拟机栈运行是 java 方法,

而它是运行native修饰的方法(本地方法)

本地方法是操作系统帮你实现的,java只负责调用即可。

3.创建对象的方式有哪些?

1.new

2. 克隆

3.反射

4.反序列化

调用构造的: 1. new 2. 反射 newInstance() 调用底层无参构造

不用构造: 1. 克隆 : 在堆内存直接将已经存在的对象拷贝一份。

JAVA经典算法面试40题及答案

JAVA经典算法面试40题及答案

JAVA经典算法⾯试40题及答案

现在是3⽉份,也是每年开年企业公司招聘的⾼峰期,同时有许多的朋友也出来找⼯作。现在的招聘他们有时会给你出⼀套⾯试题或者智⼒测试题,也有的直接让你上机操作,写⼀段程序。算法的计算不乏出现,基于这个原因我⾃⼰搜集了⼀些算法上的题型。希望对于⼤家有所帮助。

【程序1】题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第四个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?

1.程序分析:兔⼦的规律为数列1,1,2,3,5,8,13,21….

public class exp2{

public static void main(String args[]){

int i=0;

for(i=1;i<=20;i++)

System.out.println(f(i));

}

public static int f(int x)

{

if(x==1 || x==2)

return 1;

else

return f(x-1)+f(x-2);

}

}

public class exp2{

public static void main(String args[]){

int i=0;

math mymath = new math();

for(i=1;i<=20;i++)

System.out.println(mymath.f(i));

}

}

class math

{

public int f(int x)

{

if(x==1 || x==2)

return 1;

else

java面试问题及回答

java面试问题及回答

java面试问题及回答

java面试问题及回答一1.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

2.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

3.Java支持多继承么?

不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

4.接口和抽象类的区别是什么?

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类

类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

100道经典的JAVA面试题及答案解析

100道经典的JAVA面试题及答案解析

第1章100多道经典的JAVA面试题及答案解析

面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。

封装

封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。

下面列出了使用封装的一些好处:

•通过隐藏对象的属性来保护对象内部的状态。

•提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。

•禁止对象之间的不良交互提高模块化。

多态

多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。

继承

继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。

抽象

抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。

抽象和封装的不同点

抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。

常见的Java问题

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java 虚拟机执行的字节码文件。

java面试官常问的问题

java面试官常问的问题

java面试官常问的问题

java面试官常问的问题篇一

1、问题:如果main方法被声明为private会怎样?

答案:能正常编译,但运行的时候会提示”main方法不是public的”。

2、问题:Java里的传引用和传值的区别是什么?

答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。

3、问题:如果要重写一个对象的equals方法,还要考虑什么?

答案:hashCode。

4、问题:Java的”一次编写,处处运行”是如何实现的?

答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。

5、问题:说明一下public static void main(String args[])这段声明里每个关键字的作用

答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为pulic.

static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。

void: main方法没有返回值。

String是命令行传进参数的类型,args是指命令行传进的字符串数组。

6、问题:==与equals的区别

答案:==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方 .

==比较的是引用而equals方法比较的是内容。public boolean

equals(Object obj) 这个方法是由Object对象提供的,可以由子类进行重写。默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。String, BitSet, Date, 和File都对equals方法进行了重写,对两个String 对象而言,值相等意味着它们包含同样的字符序列。对于基本类型的包装类来说,值相等意味着对应的基本类型的值一样。 public class EqualsTest { public static void main(String[] args) {

Java面试问题40个「附答案」

Java面试问题40个「附答案」

Java面试问题40个「附答案」

Java集合面试问题40个「附答案」

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面店铺为大家带来Java面试问题40个「附答案」,希望大家喜欢!

1.Java集合框架是什么?说出一些集合框架的优点?

每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。

随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。

集合框架的部分优点如下:

(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。

(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。

(3)通过使用JDK附带的集合类,可以降低代码维护成本。

(4)复用性和可操作性。

2.集合框架中的泛型有什么优点?

Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。

泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。

3.Java集合框架的基础接口有哪些?

Java面试经典100题

Java面试经典100题

Java⾯试经典100题

Java⾯试经典100题

1.Struts1的⼯作原理

1)客户端浏览器向Servlet容器(如Tomcat)提交⼀个请求到ActionServlet

2)ActionServlet对请求进⾏⼀系列处理,然后根据请求的路径和配置信息找到对应的Action和ActionForm并将请求中包含的数据填充到ActionForm中(如果Action没

有绑定Form,那么不进⾏数据填充)

3)Struts将请求分发⾄相应的Action处理,ActionMapping对象、ActionForm对象、request和response都将作为参数传给处理请求的Action的execute⽅法

4)Action调⽤业务逻辑⽅法,得到返回值,并返回ActionForward对象

5)控制权重新回到ActionServlet,ActionServlet根据Action返回的ActionForward对象转发到相应的页⾯

6)处理结果返回到客户端浏览器

2.Struts2的⼯作原理

1)客户端向Servlet容器(如Tomcat)提交⼀个请求

2)请求经过⼀系列过滤器(如ActionContextCleanUp过滤器等)

3)核⼼控制器被调⽤,询问ActionMapper来决定请求是否需要调⽤某个Action

4)如果ActionMapper决定需要调⽤某个Action,核⼼控制器把控制权委派给ActionProxy(备注:JSP请求⽆需调⽤Action)

5)ActionProxy通过Configuration Manager询问框架的配置⽂件(struts.xml),找到需调⽤的Action类

Java面试题大汇总(附答案)

Java面试题大汇总(附答案)

Java⾯试题⼤汇总(附答案)

下列⾯试题都是在⽹上收集的,本⼈抱着学习的态度找了下参考答案,有不⾜的地⽅还请指正,更多精彩内容可以关注我的微信公众号:Java团长

相关概念

⾯向对象的三个特征

封装,继承,多态.这个应该是⼈⼈皆知.有时候也会加上抽象.

多态的好处

允许不同类对象对同⼀消息做出响应,即同⼀消息可以根据发送对象的不同⽽采⽤多种不同的⾏为⽅式(发送消息就是函数调⽤).主要有以下优点:

1. 可替换性:多态对已存在代码具有可替换性.

2. 可扩充性:增加新的⼦类不影响已经存在的类结构.

3. 接⼝性:多态是超类通过⽅法签名,向⼦类提供⼀个公共接⼝,由⼦类来完善或者重写它来实现的.

4. 灵活性.

5. 简化性.

代码中如何实现多态

实现多态主要有以下三种⽅式:

1. 接⼝实现

2. 继承⽗类重写⽅法

3. 同⼀类中进⾏⽅法重载

虚拟机是如何实现多态的

动态绑定技术(dynamic binding),执⾏期间判断所引⽤对象的实际类型,根据实际类型调⽤对应的⽅法.

接⼝的意义

接⼝的意义⽤三个词就可以概括:规范,扩展,回调.

抽象类的意义

抽象类的意义可以⽤三句话来概括:

1. 为其他⼦类提供⼀个公共的类型

2. 封装⼦类中重复定义的内容

3. 定义抽象⽅法,⼦类虽然有不同的实现,但是定义时⼀致的

接⼝和抽象类的区别

⽐较抽象类接⼝

默认⽅法抽象类可以有默认的⽅法实现java 8之前,接⼝中不存在⽅法的实现.

实现⽅式⼦类使⽤extends关键字来继承抽象类.如果⼦类不是抽象类,⼦类需要提供抽

象类中所声明⽅法的实现.

⼦类使⽤implements来实现接⼝,需要提供接⼝中

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一,谈谈final, finally, finalize的区别。

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的类变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。局部变量声明时可以不赋值,生命周期内只能赋值一次。被声明为final的方法也同样只能使用,不能重写(子类覆盖),可以重载。

finally—异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。finally 语句总会被执行,如果遇到return的话,就先跑去执行finally,再return

finalize—方法名。Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

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

匿名类在实现时,必须借助一个类或一个接口,若从这个层次说它是可以继承一个类或一个接口的。但是通过extends implements关键字那是不可能的。一个内部类可以作为一个接口由另一个内部类实现。

在使用匿名内部类时,要记住以下几个原则:

·匿名内部类不能有构造方法。

·匿名内部类不能定义任何静态成员、方法和类。

·匿名内部类不能是public,protected,private,static。

·只能创建匿名内部类的一个实例。

·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

第三,Static Nested Class 和Inner Class的不同,说得越多越好(面试题有的很笼统)。

Nested Class 一般是C++的说法,Inner Class 一般是JAVA的说法。

Nested class分为静态Static nested class 的和非静态的inner class,

静态的Static nested class是不可以直接调用它的外部类enclosing class的,但是可以通过外部类的引用来调用,就像你在一个类中写了main方法一样。

非静态类inner class 可以自由的引用外部类的属性和方法,但是它与一个实例绑定在了一起,不可以定义静态的属性、方法。

Inner Class(内部类)定义在类中的类。

Nested Class(嵌套类)是静态(static)内部类。1. 要创建嵌套类的对象,并不需要其外围类的对象。2. 不能从嵌套类的对象中访问非静态的外围类对象。

Anonymous Inner Class (匿名内部类)匿名的内部类是没有名字的内部类。

第四,&和&&的区别。

“&&”是逻辑运算中的“短路”,若"&&"前的条件为false时判断结果为false,不再执行"&&"后的语句块。"&&"前为true则继续进行进行后半部分的判断

“&”是两边都要经过判断

&&是逻辑运算符,表示逻辑与

&是位运算符,表示位与;位运算针对二进制数0和1;0&0=0,0&1=0,1&0=0,1&1=1

第五,HashMap和Hashtable的区别。

1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。

2.hashTable同步的,而HashMap是非同步的,效率上比hashTable要高。

3.hashMap允许空键值,而hashTable不允许。

第六,Collection 和Collections的区别。

Collection 和Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

排序(Sort) 2) 混排(Shuffling)3) 反转(Reverse) 4) 替换所以的元素(Fill) 5) 拷贝(Copy)

Collection是个java.util下的接口,它是各种集合结构的父接口。

第七,什么时候用assert。

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。如果表达式计算为false,那么系统会报告一个Assertionerror。它用于调试目的

第八,GC是什么? 为什么要有GC?

GC是垃圾收集的意思(Gabage Collection), Java有了GC,就不需要程序员去人工释放内存空间。当Java虚拟机发觉内存资源紧张的时候,就会自动地去清理无用变量所占用的内存空间。

当然,如果需要,程序员可以在Java程序中显式地使用System.gc()来强制进行一次立即的内存清理。

第九,String s = new String("xyz");创建了几个String Object?

一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是"xyz",常量池中只可能只有一个“xyz”,但是堆中可能有多个,因为你这里用了new String 来强制在堆中再创建了一个对象,所以是两个哈;如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

他表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果是12,Math.round(-11.5)的结果为-11.ceil向上取整

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short占2个字节,int占4个字节,short型变量+上int型值计算结果是int型,占4个字节,然后付给一个short型变量s1,就要丢失2个字节的精度,这是不容许的。你非要这么做的话,我给你提供一个办法:

相关文档
最新文档