java面试题

本文深入探讨Java核心技术,包括集合框架的细节如HashMap、TreeMap、HashSet等的区别,Spring框架的Bean生命周期及依赖注入方式,Hibernate的一二级缓存机制,以及Servlet生命周期等内容。此外还涵盖了事务的隔离级别、面向对象的基本特性等基础知识。
[url]http://www.15157.com/thread-24-1-1.html[/url][url]http://www.15157.com/thread-26-1-1.html[/url]
JAVA面试题(1)

一、Hashtable和HashMap、HashMap和TreeMap区别
1)
Hashtable父类Dictionary,实现了Map、Cloneable、Serializable接口
HashMap父类是AbstractMap,实现了Map、Cloneable, Serializable接口
2)
Hashtable的方法是同步的,HashMap方法不是同步
3)
Hashtable不允许null作为key值
4)TreeMap父类是AbstractMap,实现了Map、NavigableMap、Cloneable, Serializable接口
TreeMap的key是排好序的,HashMap的key是没有排好序的

二、Set、Map、List、Collection的区别
Set和List都是Collection接口的扩展
Set 仅保存值、其中的值不允许重复,代表无序、不可重复的集合
List 仅保存值、其中的值允许重复,代表有序、重复的集合
Map 保存键和值对、健必须具有唯一性

三、HashSet和TreeSet区别
1)HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的
2)两者都只能保存值不能保存键,都只能保存唯一的对象
3)HashSet是无序的,TreeSet是有序的

四、Spring Bean生命周期
singleton、prototype、request、session

五、Spring依赖注入方式
1)构造函数注入
2)setter注入
3)Abstract方法注入

六、Hibernate一、二级缓存
1)一级缓存是Session的缓存。
2)二级缓存根据id和SQL语句缓存

七、Hibernate对象有几种状态
1)瞬时(Transient) - 由new操作符创建,且尚未与Hibernate Session 关联的对象被认定为瞬时(Transient)的。
2)持久(Persistent) - 持久(Persistent)的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier)。
3)脱管(Detached) - 与持久(Persistent)对象关联的Session被关闭后,对象就变为脱管(Detached)的。

八、Servlet声明周期
Servlet 从被客户第一次请求开始,由Web 容器加载并实例化对象,随后进行
初始化、服务和销毁。一个Servlet 在初始化时会执行其init() 方法,在服务
阶段执行serivce() 方法,之后一直常驻内存,直至Web 容器停止才会执行其
destroy() 方法进行对象的销毁工作。

九、事务的隔离级别
未授权读取,也称为读未提交(Read Uncommitted)
授权读取,也称为读提交(Read Committed)
可重复读取(Repeatable Read)
序列化(Serializable)

十、代理和装饰的不同
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

装饰模式的特点;
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的索引(reference)
(3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。


代理关注职能转移引入代理层代替目标端与调用端进行沟通

十一、在不同编码的页面间提交表单
<form method="post" action="..." accept-charset="utf-8">

enctype="multipart/form-data" //上传附件


十二、面向对象特征
抽象、继承、封装、多态

十三、java基础类型
byte、char
int、long、float、double、short
boolean
String不是基本类型

十四、Overload和Override的区别
都是多态的表现
override是子类覆盖父类的方法,方法名、参数类型、参数个数、返回值都必须相同
overload是类的多态表现,方法名相同,参数类型、参数个数不同,返回者也可以不同

十五、列举五种常见的异常

java.lang.ArrayIndexOutOfBoundsException
java.lang.StringIndexOutOfBoundsException
java.lang.ClassCastException
java.lang.NullPointerException
java.io.IOException
java.io.FileNotFoundException
java.lang.NumberFormatException
java.text.ParseException
java.rmi.RemoteException

JAVA面试题(2)

一、session超时时间
web.xml中的session-fonfig配置节中
session.setMaxInactiveInterval(int arg);

二、jsp内置对象
request、response、session、application、out、pageContext、page、config、exception

三、访问修饰符作用域
当前类 同一package 子类 其他package
public ok ok ok ok
protected ok ok ok no
friendly ok ok no no
private ok no no no

不写时默认为friendly

四、i++和++i的区别
public static void main(String[] args) {
int i=0;
System.out.println(i++);//后自增,输出后i=i+1;输出0
i++;//i=2
System.out.println(i);//输入出为2
System.out.println(i++);//输出2后,i=3
System.out.println(++i);//前自增,输出i=4
System.out.println(i);//i=4

}

输出结果为
0
2
2
4
4

五、Abstract类是否可以继承实体类?
可以,但是实体类必须有默认的不带参数构造函数

六、JNDI
Java Naming and Directory Interface,命名服务和目录服务访问API

七、JDBC
Java Data Base Connectivity

八、==和equals
String str1 = "abcdefg";
String str2 = "abcdefg";
String str3 = new String("abcdefg");


System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
System.out.println("ABCDEFG".toLowerCase()==str1);
System.out.println("abcdefg".toLowerCase()==str1);

输出
true
false
true
false
true

九、

public static void append(String str){
str += " Append!";
System.out.println(str);
}
public static void main(String[] args) {
String z="abc";
append(z);
System.out.println(z);
}

输出结果
abc Append!
abc


十、final,finally,finalize的区别
类被声明为final则该类不能被继承
方法声明为final则子类不能被覆写,但可以重载
类属性被声明为final则必须赋值
方法参数被声明为final则不能被重新赋值

finally是try catch的后续操作

finalize()是方法体垃圾回收

十一、列举几种java产生对象实例的方式
new
Class.forName("").newInstance();
proxy
clone
反序列

十二、switch case可以接受的参数类型
可以接受 char、int、short、byte
不能接受 long、String

short key=-20000;

switch (key) {
case 1:{
break;
}
default:
break;
}

十三、Error与Exception有什么区别?
Error类和Exception类都继承自Throwable类
Exception包含可被控制(checked) 或不可控制的(unchecked),是应用程序级异常。
Error总是不可控制的(unchecked) ,是系统级错误。

十四、数组拷贝
System.arraycopy(Object fromArray,int fromIndex,Object toArray,int toIndex,int number);

十五、Comparable和Comparator区别
java.lang.Comparable接口的compareTo(Object obj)方法是比较this和obj对象,对比的对象需要实现此接口。
java.util.Comparator接口的compare(Object obj1,Object obj2)方法是比较obj1和obj2对象,对比的对象不需要实现此接口。
java.txt.Collator是java.util.Comparator接口的一个实现,实现了根据本地化来进行比较String字符串。

十六、数组、List排序
java.util.Arrays.sort(Object[] obj);//元素必须实现Comparable接口
java.util.Arrays.sort(Object[],java.util.Comparator);//元素不需要实现Comparable接口,提供外部对比器

java.util.Collections.sort(List list);//元素必须实现Comparable接口
java.util.Collections.sort(List list,java.util.Comparator);//元素不需要实现Comparable接口,提供外部对比器


十七、常见排序算法
冒泡排序、插入排序、选择排序、快速排序等

十八、JVM的堆栈的概念
heap(堆)存放new出来的对象
stack(栈)存放局部变量

十九、static方法是否可以继承、覆盖
可以


二十、ArrayList Vector LinkedList 区别
ArrayList 和Vector是采用数组方式存储数据
Vector是线程安全的
Vector 缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%
LinkedList提供带有链表功能的List
ArrayList 的查询效率比较高,增删动作的效率比较差,适用于查询比较频繁,增删动作较少的元素管理的集合。
LinkedList 的查询效率低,但是增删效率很高。适用于增删动作的比较频繁,查询次数较少的元素管理集合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值