考试题A
姓名: 日期: 时间:
注意:所有题目答案请提供答题思路,否则视为未回答;选择题全为多选题(含单选)。
一、基础知识
- 下面四个选项中,代码可以编译通过的是:AB
A int i = 10;
B short s = 300;
C float f = 10.6;
D 函数
public void printNumber(short arg) {
System.out.println(arg);
}
以如下方式调用:printNumber(10);
- 下面的几个函数中,是可以和 BC
public void printMessage(short arg) {};
形成重载(Overload)关系的有:
A public void printMessage1(short arg) {};
B public void printMessage(String arg) {};
C public void printMessage(double arg1, double arg2, String message);
D public int printMessage(short arg);
- 有如下四个字符串变量:ABE
String str1 = “JavaWorld”;
String str2 = “JavaWorld”;
String str3 = new String(str1);
String str4 = “Java” + “World”;
下面的代码返回true的有:
A str1.equals(str2);
B str1 == str2;
C str2 == str3;
D str3 == str4;
E str3.equals(str4);
- 下面子类Sub继承父类Base并实现了父类的finish()方法,写法正确的有:BC
父类
public abstract class Base {
protected abstract void finish();
}
子类
A public class Sub extends Base {
void finish () {
}
}
B public class Sub extends Base {
protected void finish () {
}
}
C public class Sub extends Base {
public void finish () {
}
}
D public class Sub extends Base {
private void finish () {
}
}
- 下面关于接口的描述,错误的有:DE
A 接口里面定义的方法默认都是public的
B 接口里面定义的变量默认都是public static final的
C 接口里面定义的方法默认都是abstract的
D 接口不可以有多个父接口
E 实现接口的类一定要实现接口的所有的方法
抽象函数不必实现所有方法
有如下三个类:(下面代码6、7两道题目共用)
class Base {
public void finish() {
System.out.println(“Base”);
}
}
class Sub extends Base{
public void finish() {
System.out.println(“Sub”);
}
}
class SubA extends Sub{
public void finish() {
System.out.println(“SubA”);
}
}
class SubB extends Sub{
public void finish() {
super.finish();
}
}
- 下面的代码输出的内容是:C
Base base = new SubA();
base.finish();
A Base
B Sub
C SubA
D SubA Sub Base
E SubABase
- 下面代码输出的内容:B
Base base = new SubB();
base.finish();
A Base
B Sub
C SubA
D SubA Sub Base
E SubABase
- 下面的声明数组的代码中,正确的有:AB
A int[] array[] = new int[10][20];
B int[] array = new int[]{1,2,3,4};
C int array [] = new int[];
D int[] array = int[5];
E int[] array = new int[4]{};
- 数组是内存中的连续空间,但实际使用中我们往往需要可变长的数据结构来存储数据,所以我们经常用到java.util.List接口;List接口有两个主要的实现,ArrayList和LinkedList。下面的应用场景中,适合使用哪种实现呢(如果两种都合适可填写“均可”)?
A 我需要经常读取某个位置的元素( ArrayList )
B 我需要频繁的插入元素到某个位置( LinkedList )
C 我需要频繁的从某个位置删除元素( LinkedList )
D 我需要顺序读取所有的数据( ArrayList )
10. JDBC规范是面向对象的设计(OOD)的一个良好的范例。请问JDBC API中,下面哪些是接口?BCD
A DriverManager
B Connection
C Statement
D ResultSet
第二部分 高级部分
11. Java异常体系中,分为checked异常和unchecked异常,这两种异常在使用上有什么差别?
12. Http协议的Post和Get方式有什么差别?
13. 请写出下面代码输出的内容。
public classMain{
public static void main(String[] args) {
Base base = new Sub();
}
}
class Base {
static {
System.out.print(“A”);
}
{
System.out.print(“B”);
}
public Base() {
System.out.print(“C”);
}
}
class Sub extends Base {
public Ref ref = new Ref();
static {
System.out.print(“D”);
}
{
System.out.print(“E”);
}
public Sub() {
System.out.print(“F”);
}
}
class Ref {
static {
System.out.print(“G”);
}
{
System.out.print(“H”);
}
public Ref() {
System.out.print(“I”);
}
}
14. 请指出下面代码的输出并说明原因。
import java.util.HashMap;
import java.util.Map;
public classMain{
public static void main(String[] args) {
Map<CusKey, Integer> map = new HashMap<CusKey, Integer>();
for (int i = 0; i < 5;)
map.put(new CusKey(i++), i);
if (map.containsKey(new CusKey(3)))
System.out.println(“find!”);
else
System.out.println(“can’t find!”);
}
}
class CusKey {
int keyNumber;
public CusKey(int n) {
keyNumber = n;
}
}
15. 请指出下面代码的结果并说明原因。
public classMain{
public static void main(String[] args) {
System.out.println(newMain());
}
public String toString() {
return “I am ” + this;
}
}
16. J2EE Web规范中,有四种生命周期范围,它们是Page/Request/( )/( ),在这四种生命周期中,用什么语法可以让Request包含多个Page?
17. 用Java开发数据库应用程序的时候,在大量数据插入或者修改操作的情况下,PreparedStatement可以极大幅度的提高程序的性能。请问PreparedStatement和Statement的差别是什么?
18. Java多线程程序中,锁是一个重要的概念,它保证了在多线程并发情况下,单一时间片内只有一个线程访问受锁保护的代码,保证了系统数据的一致性。下面的代码中,使用的是什么对象作为锁?
public classMain{
private int seed = 0;
public synchronized int getNextSeed(){
return ++i;
}
}
A 这里的synchronized使用的锁是:
public classMain{
private static int seed = 0;
public synchronized static int getNextSeed(){
return ++i;
}
}
B 这里的synchronized使用的锁是:
19. Java多线程程序中,什么情况下标志着一个线程正常结束?
20. 网络编程中,TCP和UDP的差别是什么?
第三部分 框架和数据库
21. 在SpringFramework的配置文件当中,声明一个Bean的时候,默认情况下Spring会控制Bean的实例的Scope为
A 单一实例
B 每个需要这个Bean的地方,都产生一个新的实例
C Spring会维护一个实例的对象池,每次从对象池中获取对象
D 随机产生
22. Hibernate是目前被最广泛使用的ORM持久化框架。请问Hibernate中,Session类的load和get方法的差别是什么?
23. Hibernate的映射配置文件(.hbm.xml)当中,在一对多的情况下,集合类有两种加载方式,fetch=”join”和fetch=”select”,请问下面关于集合类的延时加载(lazy=”true”属性)的说法正确的是:
A 当lazy=”true” 而fetch=”select”的时候,集合类的数据只有在被访问的时候才加载。
B 当无论lazy属性是否是true,只要fetch=”select” 的时候,集合类的数据就只有在被访问的时候才加载。
C 当lazy=”true” 而fetch=”join”的时候,集合类的数据只有在被访问的时候才加载。
D 当无论lazy属性是否是true,只要fetch=”join”的时候,集合类的数据就只有在被访问的时候才加载。
E当无论lazy属性是否是true,只要fetch=”join”的时候,集合类的数据无论是否访问,都将始终被直接加载。
24. 下面的SQL代码在Mysql数据库中创建了一个用户表:
create table Profile (
id int not null auto_increment comment ‘自增主键’,
loginId varchar(32) not null comment ‘登录名’,
password varchar(32) not null,
age int,
email varchar(100),
primary key (id)
);
A 写SQL向表中插入一条数据,loginId是smith,password是hello, age是28,email是smith@email.com
B 条件查询:写SQL查询年龄在25到35岁之间,并且loginId不是smith的用户。
C 条件删除:删除所有email以@yahoo.com.cn注册的用户。
25. JDBC中,Statement的executeUpdate(String arg)方法返回一个int值。这个返回值代表的含义是什么?