第一题
下面的代码运行的结果是:
class B extends Object
{
static
{
System.out.println("Load B");
}
public B()
{
System.out.println("Create B");
}
}
class A extends B
{
static
{
System.out.println("Load A");
}
public A()
{
System.out.println("Create A");
}
}
public class Testclass
{
public static void main(String[] args)
{
new A();
}
}
- Load B ->Create B->Load A -> Create A
- Load B -> Load A ->Create B ->Create A
- Load B -> Create B-> Create A -> Load A
- Create B ->Create A ->Load B ->Load A
总结
题目考察静态代码块、非静态代码块和构造函数的执行顺序
执行顺序:
“静态初始化块 ”先于 “非静态初始化” 先于 “构造函数执行”
父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数
第二题
正确答案为:A
解析:
第一个式子中由于A是抽象类,所以无法实例化,所以第一行无法通过编译,A正确
第二个式子中由于B是A的子类或者实现类(这里不考虑以抽象类继承抽象类的方式),所以这是个多态的写法,第二个式子正确
第三个式子中由于C实现了A,所以这同样是个多态的写法,第三个式子正确
总结
该题考查了抽象类和接口无法实例化,以及多态的使用,多态的前提是继承,多态指的就是父类的引用指向子类
第三题
如下代码,执行test()函数后,屏幕打印结果为()
public class Test2
{
public void add(Byte b)
{
b = b++;
}
public void test()
{
Byte a = 127;
Byte b = 127;
add(++a);
System.out.print(a + " ");
add(b);
System.out.print(b + "");
}
}
答案选择:D
解析:
首先我们需要明白前++和后++的区别
由于题中的b是后++,这就导致题中的b=b++
就相当于一句废话,因为后++是先赋值再加,b=b++
已经先赋了值了,那这时候再自增也没有用了,因为值已经赋过了
然后我们还需要注意,这里add方法和a、b变量的类型都是包装类Byte。
当++a时先是触发拆箱操作Byte.byteValue,得到基本类型的值127,查看
byte类型的数据范围
,然后执行+1操作,使得值变为-128,最后触发装箱操作Byte.valueOf将value=-128的Byte对象赋值给a。
最终的结果就为-128 127
总结
该题考查了前加加和后加加的区别,以及自动拆箱自动装箱的触发时机,以及byte的取值范围
第四题
正确答案为A
解析
1、count(*)得到总记录数
2、计算总页数
3、获取所有记录(个人感觉这一步不需要,可以直接获取指定页数数据)
4、过滤显示本页数据
总结
考到了分页的大致过程
第五题
正确答案为acd
解析
第六题
答案为A、C
解析
每个Servlet的运行都遵循如下生命周期:
1.创建Servlet实例(客户第一次请求某个Servlet时,系统创建该Servlet实例;或者当WEB应用启动时立即创建Servlet实例,即load-on-startup Servlet)
2.WEB容器调用Servlet的init方法,对Servlet进行初始化
3.Servlet初始化后,将一直存在容器中用于响应客户端请求。 客户端发送GET请求–》调用Servlet的DoGet方法响应;客户端发送POST请求–》调用Servlet的DoPost方法响应;或者统一使用service()方法处理、响应客户请求
4.WEB容器决定销毁Servlet时,调用destroy方法,通常在关闭WEB应用之前调用
总结
该题考查了jsp的声明周期
第七题
答案为A、B、C
解析
1.session用来表示用户会话,session对象在服务端维护,一般tomcat设定session生命周期为30分钟,超时将失效,也可以主动设置无效; 2.cookie存放在客户端,可以分为内存cookie和磁盘cookie。内存cookie在浏览器关闭后消失,磁盘cookie超时后消失。当浏览器发送请求时,将自动发送对应cookie信息,前提是请求url满足cookie路径; 3.可以将sessionId存放在cookie中,也可以通过重写url将sessionId拼接在url。因此可以查看浏览器cookie或地址栏url看到sessionId; 4.请求到服务端时,将根据请求中的sessionId查找session,如果可以获取到则返回,否则返回null或者返回新构建的session,老的session依旧存在,请参考API。 以上是个人总结,请多指教。
总结
该题考查了会话基数session、cookie
第八题
正确答案选择:AFD
解析
A.Class类在java.lang包下;
B.正确
C.通过反射,可以突破Java语言提供的对象成员、类成员的保护机制,访问一般方式不能访问的成员,通过setAccessible设置true屏蔽访问检查;
D.反射是用来访问类和实例化,并不能进行修剪字节码。
E.反射的确比普通的创建对象要消耗性能,需要查找对应的字符串所在的类,遍历方法,判断变量和函数的属性等等
F.提高java反射的效率并不是通过缓存方法和变量,而是设置setAccessible设置true屏蔽访问检查
总结
该题考察了反射有关知识