一、多选题
1. 如类Worker,请选择可正确终止线程的项()
class Workerextends Thread(){
private boolean isStop = false; //语句(1)
public void run(){
while(!isStop); //语句(2)
}
public void stopWork(){isStop = true;}
public void interruptWork(){super.interrupt();}
}
A. while条件改为!isInterrupted()时调用interrupWork才能结束线程
B. 仅当语句(1)定义添加volatile才可以调用stopWork()正确结束线程
C. 调用interruptWork()能正确结束线程
D. 调用stopWork()能正确结束线程
2. 下列关于集合描述,错误的是()
A. Hashmap中允许null为键,null为值
B. 集合中不可以存储基本数据类型值
C. List、Set、Map继承自Collection接口
D. Vector内部数据结构为数组,Vector是线程不安全的
3. 以下关于Java集合框架的说法正确的是()
A. 对TreeMap进行get/put/remove等操作的时间复杂度是log(n)
B.ConcurrentHashMap可以在Segment和HashEntry两个维度扩容
C. 多线程并发读写HashMap可能会导致系统负载居高不下
D. Iterator对集合可以进行前向遍历和后向遍历
4. 要实现一个全局计数器,以下哪种做法最优?()
A.
class CountC{
private Atomic count = newAtomic(new Integer(0));
public Integer increment(){
return count.getAndIncrement();
}
}
B.
class CountB{
private int count=0;
public int increment(){
return count++;
}
}
C.
class CountC{
private AtomicInteger count = newAtomicinteger(0);
public int increment(){
return count.getAndIncrement();
}
}
D.
class CountD{
private int count=0;
public synchronized int increment(){
return count++;
}
}
5. 在应用中可使用哪些方式进行IPC?()
A. Bundle
B. JCOM
C. ContentProvider
D. AIDL
二、单选题
6. 有一张尺寸为72*72像素的图片,其采用ARGB8888格式存储,现将其置于某应用的drawable-xxhdpi目录中,在屏幕密度为xhdpi的手机上运行此应用。
问:此图片不经过采样直接加载后将占用多少byte内存?()
A. 20736
B. 5184
C. 9216
D. 2304
7. 对于以下java线程池:
ThreadPoolExecutorexecutor = new ThreadPoolExecutor
(5, 10, 60L,TimeUnit.SECONDS, new LinkedBlockingQueue());
说法正确的是()
A. 当工作线程达到5个,如果还有新的任务进来将继续起新的工作线程执行任务
B. 该线程池最多5个线程同时运行
C. 每个工作线程最多存活60s
D. 该线程池不会触发RejectedExecutionHandler机制
8.
private staticfinal List NAMES = new ArrayList () {{
add("Perfect");
System.out.println(NAMES);
}};
这段代码有什么问题:()
A. 不编译
B. 会抛空指针异常
C. 输出不正确的结果
D. 没有问题
9. 以下关于java中synchronized和ReentrantLock区别正确的是()
A. ReentrantLock可以使线程在等待锁的时候响应中断,而synchronized不可以
B. ReentrantLock可以让线程尝试获取锁,并在无法获取锁的时候立即返回或者等待一段时间,而synchronized必须一直等待获取
C. synchronized保证提供公平的加锁机制,而ReentrantLock可以实现不保证公平但是更快的加锁。
D. ReentrantLock是可重入的,而synchronized不可重入
10. 在一次深度学习的研讨会上,Andrew NG出席了这次会议。遗憾的是,在这个会上的学者没有一个是他认识的,而出席会议的其他学者,每个人都认识Andrew NG。其他学者之间,有些是A认识B,B不认识A,也有些事A和B相互都不认识。我们要通过询问学者的方式,找出谁是Andrew NG。询问的时候可以任意找一个人X,问X是否认识Y。假设一共有N位学者出席会议,每次询问算一次操作,请问通过这种询问的方式确定谁是Andrew NG的最优复杂度是()
A. O(N*logN)
B. O(logN)
C. O(N)
D. O(N*N)
11. 按字典序对a~f进行全排列,如下:
abcdef
abcdfe
abcedf
abcefd
......
排第500位的串是?()
A. eadfcb
B. eafcbd
C. eafbcd
D. eafbdc
答案:B
12. 求N位二进制数中1的个数,时间复杂度和空间复杂度最低分别为()
A. O(N), O(N)
B. O(1), O(1)
C. O(log2N),O(1)
D. O(1), O(log2N)
13. 在一个四元树中,度为4的结点个数为1,度为3的结点个数为2,度为2的结点个数为3,度为1的个数为4,则度为0的个数?()
A. 9
B. 11
C. 12
D. 10
14. 查找链表中间元素的时间复杂度最小可以是?()
A. O(n^2)
B. O(2n)
C. O(n)
D. O(1)
15. 中序序列为a,b,c,d的不同二叉树的个数是()
A. 15
B. 14
C. 13
D. 16
16. 现有10w条词,每个词都有对应的词频信息(即一个整数),从中淘汰1w条词频最小的词,下面哪一种数据结构最合适?()
A. 大根堆
B. 队列
C. 栈
D. 小根堆
17. 假设栈初始为空,将中缀表达式 a/b-(c*d+e*f)/g 转化为等价后缀表达式过程中,当扫描到f时,栈中的元素依次为:()
A. /-+*
B. –(+*
C. –(*+
D. /-(*+*
18. 向一个127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素
A. 63.5
B. 63
C. 7
D. 8
19. 两个什么类型的链表合并操作的复杂度是O(1)?
A. 循环双向链表
B. 单向链表
C. 块状链表
D. 双向链表
20. 以下哪个关键字可以禁止成员变量被序列化()
A. transient
B. native
C. strictfp
D. volatile
三、编程题
最终收敛值
时间限制:c/c++语言2000MS;其他语言4000MS
内存限制:c/c++语言65536KB;其他语言589824KB
题目描述
假设a[n]是一个有n个元素的整型数组,定义该数组上的一个操作f(a[n], r),f把a[n] 按步长r映射到另外一个数组b[n], 映射规则如下:
b[i] = MED(a[i],a[(i+1)mod n], a[(i+2)mod n], ..., a[(i+r-1)mod n])。MED指中位数,即获得r个元素中从小到大排在中间的元素(如果r是偶数,取中间两个元素较大的那个)。mod n是指模n的加法,相当于a[n]是一个循环数组。现输入一个数组a[n],和步长初始值r(1<=r<=n),用f对数组a[n]进行反复的迭代映射(映射结果写回a[n]),每迭代一轮步长r增加1,直到最后一轮r=n之后迭代结束。此时数组a[n]中每一个元素必然完全相同,请把这个元素输出。
提示:
除了对性能和正确性的要求,我们还将重点考察代码书写风格
输入:
第一行是数组的长度n,第二行是r的初始值,之后n行每行是一个整数,对应a[n]中一个元素
输出:
最终收敛值
样例输入:
7
5
1
2
3
4
5
6
7
样例输出:
5