【求职】网易 2018 校招测试开发工程师笔试卷

一、选择题

1.下面关于进程和线程的关系不正确的是?( )

A. 线程是进程的一个实体,可作为系统独立调度和分派的基本单位。

B. 一个进程中多个线程可以并发执行。

C. 线程可以通过相互之间协同来完成进程所要完成的任务。

D. 线程之间不共享进程中的共享变量和部分环境。

2.下述有关虚函数和纯虚函数说法错误的是?( )

A. 被virtual 关键字修饰的成员函数,就是虚函数

B.在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion1()=0

C.同时含有纯虚拟函数的类称为抽象类,它可以被实例化,但是对象不可以调用纯虚函数

D. 使用纯虚函数的意义是在很多情况下,基类本身生成对象是不合情理的

3.下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能。( )

1

2

void perm(int list[], int k, int m)

{

3 if ( )

4

5

6

7

8

9

10

11

{

copy(list,list+m,ostream_iterator(cout," "));

cout<

return;

}

for (int i=k; i<=m; i++)

{

swap(&list[k],&list[i]);

12 ( );

13

14

swap(&list[k],&list[i]);

}

15 }

A. k!=m 和 perm(list,k+1,m)

B. k==m 和 perm(list,k+1,m)

C. k!=m 和 perm(list,k,m)

D. k==m 和 perm(list,k,m)

4.从1000000000000 个数中选择最小的 20 个数,用以下哪种排序算法比较方便?( )

A. 归并排序

B. 插入排序

C. 快速排序

D. 堆排序

5.以下意图哪个是用来描述 OBSERVER(观察者)?( )

A. 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系

B. 将抽象部分与它的实现部分分离,使它们都可以独立地变化

C. 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更

D. 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

6.某单链表中最常用的操作是在最后一个元素之后插入一个元素和删除链表中给定的元素,则下列选项中正确的

是?( )

A. 若仅有头指针,则插入操作及删除操作均是 O(n)的

B. 增加尾指针既能提升插入操作的效率,也能提升删除操作的效率

C. 既有头指针又有尾指针,则插入操作及删除操作均是 O(1)的

D. 既有头指针又有尾指针,则插入操作及删除操作均是 O(n)的

7.将一个整数序列整理为升序,两趟处理后序列变为 10,12,21,9,7,3,4,25,则采用的排序算法可能是?( )

A. 插入排序

B. 选择排序

C. 快速排序

D. 堆排序

8.单链表的每个结点中包括一个指针 next,它指向该结点的后继结点。现要将指针 q 指向的新结点插入到指针 p 指向

的单链表结点之后,下面的操作系列中哪一个是正确的?( )

A. q=p->next;p->next=q->next

B. p=p->next=q->next;p->next

C. q->next=p->next;p->next=q;

D. p->next=1;q->next=p->next

9.哪一个方法不能用于 linux 的进程通信?( )

A. 命名管道

B. 临界区

C. 共享内存

D. 信号量

10.linux 查看系统IP 地址以及网卡流量可以使用以下哪个命令?( )

A.ipconfifig

B. ifconfifig

C. netstat

D. ss

11.截取logfifile 文件中含有suc 的行,并且只输出最后一列,下列操作正确的是?( )

A. grep -o ‘suc’ logfifile | awk ‘{print $0}’

B. grep ‘suc’ logfifile | awk ‘{print $0}’

C. grep ‘suc’ logfifile | awk ‘{print $NF}’

D. grep -o ‘suc’ logfifile | awk ‘{print $NF}’

12.python 函数func1 如下:

def func1(foo):

def __dec():

print “Start…”

foo()

print “End…”

return __dec

func2 函数调用如下:

1

2

3

@func1

def func2():

print “I am python function”

那么 func2 函数正确的输出是?( )

A. Start…\nEnd…

B. I am python function\n

C. Start…\nI am python function\n End…比特职读会

D. Start…\nEnd…\nI am python function

13.对于SQL 语句select * from t where a=100 and b=200,哪个索引可以使用到?( )

A. 索引idx_b(b)

B. 索引 idx_b_a(b,a)

C. 索引 idx_a_b(a,b)

D. 都可以

14.关于Android 广播,下列说法错误的是?( )

A. 广播的注册分静态注册和动态注册

B. 广播分为一般广播sendBroadcast,有序广播 sendOrderBroadcast,和粘性广播sendStickyBroadcast.

C. LocalBroadcastManager 是本地广播,发送的广播只有本 APP 会接收到,其他APP 的广播无法到达通过

LocalBroadcastManager 注册的 Receiver 中

D. 无法禁止其他 app 的广播到达自己的 broadcastReceiver 中

15.针对登陆页面(包含手机号码输入框和密码输入框)的测试用例,下列哪个说法是不正确的?( )

A. 手机号码输入框测试用例里,应包含是否只能输入数字

B. 登陆框和密码框均应包含字母大小写的测试

C. 需要对密码的强度进行测试

D. 不需要对手机号码的长度进行测试

16.关于白盒测试和黑盒测试,下列哪个说法是正确的?( )

A. 白盒测试一般由测试人员执行

B. 黑盒测试着重于测试软件的功能,白盒测试着重于代码

C. 白盒与黑盒是一样的测试方法,只是测试对象不同

D. 黑盒测试可以取代白盒测试

17.关于回归测试,下列哪个说法是正确的?( )

A. 回归测试不需要进行全部用例的再测试

B. 回归测试需要选择所有功能的高级别用例进行测试,并对已发现的 BUG 进行再次测试

C. 回归测试在整个测试周期中,并不是非常的重要

D. 回归测试不需要根据风险程度来测试

18.Java 是一门面向对象的编程语言,下面关键字中能够表示 Java 面向对象的特性是?( )

A. extends, interface

B. volatite, implements

C. abstract, interface

D. static, void

19.定义字符串 String str = “用户 1|用户 2|用户3|用户 4”,现在想要对字符串根据字符“|”进行分割解析,下面哪种

分割方式是正确的?( )

A. str.split(“|”)

B. str.split(“|”)

C. str.split(“|”)

D. str.split(“|”)

20.在多线程编程中我们常常需要考虑到线程安全性,那么在 java 集合中,下面哪些是属于多线程安全的的集合

类?( )

A. HashMap, Vector

B. LinkedList, LinkedHashMap

C. CurrentHashMap, Vector

D. ArrayList, LinkedHashMap

二、编程题

1.彩色的砖块

时间限制:C/C++ 1 秒,其他语言2 秒

空间限制:C/C++ 32M,其他语言64M

小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符

串 s,s 中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻

砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所

对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。) 例如: s = “ABAB”,那么小易有六种排列的结果:

“AABB”,“ABAB”,“ABBA”,“BAAB”,“BABA”,“BBAA” 其中只有"AABB"和"BBAA"满足最多只有一对不同颜色的相邻砖

块。

输入描述:

输入包括一个字符串s,字符串s 的长度length(1 ≤ length ≤ 50),s 中的每一个字符都为一个大写字母(A 到Z)。

输出描述:

输出一个整数,表示小易可以有多少种方式。

输入例子 1:

ABAB

输出例子 1:

2

2.操作序列

时间限制:C/C++ 2 秒,其他语言4 秒

空间限制:C/C++ 32M,其他语言64M

小易有一个长度为 n 的整数序列,a_1,…,a_n。然后考虑在一个空序列 b 上进行 n 次以下操作: 1、将a_i 放入 b 序列的末

尾 2、逆置 b 序列 小易需要你计算输出操作 n 次之后的 b 序列。

输入描述:

输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。

第二行包括n 个整数a_i(1 ≤ a_i ≤ 10^9),即序列a 中的每个整数,以空格分割。

输出描述:

在一行中输出操作n 次之后的b 序列,以空格分割,行末无空格。

输入例子 1:

4

1 2 3 4

输出例子 1:

4 2 1 3

3.堆棋子

时间限制:C/C++ 1 秒,其他语言2 秒

空间限制:C/C++ 32M,其他语言64M

小易将 n 个棋子摆放在一张无限大的棋盘上。第 i 个棋子放在第x[i]行y[i]列。同一个格子允许放置多个棋子。每一次

操作小易可以把一个棋子拿起并将其移动到原格子的上、下、左、右的任意一个格子中。小易想知道要让棋盘上出

现有一个格子中至少有 i(1 ≤ i ≤ n)个棋子所需要的最少操作次数.

输入描述:

输入包括三行,第一行一个整数n(1 ≤ n ≤ 50),表示棋子的个数

第二行为n 个棋子的横坐标x[i](1 ≤ x[i] ≤ 10^9)

第三行为n 个棋子的纵坐标y[i

1 ≤ y[i] ≤ 10^9)

输出描述:

输出n 个整数,第i 个表示棋盘上有一个格子至少有i 个棋子所需要的操作数,以空格分割。行末无空格

如样例所示:

对于1 个棋子: 不需要操作

对于2 个棋子: 将前两个棋子放在(1, 1)中

对于3 个棋子: 将前三个棋子放在(2, 1)中

对于4 个棋子: 将所有棋子都放在(3, 1)中

输入例子 1:

4

1 2 4 9

1 1 1 1

输出例子 1:

0 1 3 10

你可能感兴趣的:(#,职读面经)