3.6测试复盘
-
哈夫曼树、平衡二叉树都是数据的逻辑结构(√)
-
T(n)=O(f(n))中,函数O()的正确含义为()
A. T(n)为f(n)的函数
B. T(n)为n的函数
C. 存在足够大的正整数M,使得T(n)≤M×f(n)答案:C
-
类中声明的变量有默认初始值;
方法中声明的变量没有默认初始值,必须在定义时初始化,否则在访问该变量时会出错。 -
java中下面哪个能创建并启动线程()
public class MyRunnable implements Runnable {
public void run() {
//some code here
}
}
```
A. new Runnable(MyRunnable).start()
B. new Thread(MyRunnable).run()
C. new Thread(new MyRunnable()).start()
D. new MyRunnable().start()
**解析:实例化线程:
1、如果是扩展java.lang.Thread类的线程,则直接new即可。
2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法
启动线程: 在线程的Thread对象上调用start()方法**
答案:C
- list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()
```cpp
Iterator it = list.iterator();
int index = 0;
while (it.hasNext())
{
Object obj = it.next();
if (needDelete(obj)) //needDelete返回boolean,决定是否要删除
{
//todo delete
}
index ++;
}
```
A. it.remove();
B. list.remove(obj);
C. list.remove(index);
D. list.remove(obj,index);
**解析:Iterator 支持从原集合中安全地删除对象,只需在 Iterator 上调用 remove() 即可。这样做的好处是可以避免 ConcurrentModifiedException ,当打开 Iterator 迭代集合时,同时又在对集合进行修改。**
答案:A
- flush()函数强制将缓冲区中的字符流、字节流等输出,目的是如果输出流输出到缓冲区完成后,缓冲区并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()。
- 在开发中使用泛型取代非泛型的数据类型(比如用ArrayList<String>取代ArrayList),程序的运行时性能会变得更好。(×)
**解析:泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的.**
- 下列哪个说法是正确的()
A. ConcurrentHashMap使用synchronized关键字保证线程安全
B. HashMap实现了Collction接口
C. Array.asList方法返回java.util.ArrayList对象
D.SimpleDateFormat是线程不安全的
**解析:A选项中,ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。**
答案:D
- 树的先序对应二叉树的先序
树的后序对应二叉树的中序
- 设F是一个森林,B是由F变换得到的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有(**n+1**)个
- 下列数据结构具有记忆功能的是?
A. 队列
B. 循环队列
C. 栈
D. 顺序表
**解析:栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用**
答案:C
- 在因特网电子邮件系统中,电子邮件应用程序发送邮件通常使用**SMTP协议**,而接收邮件通常使用**POP3协议**。
- 在网络分各个节点上,为了顺利实现OSI模型中国同一层次的功能,必须共同遵守的规则,叫做**协议**。