java面试题

1、抽象类与接口的区别

(1)不能创建抽象类的实例,然而可以创建一个变量,其类型是抽象类,并指向其子类的实例。不能有抽象构造函数或抽象静态方法。抽象类的子类为它们的父类中的抽象方法实现,否则它们也是抽象类。抽象类的方法只需声明,而无须实现。
(2)接口是抽象类的变体,接口中,所有方法都是抽象的。接口只能定义static final成员变量。子类不能从接口中获得行为。接口可以多继承。接口不能有构造函数。

2、string与StringBuffer的区别
[quote]string一旦创建就不能修改,而StringBuffer是可变字符缓冲区,内容可修改[/quote]
3、区别HashTable与HashMap、ArrayList与Vector、LinkedList [quote]hashMap与hashTable的区别是hashMap不同步而且可以使用null[/quote]
[quote]arrayList与vector区别是ArrayList不同步,与LinkedList区别是前两个使用的是索引来获取元素,而LinkedList使用双向链表[/quote]
4、理解什么是j2EE
5、阐述mvc?
6、jdbc连接数据库操作
7、数据库的隔离级别
8、java api中的处理队列与栈的类:queue、stack
9、数据库的索引的优缺点,有效率一定高? [code="java"] 优点:提高查询速度,缺点:占用物理空间,增加修改、增加数据的维护时间;所以有索引效率不一定高,还要看数据库中数据分类的多少,每一个类别中数据多少 [/code]
10、hibernate中session与connection的区别
11、数据库的外连接与内连接
12、Class.forName();

Class.forName(xxx.xx.xx) 返回的是一个类, .newInstance() 后才创建一个对象 Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM 会执行该类的静态代码段 在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的Driver类的代码都必须类似如下: public class MyJDBCDriver implements Driver { static { DriverManager.registerDriver(new MyJDBCDriver()); } } 所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了在JDBC驱动中,有一块静态代码,也叫静态初始化块,它执行的时间是当class调入到内存中就执行(你可以想像成,当类调用到内存后就执行一个方法)。所以很多人把jdbc driver调入到内存中,再实例化对象是没有意义的。

13、java的异常处理运行时异常一定要捕获吗?

java的异常处理机制包括两类一是:error二是exception error:是系统错误或者系统环境问题,由系统处理,不需要捕获。 exception类包括运行时异常和检查时异常(非运行时异常);运行时异常是jvm 的通常操作中可能发生的异常,是一种常见的运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但不要求必须声明抛出未被捕获的运行时异常。throws是向上抛出,由调用的捕获异常,而throw 是throw 对象或者throw new 异常类,要么自身捕获,要么通过throws声明向上抛出,再捕获。

14、set接口
set中不能有重复元素 HashSet与StoredSet的区别 HashSet:使用散列表进行数据存储,在散列表中通过散列码唯一确定一个元素,不能保证排列顺序 StoredSet:按递增顺序存储数据 

15、stack 继承自vector,实现一个先进先出的栈
16、你所知道的集合类有哪些

最常用的集合类有List、Map。list的具体实现有ArrayList和Vector,他们是可变大小的列表。比较适合存储和操作任何类型对象的元素列表。List适合按索引访问。Map提供一个更通用的元素存储方法。Map集合适用存储元素对。

17、List、Map、Set各有什么特点

List是以特定顺序存储元素,可以有重复元素。set无法拥有重复元素和内部排序,Map保存key-value值,可以有多值

18、ArrayList、Vector、LinkedList的存储性能和特性

ArrayList和vector都是使用数组方式存储数据,此数组元素大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及元素移动等内存操作,索引数据的插入速度慢。由于Vector使用了synchronizaed方法(线程安全)性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或者向后遍历,但是插入数据时只需要记录本项的前后即可,所以插入速度快。

19、名词解释:

JNDI技术:java命名目录服务。主要提供一个目录系统,让其他各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 RMI//IIOP技术:远程方法调用互联网对象请求中介协议,它们主要用于通过远程调用服务。例如,在一台远程计算机上运行一个程序,它们提供股票分析服务,可以在本地计算机上实现对其的直接调用。当然这需要通过一定的规范才能在异构的系统之间进行通信。 java IDL/CORBA技术:是对象管理组织,简而言之,CORBA 允许应用程序和其他的应用程序通讯,而不论他们在什么地方或者由谁来设计。他定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。ORB 是一个中间件,他在对象间建立客户-服务器的关系。 JMS技术:java消息服务,主要实现各个应用程序之间的通信,包括点对点和广播。 JTA技术:java事务服务,提供各种分布式事务服务,应用程序只需调用其提供的接口即可。 JTS技术:是corba ots事务监控的基本实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java 事务规范,并且在底层实现OMG OTSspecification 的java映射。jts事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供事务服务。 JAF技术:java安全认证框架。

20、sleep()与wait()的区别

sleep是线程类thread的方法,导致线程暂停指定的时间,将执行机会交给其他线程,当监控状态依然保持,到时候恢复,不会释放对象锁。 wait是object的方法,对此方法的调用导致本线程放弃对象锁,进入等待此对象的等待锁定池。只有针对此对象的notify方法或者notifyAll方法后,才进入运行状态。


21、这个网址上有许多面试题
[url]http://blog.csdn.net/zuoluoboy/archive/2009/02/22/3923182.aspx[/url]
22、java中的几种引用区别:
[url]http://developer.51cto.com/art/200906/130447_1.htm[/url]
23、java线程间的通信
24、java内存处理机制
25、快速排序
26、java泛型
27、javascript怎样跨浏览器
有个navigator.appname可以得到浏览器的字符串

28、java中处理同步的类:
ThreadLocal
29、java常用设计模式
30、java中的final与c++中的const的区别
都是来表明常量,java中的常量对象,可以修改,而c++中严格规定不能修改常量

31、java中的堆与栈的区别
堆存放对象类别数据,而栈存放普通数据类型,对于创建的对象是在堆中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值