选择题(每题1分, 全部为单选)
1, 构造函数何时被调用( B )
A、类定义时
B、创建对象时
C、调用对象方法时
D、使用对象的变量时
2, 下面选项中不是权限修饰符的是( C )
A、public
B、protected
C、extends
D、private
3, 要想定义一个不能被实例化的抽象类,在类定义中必须加上修饰符( D )。
A、final
B、public
C、private
D、abstract
4, 给出下面代码:
public class Person {
static String[] arr = new String[10];
public static void main(String[] a) {
System.out.println(arr[1]);
}
}
以下说法哪个是正确的( D )
A、 编译时将产生错误;
B、 编译时正确,运行时将产生错误;
C 、输出0;
D、 输出null。
5, 下面哪种注释方法能够支持javadoc命令( D )
A、 /**...**/
B、 /*...*/
C、 //
D、 /**...*/
6, 以下哪个方法用于定义线程的执行体( C )
A、start()
B、init()
C、run()
D、main()
7, 函数重载是指 ( A )
A、两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B、两个或两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C、两个或两个以上的函数名字不同,但形参的个数或类型相同
D、两个或两个以上的函数取相同的函数名,并且函数的返回类型相同
8, 下面哪个语句是正确的( A )
A、Object o = new Object();
B、Person p = new Object();
C、Panel p = new void Frame();
D、Person p = new Person().test();
9, 下列说法不正确的是( C )
A、IOException必须被捕获或抛出
B、java语言会自动初始化成员变量的值
C、java语言不允许同时继承一个类并实现一个接口
D、java语言会自动回收内存中的垃圾
10, JDBC的模型对开放数据库连接(ODBC)进行了改进,它包含( D ) ?
A、 一套发出SQL语句的类和方法
B、 更新表的类和方法
C、 调用存储过程的类和方法
D、 以上全部都是
11, 接口Statement中定义的executeUpdate返回的类型是( B )
A、 ResultSet
B、 int
C、 boolean
D、 String
12, 如果要限制某个查询语句返回的最多的记录数,可以通过调用Statement的方法( C )来实现。
A、 setFetchSize
B、 setMaxFieldSize
C、 setMaxRows
D、 setMaxCols
13, 在java中,Integer.MAX_VALUE表示( B )
A、浮点类型最大值
B、整数类型最大值
C、长整型最大值
D、短整型最大值
14, 若在某一个类定义中定义有如下的方法: abstract void performDial(); 该方法属于( D )。
A、本地方法
B、最终方法
C、静态方法
D、抽象方法
15, 删除表的关键字是( D )。
A、 DELETE
B、 ALTER
C、 UPDATE
D、 DROP
16, 要给一个表增加一个字段要使用到的关键字有( B )。
A、 DELETE
B、 ALTER
C、 UPDATE
D、 DROP
17, 在SQL语言中,建立存储过程的命令是( A )
A、CREATE PROCEDURE
B、CREATE RULE
C、CREATE FUNCTION
D、CREATE FILE
18, 向用户授予操作权限的SQL语句关键字是( D )。
A.CREATE
B.REVOKE
C.SELECT
D.GRANT
19, 供XML解析器忽略XML文档的特定部分的正确语法是( C )
A、<xml:CDATA[ Text to be ignored ]>
B、<PCDATA> Text to be ignored </PCDATA>
C、<![CDATA[ Text to be ignored ]]>
D、<CDATA> Text to be ignored </CDATA>
20, 在JSP页面中,保存数据的范围由小到大依次是 ( C )
A、pageContext,request,application,session
B、pageContext,application,session,request
C、pageContext,request,session,application
D、pageContext,session,request,application
问答题(每题4分, 一个知识点1分, 酌情给分, 错一个知识点扣一分, 扣完为止)
21, 以下代码的输出结果是 ? 为什么 ?
public class Test {
public static void main(String[] args) {
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 150;
Integer i4 = 150;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
String s1 = “aaa”;
String s2 = “aaa”;
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
答:
true
false
true
true
i1和i2两个变量被定义成Integer引用类型, 当被赋值时根据赋值的大小(是否在byte类型的范围内)先判断是否在Integer类型的缓存中, 如果有, 则直接引用, 如果没有则返回new Integer(...), 所以第二个结果为false
==对比的是在内存中引用地址是否相同, equals对比的是值是否相同
String类在内存中有一个常量池, 当第一个变量被定义时会储存到常量池中, 第二个String类型定义时会去常量池里面查找是否已经定义此值, 如果有, 直接引用
22, 抽象类和接口有什么相同点和不同点 ? 以及分别用什么关键字定义 ?
答:
分别用abstract和interface关键字定义
抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
抽象类要被子类继承,接口要被类实现。
接口只能做方法声明,抽象类中可以做方法声明,也可以做方法实现
接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
抽象方法只能声明,不能实现,接口是设计的结果 ,抽象类是重构的结果
抽象类里可以没有抽象方法
如果一个类里有抽象方法,那么这个类只能是抽象类
抽象方法要被实现,所以不能是静态的,也不能是私有的。
接口可继承接口,并可多继承接口,但类只能单个继承。
23, 什么是DAO层 ?
答:
dao全称是data access object,数据库访问对象
DAO模式通过将数据访问计划分为抽象层(或者interface)和实现层,从而分离了数据使用和数据访问的地称实现细节。这意味着业务层与数据访问的底层细节无关,也就是说,可以在保持上层机构不变得情况下,通过切换底层实现来修改数据访问的具体机制,常见的一个例子就是,我们可以通过仅仅替换数据访问层实现,将我们的系统部署在不同的数据库平台之上。
24, 如何通过反射获得一个类的实例化对象, 以及获取这个对象中的属性和属性值 ?
答:
获取一个类的实例化对象
Class<?> cla = Class.forName("com.hanqi.maya.model.User");
Object obj = cla.newInstance(); // 此对象为获取的User对象
获取属性值
Field field = cla.getField("属性名");
fieldValue=field.get(obj);
25, 在oracle数据库scott用户下的员工表中, 查询出员工姓名中字母”R”出现两次或者两次以上的员工
SELECT * FROM EMP E WHERE LENGTH(REPLACE(E.ENAME, 'R', '')) - LENGTH(E.ENAME) >= 2
或者使用translate函数
26, 解释一下面向对象的五大原则中依赖倒置原则和开放封闭原则
开放封闭原则: 对象或实体应该对扩展开放,对修改封闭。
依赖倒置原则: 实体必须依靠抽象而不是具体实现。它表示高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。
27, Mybatis对应接口进行映射的时候, 方法可不可以进行重载 ? 简述原因 ?
答:
不可以, 因为mybatis映射文件中是通过<mapper>中的namespace属性外加执行语句的id进行方法定位的, 没有涉及参数的类型以及个数, 所以不能重载
28, Java中运算符>>, <<, >>>分别是什么意思?
位运算符
>>表示以二进制的形式向右移动, <<表示向左移动, >>>表示无符号向右移动, 即无论正负都在前面补0
29, java环境下的命令行中java命令和javac命令分别是做什么用的 ?
因为java是一门解释型语言, javac用来编译java文件以生成字节码形式的class文件, java命令用来向虚拟机进行解释来执行编译好的class文件
30, 当调用equals方法来判断字符串是否相同时, 经常会写成"aaa".equals(str), 为什么 ?
防止str变量接收到的参数为null
如果写成str.equals("...")在编译过程不会报错, 但是如果str这个变量接收到的参数为null的话则会报出空指针异常, 但是将字符串常量写在外面就可以避免这个情况, 因为null在java中也被看作是一个对象的形式, 这时候会返回false
31, 什么是内部类 ? 为什么要有内部类 ?
在一个类的内部再定义一个class, 内部类是为了解决java不能进行多重继承的问题
32, 什么是二分查找法?以及使用二分查找法的前提是?
二分折半查找法, 每次取一个顺序序列的中间值与要查找的值进行比对, 然后判断是在前半段查找还是后半段查找, 确定好之后再取中间值进行比对继续查找, 所以前提条件是要查找的序列必须进行排序
33, 线程中start(), sleep(), stop(), setPriority()分别是什么方法 ? 如果让你设计一个终止线程的方法, 你会怎么做 ?
start: 启动线程
sleep: 使线程休眠
stop: 终止线程, 已废弃
setPriority: 设置线程的优先级
34, 描述一下在线程中, 什么是死锁 ?
当两个线程启动时, 第一个线程需要获取第二个线程的一个属性, 第二个线程需要获取第一个线程的一个属性的时候, 互相等待对方线程释放此对象时会造成死锁, 造成死锁的情况的条件还有要使用synchronized关键字
35, Oracle中一个表最多可以有几个主键, 使用两个字段作为主键的情况称为什么情况, 怎么使用?
一个表只能有一个主键, 主键可以使用两个字段, 叫做联合主键, 当同时确定这两个字段就能确定一条数据的唯一性的时候生效
36, PLSQL编程中循环有几种方式? 分别列举一下
三种方式
1,
LOOP
EXIT...WHEN...
END LOOP
2,
WHILE
LOOP
END LOOP
3,
FOR ... IN ...
LOOP
END LOOP
37, Javaweb中要实现10天内登录保存密码的功能怎么实现 ?
在登录处理页面使用Cookie, 将登录信息存储到Cookie中, 然后调用Cookie中方法setMaxAge(...)来设置cookie的过期时间, 值为毫秒数, 下次登录的时候先判断Cookie中有没有值, 如果返回不为null可以取出直接调用
38, 在jsp中如何使用EL表达式读取request对象中的一个Map对象的值 ?
${key值 }
39, Hibernate中get方法和load方法有什么区别 ?
load方法支持延迟加载, 当查询结果被使用的时候才会去数据库进行查询, get方法不支持延迟加载
load方法查询时如果数据库中没有查询到该结果, 则会抛出异常, get方法则会返回null
40, jsp中<%...%><%!...%><%=...%><%--...--%>分别是什么含义?
<%...%>: 定义java代码的语言脚本
<%!...%>: 声明变量等
<%=...%>: 将方法的返回值或某个变量直接显示
<%--...--%>: 脚本中的注释, 该注释不会在html页面中"查看页面源代码"中显示