2019年12月11日 java2

考点1 异常处理 catch顺序

下列类在多重catch中同时出现时,哪一个异常类应最后一个列出()

  • A ArithmeticException
  • B NumberFormatException
  • C Exception
  • D ArrayIndexOutOfBoundException

解析

显示答案/隐藏答案正确答案: C

这是多重catch块的顺序问题,由于异常处理系统就近寻找匹配异常处理程序,应先子类后父类。

考点2 JSP编码

通过HttpServletRequest. getParameter获取的参数.

  • A 总是采用UTF-8编码
  • B 总是采用lS08859-1编码
  • C 由客户端浏览器和Web容器配置共同决定编码
  • D 由服务器所在的操作系统决定编码

解析

显示答案/隐藏答案正确答案: C

编码格式由浏览器决定,浏览器根据html中指定的编码格式进行编码,tomcat根据指定的格式进行解码,另外get请求和post请求对编码格式的处理也是不同的

考点3 异常处理 finally返回值会覆盖try的返回值

以下代码执行后输出结果为( )
public class Test {
public static void main(String[] args) {
System.out.println(“return value of getValue(): “ +
getValue());
}
public static int getValue() {
try {
return 0;
} finally {
return 1;
}
}
}

  • A return value of getValue(): 1
  • B return value of getValue(): 0
  • C return value of getValue(): 0return value of getValue(): 1
  • D return value of getValue(): 1return value of getValue(): 0

解析

显示答案/隐藏答案正确答案: A

根据官方的JVM规范:
如果try语句里有return,返回的是try语句块中变量值。
详细执行过程如下:

  • 如果try语句块有返回值,就把try的返回值保存到局部变量中;
  • 执行jsr指令跳到finally语句里执行;执行完finally语句后,
    • 如果finally语句没有返回值,则返回之前保存在局部变量表里的值。
    • 如果finally语句里有return,忽略try的return,而使用finally的return.

考点4 重写要求

根据以下接口和类的定义,要使代码没有语法错误,则类Hero中应该定义方法( )。
interface Action{
void fly();
}
class Hero implements Action{ //…… }

  • A private void fly(){}
  • B void fly(){}
  • C protected void fly(){}
  • D public void fly(){}

解析

显示答案/隐藏答案正确答案: D

继承中方法重写要求

  • 两同 参数列表相同,方法名相同
  • 两小 抛出异常子类小,子类返回值和父类返回值相同或比父类小
  • 一大 访问控制权限子类比父类大或相等

接口中的方法默认public abstract修饰 故子类重写时只能用public作为访问控制权限修饰符

考点5 网络编程socket

socket编程中,以下哪个socket的操作是不属于服务端操作的()?

  • A accept
  • B listen
  • C connect
  • D close

解析

显示答案/隐藏答案正确答案: C

图片

考点6 Integer缓存

下面的代码返回结果为:

1
2
3
4
Integer a = 1;
Integer b = 1;
Integer c = 500;
Integer d = 500;

System.out.print(a == b);
System.out.print(c == d);

  • A truetrue
  • B truefalse
  • C falsetrue
  • D falsefalse

解析

显示答案/隐藏答案正确答案: B

Interger的缓存[-128,127]这个范围内的Interger对象,创建在这个范围内的Integer对象时,不会创建新的Interger对象,而是返回缓存好了的对象,所以
在[-128,127]范围内比较相等返回为true,
超过范围返回false

考点7 queue的实现类

下面几个关于Java里queue的说法哪些是正确的()?

  • A LinkedBlockingQueue是一个可选有界队列,不允许null
  • B PriorityQueue,LinkedBlockingQueue都是线程不安全的
  • C PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))
  • D PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则

解析

显示答案/隐藏答案正确答案: AC

有空了解一下

考点8 反射

Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( )

  • A Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.reflet包下
  • B 通过反射可以动态的实现一个接口,形成一个新的类,并可以用这个类创建对象,调用对象方法
  • C 通过反射,可以突破Java语言提供的对象成员、类成员的保护机制,访问一般方式不能访问的成员
  • D Java反射机制提供了字节码修改的技术,可以动态的修剪一个类
  • E Java的反射机制会给内存带来额外的开销。例如对永生堆的要求比不通过反射要求的更多
  • F Java反射机制一般会带来效率问题,效率问题主要发生在查找类的方法和字段对象,因此通过缓存需要反射类的字段和方法就能达到与之间调用类的方法和访问类的字段一样的效率

解析

显示答案/隐藏答案正确答案: ADF

A选项错误:
类Class在java.lang包下,
类Method、Filed在java.lang.reflet包下
D选项错误:反射的本质就是从字节码中查找,动态获取类的整容结构,包括属性,构造器,动态调用对象的方法,而不是修剪类,
F选项错误:使用了反射的效率都会降低,就算加了缓存