习题整理12.22

6.执行以下代码段(程序已包含所有必需的头文件)会输出什么结果。()
习题整理12.22
10.在 C 语言中假如有如下声明:char mark = ‘#’; 则’#’和”#”分别占()内存。
习题整理12.22
解析:单引号只存放一个字节 而双引号可以存放多个
12.transient 变量和下面哪一项有关?
习题整理12.22
解析:java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。和序列化有关,这是一个空接口,起标记作用,具体的序列化由ObjectOutputStream和ObjectInputStream完成。transient修饰的变量不能被序列化,static变量不管加没加transient都不可以被序列化
17.下面程序输出结果为():
习题整理12.22
解析:首先将lx指向“LeXin”的引用赋给了nb,然后lx又指向了“Fenqile”,最后输出nb所指向的内容,所以输出“LeXin”。
19.关于volatile关键字,下列描述不正确的是?
习题整理12.22
解析:一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
volatile只提供了保证访问该变量时,每次都是从内存中读取最新值,并不会使用寄存器缓存该值——每次都会从内存中读取。
而对该变量的修改,volatile并不提供原子性的保证。
由于及时更新,很可能导致另一线程访问最新变量值,无法跳出循环的情况
多线程下计数器必须使用锁保护。

20.Hashtable 和 HashMap 的区别是:
习题整理12.22
解析: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值
Hashtable,HashMap,Properties继承关系如下:
public class Hashtable<K,V> extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable
public class HashMap<K,V>extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
java.lang.Objecct
java.util.Dictionary<K,V>
java.util.Hashtable<Object,Object>
java.util.Properties

上一篇:高薪程序员&面试题精讲系列45之你熟悉ConcurrentHashMap吗?


下一篇:3. Longest Substring Without Repeating Characters