打卡2021/1/20

第一题

下面的代码运行的结果是:

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的取值范围

第四题

JSP分页代码中,哪个步骤次序是正确的?

正确答案为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屏蔽访问检查

总结

该题考察了反射有关知识

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值