Day81_错题集
今天错的题有点多,得好好加油了,多背知识点,加油。路不是白走的,每多熬一个小时,你的工资就多十块钱。加油
先定个小目标:每天做20-30道题把。加油
1、在java中,下列对继承的说法,正确的是( )
子类能继承父类的所有成员
子类可以继承父类所有成员,只是对某些成员具有访问权限(private),访问不了private。
2、It is an important feature of the Java language that it always provides a default constructor to a class.
False
题目:总是为一个类提供了一个默认的构造函数是Java语言的一个重要特性 。
事实上只有在我们没有显示声明任何构造方法时java才会为我们提供一个默认的无参构造函数。
3、以下声明合法的是
public final static native int w( )<==这个是对的,下面三个都是错的 native是方法修饰符
default String s --->>default不能修饰变量
abtract double d ---->>抽象不能修饰常量
abstract final double hyperbolicCosine( ) ---->>抽象方法不能用final,因为抽象就是为了给人重写,加了final不可变,所以是错的。
4、结构型模式中最体现扩展性的模式是()
装饰模式--->>正确答案
合成模式
桥接模式
适配器
a.适配器模式 Adapter
适配器模式是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
两个成熟的类需要通信,但是接口不同,由于开闭原则,我们不能去修改这两个类的接口,所以就需要一个适配器来完成衔接过程。
b.桥接模式 Bridge
桥接模式将抽象部分与它的实现部分分离,是它们都可以独立地变化。它很好的支持了开闭原则和组合锯和复用原则。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这些多角度分离出来让他们独立变化,减少他们之间的耦合。
c.组合模式 Composite
组合模式将对象组合成树形结构以表示部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
d.装饰模式 Decorator
装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,它比生成子类更灵活。也可以这样说,装饰模式把复杂类中的核心职责和装饰功能区分开了,这样既简化了复杂类,有去除了相关类中重复的装饰逻辑。 *装饰模式没有通过继承原有类来扩展功能,但却达到了一样的目的,而且比继承更加灵活,所以可以说装饰模式是继承关系的一种替代方案。*
5、下面有关webservice的描述,错误的是?
Webservice通信机制实质就是json数据交换 --->>正确答案:通信机制实质就是xml数据交换;
Webservice是跨平台,跨语言的远程调用技术
Webservice采用了soap协议(简单对象协议)进行通信
WSDL是用于描述 Web Services 以及如何对它们进行访问
6、下列关于计算机系统和Java编程语言的说法,正确的是()、
在程序中书写注释不会影响程序的执行,可以在必要的地方多写一些注释。
计算机是由硬件、操作系统和软件组成,操作系统是缺一不可的组成部分。 --->> 早期的是嵌入式开发,不需要操作系统之类的。
Java语言编写的程序源代码可以不需要编译直接在硬件上运行。 --->>需要通过编译
Java的集成开发环境(IDE),如Eclipse,是开发Java语言必需的软件工具。---->>第一个hello world是在记事本上敲出来的,所以这个错了。
7、public
interface
IService {String NAME="default"
;}
默认类型等价表示是哪一项:
public static final String NAME="default";
public String NAME="default";
public static String NAME="default";
private String NAME="default";
接口中的变量默认是public static final 的,方法默认是public abstract 的
8、以下哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址( )
String a = "hello"; String b = "hello"; ==>>指向常量池里的"hello"。
Integer a; Integer b = a; ==>> 这里的a是全局变量。
int a = 1; Integer b = new Integer(1); ==>>int a =1;并不指向堆中,它只有值,没有引用地址,Integer b =new Integer(1);指向堆中地址为1的位置。
int a = 1; Integer b = 1; == >>int与Integer的比较,Integer会进行拆箱,拆箱的结果是int型,两个基本数据类型比较,是比较数值而不是内存引用地址。
9、下面这段程序的输出结果是()答案是12136
public class Main {
public static void main(String[] args) {
split(12);
}
public static int split(int number) {
if (number > 1) {
if (number % 2 != 0) System.out.print(split((number + 1) / 2));
System.out.print(split(number / 2));
}
return number;
}
}
我感觉我被绕晕了,在IDEA里面调试得出来是1213612。不知道为什么我的出来最后有个12。
10、This调用语句必须是构造函数中的第一个可执行语句。
错误。
this()才必须是构造函数中的第一个可执行语句,用this调用语句并不需要。
11、String str1 = “abc”,“abc”分配在内存哪个区域?
字符串常量区。
用new创建的对象在堆区
函数中的临时变量在栈区
java中的字符串在字符串常量区
12、下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
byte[] src,dst;
dst=new String(src,"GBK").getBytes("UTF-8")
先通过GBK编码还原字符串,在该字符串正确的基础上得到“UTF-8”所对应的字节串。
以下为错误答案,String就没有decode和encode方法
dst=String.fromBytes(src,"GBK").getBytes("UTF-8")
dst=new String("GBK",src).getBytes()
dst=String.encode(String.decode(src,"GBK")),"UTF-8" )
13、Hashtable 和 HashMap 的区别是:
以下都是正确答案:(多选)
HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
Hashtable 线程安全的,而 HashMap 是线程不安全的
Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
Hashtable:
(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。
(2)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。
(3)HashTable直接使用对象的hashCode。
HashMap:
(1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。
(2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。
(3)HashMap重新计算hash值
14、Java的Daemon线程,setDaemon( )设置必须要?
在start之前
setDaemon()方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。
15、用命令方式运行以下代码的运行结果是()命令: java f a b c
public class f{
public static void main(String[] args){
String foo1 = args[1];
String foo2 = args[2];
String foo3 = args[3];
}
}
程序运行错误
运行java命令,没有T11对应的类,会报找不到或者无法加载主类。
16、线程安全的map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?
Map map = new ConcurrentHashMap();
Map map = Collections.synchronizedMap(new HashMap());
HashMap,TreeMap 未进行同步考虑,是线程不安全的。
HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。
Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,
List list = Collections.synchronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet());