2019年11月29日 java1

考点1

关于依赖注入,下列选项中说法错误的是()

  • A 依赖注入能够独立开发各组件,然后根据组件间关系进行组装
  • B 依赖注入使组件之间相互依赖,相互制约
  • C 依赖注入提供使用接口编程
  • D 依赖注入指对象在使用时动态注入

解析

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

依赖注入是相互依赖(减少耦合),使开发更加简洁

考点2

如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( )

  • A void use() { …}
  • B protected void use() { …}
  • C public void use() { …}
  • D 以上语句都可以用在类SmallCup

解析

显示答案/隐藏答案正确答案: C
  • 接口中的常量修饰符是public static final,
  • 接口中的方法修饰符是public abstract
  • 两头两小一大

考点3

使用mvc模式设计的web应用程序具有以下优点,除了?

  • A 可维护行强
  • B 可扩展性强
  • C 代码重复少
  • D 大大减少代码量

解析

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

考点4

关于ASCII码和ANSI码,以下说法不正确的是()?

  • A 标准ASCII只使用7个bit
  • B 在简体中文的Windows系统中,ANSI就是GB2312
  • C ASCII码是ANSI码的子集
  • D ASCII码都是可打印字符

解析

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

A、标准ASCII只使用7个bit,扩展的ASCII使用8个bit
B、ANSI通常使用 0x000x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x800xFFFF来编码,即扩展的ASCII编码。不同 ANSI 编码之间互不兼容。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。
C、ANSI通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符,即ASCII
D、ASCII码包含一些特殊空字符,这些特殊的空字符无法打印。

考点5

在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。()

  • A 正确
  • B 错误

解析

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

泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的.

考点6

java中将ISO8859-1字符串转成GB2312编码,语句为 ?

  • A new String("ISO8859-1".getBytes("ISO8859-1"),"GB2312")
  • B new String(String.getBytes("GB2312"), ISO8859-1)
  • C new String(String.getBytes("ISO8859-1"))
  • D new String(String.getBytes("GB2312"))

解析

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

得到的是以charsetName编码得到的byte数组;

1
byte [  ]  String.getBytes(String charsetName);

String的构造函数有:

1
String(byte[] bytes, String charsetName);

考点7

对于以下代码段,4个输出语句中输出true的个数是( )。

1
2
3
4
5
6
7
8
9
class A{}
class B extends A{}
class C extends A{}
class D extends B{}
A obj = new D();
System.out.println(obj instanceof B);
System.out.println(obj instanceof C);
System.out.println(obj instanceof D);
System.out.println(obj instanceof A);
  • A 1
  • B 2
  • C 3
  • D 4

解析

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

a instanceof A;表示的是a指向的实际对象,是否是A类或者A的子类的实例。

1
A obj = new D();

这里obj指向的实际对象类型为D

1
obj instanceof B

obj是B的子类D的实例,true

1
obj instanceof D

obj是D对象的实例,true

1
obj instanceof A

obj是A类的子类B的子类D的实例,true

总结可以从obj的实际类型D开始,依次向上查找父类,如果在继承链中找到这个类,则返回true。

考点8

关于异常的编程,以下描述错误的是:( )

  • A 在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
  • B int i=Integer.parseInt("123a");将产生NumberFormatException
  • C int a[]=null; a[0]=1; 将产生NullPointerException
  • D 输入输出流编程中,读和写时都要抛出IOException

解析

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

除零异常是运行时异常,不需要显示处理
Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。

1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:

  • ClassCastException(类转换异常)
  • ClassNotFoundException
  • IndexOutOfBoundsException(数组越界异常)
  • NullPointerException(空指针异常)
  • ArrayStoreException(数组存储异常,即数组存储类型不一致)
  • 除零异常
  • 还有IO操作的BufferOverflowException异常

2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:

  • IOException
  • SqlException

考点9

关于java集合下列说法不正确的有哪些()

  • A HashSet 它是线程安全的,不允许存储相同的对象
  • B ConcurrentHashMap 它是线程安全的,其中存储的键对象可以重复,值对象不能重复
  • C Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用
  • D ArrayList线程安全的,允许存放重复对象

解析

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

线程安全(Thread-safe)的集合对象:

  • Vector 线程安全:
  • HashTable 线程安全:

非线程安全的集合对象:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet
  • TreeMap
  • TreeSet

StringBuffer线程安全
StringBulider线程不安全