搜狗笔试题(JAVA研发岗)

一、多选题

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


 

 

 

 

你可能感兴趣的:(校招笔试,校招笔试)