Java面试题精选(一)基础概念和面向对象

--   基础概念和面向对象   --

    

全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见:

基础概念部分     ★★   : 常出现的高频率单词的区别理解(异常、静态、抽象、接口、集合等);

深入理解部分     ★★★★: 重点掌握的面向对象的理论知识(对象、排序、字节字符流);

线程编程部分     ★★★★★:单独讲解线程概念、同异步实现方法及关系、线程锁等;

数据库理论归纳   ★★★★: 总结PL/SQL语句,使用方法,归纳基本公式,深层次内容有待开发。

JDBC和XML部分   ★★★  : 重点分析XML的技术构成、应用方面的形式和区别。

Servlet   部分   ★★★★★:重点掌握生命周期和会话跟踪技术的知识点和一般的实现方法。

J S P    部分   ★★★★ : 对象、动作的分类和区别,跳转方法以及动静态include的区别。

JAVA笔试逻辑题  ★★    : 逻辑题目的考验,目前企业应用也比较广泛,稍微了解下。


Java基础概念部分:

首先,大家先理解一个基本概念性的问题:

基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。

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

区别如下:
作用域           当前类       同一package    子类       其他package
public            √              √           √             √
protected        √              √            √            ×
friendly         √              √            ×            ×
private          √              ×            ×            ×
不写时默认为friendly

2Static Nested Class  Inner Class的不同
答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。

Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。

注: 静态内部类(Inner Class)意味着:

1、创建一个static内部类的对象,不需要一个外部类对象;

2、不能从一个static内部类的一个对象访问一个外部类对象。

3Collection  Collections的区别。(重点知识)
答:

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

4ArrayListVector的区别,HashMapHashtable的区别
答:

就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

5errorexception有什么区别
答:

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

6、谈谈final, finally, finalize的区别
答:

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

内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码……

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

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法  提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用。

7abstract classinterface有什么区别
答:

声明方法的存在而不去实现它的类被叫做抽象类(abstract class)。不能创建abstract 类的实例。

不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。

8、抽象类与接口的区别。
答:

抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。 
JAVA类实现序例化的方法是实现java.io.Serializable接口。
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口。

9STRINGSTRINGBUFFER的区别。 
答:

STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

10、运行时异常与一般异常有何异同
答:

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

11HashMapHashtable的区别
答:

HashMap 是 Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,

主要区别在于 HashMap允许 空(null)键值(key),由于非线程安全,效率上可能高于 Hashtable。
HashMa p允许将 null 作为一个entry的key或者 value,而 Hashtable不允许。
HashMap 把 Hashtable的 contains方法去掉了,改成 containsvalue和 containsKey。 
最大的不同是,Hashtable的方法是 Synchronize的,而HashMap不是,在多个线程访问 Hashtable时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。

12ListMapSet三个接口,存取元素时,各有什么特点?
答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

Java
深入概念
:

1、面向对象的特征有哪些方面 .
答:

主要有以下四方面:
1.抽象:
抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:

对象的一个新类可以从现有的类中派生,这个过程称为类继承。

新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。

派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。

多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

2、垃圾回收的优点和原理。并考虑2种回收机制
答:

Java语言中一个显著的特点就是引入了垃圾回收机制,它使得Java程序员在编写程序的时候不再需要考虑内存管理。

由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。

垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

3、排序都有哪几种方法?请列举.
答:

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),

归并排序,分配排序(箱排序、基数排序)。

5JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
答:

在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。

Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
Finally为确保一段代码不管发生什么"异常"都被执行一段代码。

5java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
答:

字节流,字符流。

字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。

在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

6java中实现多态的机制是什么?
答:

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

7、说出一些常用的类,包,接口,请各举5
答:

常用的类:

BufferedReader  BufferedWriter  FileReader  FileWirter  String  Integer
常用的包:java.lang  java.awt  java.io  java.util  java.sql
常用的接口:Remote  List  Map  Document  NodeList

8J2EE是什么? 
答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。

所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

   

上一篇:PostMan插件安装


下一篇:Linux系统目录/bin /sbin /usr/bin /usr/sbin和/lib /usrlib的一些分析