笔试题总结2


下列关于网络编程错误的是?(D)

A.UDP是不可靠服务

B.主动关闭的一端会出现TIME_WAIT状态

C.服务端编程会调用listen(),客户端也可以调用bind()

D.TCP建立和关闭连接都只需要三次握手

E.linux通过提供socket接口来进行网络编程

F.长连接相对短连接可以节省建立连接的时间

解释:D.TCP建立需要3次握手,关闭需要4此握手。无连接的客户端可以调用bind来配置本地信息


Linux系统中某个可执行文件属于root并且有setid,当一个普通用户mike运行这个程序时,产生的进程的有效用户和实际用户分别是A

A.root mike

B.root rooy

C.mike root

D.mike mike

E.deamon mike

F.mike deamon

解释:setuid的用途是允许普通用户完成一些任务,而完成这些任务需要特权和通常被禁止的访问权限。

在实际应用中,通常用来允许普通用户以root用户的角色运行只有root帐号才能运行的程序或命令。

当一个具有setid访问模式的文件被执行时,进程的有效UID将会变成文件所有者的UID,并使用该UID的访问权限来访问其他的文件和资源。

由于可执行文件属于root,因此当程序设置了setid权限位时,普通用户会临时变成root权限,但实际用户任然是原来的mike。


对于基本有序的序列,按照那种排序方式最快:(B)

A.快速排序

B.冒泡排序

C.归并排序

D.基数排序

解释:而当待排序列已基本有序时,对冒泡排序来说是最好情况,对快速排序来说就是最差情况,而堆排序则最好最差都一样。因此本题答案是冒泡排序。


若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是:(B)

A.10

B.11

C.12

D.13

解释:度为0的结点 = 度为2的结点 + 1

在一棵树中,所有点的入度和出度的和相等,下面等式左边为出度,右边为入度(根节点入度为0, 其他节点入度为1)
10 2 + 5 1 = 10 + 5 + x -1

x等于11


上网时候发现网页不能访问,QQ使用正常,出现此问题可能的原因是:B

A.网线问题

B.DNS问题

C.IP地址冲突

D.网关错误

解释:DNS是将域名解析成IP地址的服务。DNS发生问题时无法通过域名访问网页;但是直接通过IP地址连接的应用程序仍可以使用。


二分查找树里查询一个关键字的最坏时间复杂度为(A)。

A.O(n)

B.O(nlogn)

C.O(n^2)

D.O(n^3)

E.O(logn)

F.不确定

解释:二分查找最坏的情况是退化为线性查找,时间复杂度为O(n)


设m和n都是int类型,那么以下for循环语句的执行情况是(A)

for (m = 0, n = -1; n = 0; m++, n++)
     n++;

A.循环体一次也不执行

B.循环体执行一次

C.有限次循环

D.循环结束判断条件不合法

E.运行出错

F.是无限循环

解释:for的条件判断为n = 0,该表达式永远返回0,即for循环不执行。


从逻辑上可以把数据结构分为(C)两大类。

A.动态结构,静态结构

B.顺序结构,链式结构

C.线性结构,非线性结构

D.初等结构,构造型结构

解释:数据结构在存储上(物理上)分为顺序结构和链式结构

在逻辑上分为线性结构(如线性表中的数组,链表)和非线性结构(如:二叉树,图等)


(B)二叉排序树可以得到一个从小到大的有序序列。

A.先序遍历

B.中序遍历

C.后序遍

D.层次遍历

解释:二叉排序树的左子树节点都比该节点小,右子树节点都比该节点打
要得到一个从小到大的有序序列,就要按照 左 中 右的顺序遍历
符合该条件的遍历就是中序遍历


Linux下的进程有哪三种状态?(B)

A.精确态,模糊态和随机态

B.运行态,就绪态和等待态

C.准备态,执行态和退出态

D.手动态,自动态和自由态

解释:
运行状态:这个不用解释了吧,就是正在运行

就绪状态:这个状态等待CPU 时间片的状态,一切准备就绪,随时可以执行,等 CPU 切换到该进程,该进程就会由就绪状态变为运行状态

等待状态:其实就是未就绪状态,还有做一些准备工作或者等待资源


以下关于传输层协议UDP的叙述中正确的(C)

A.比较合适传输小的数据文件

B.提高了高的可靠性

C.提供了高的传输效率

D.使用窗口机制来实现流量控制

A.UDP协议是无连接的,传输效率高,适合传输视频流媒体等大的数据文件

B.UDP无连接特性是降低了可靠性,提高了效率

D.采用窗口机制的协议是TCP


在Bash中,以下哪些说法是正确的(AD)

A.$#表示参数的数量

B.$$表示当前进程的名字

C.$@表示当前进程的pid

D.$?表示前一个命令的返回值

解释:

$# 参数的个数,不包括命令本身.

$$ 目前bash shell的进程编号

$@ 参数本身的列表,也不包括命令本身

$? 上一个命令执行结束后传回值


正则表达式A*B可以匹配(CD)

A.A

B.ACB

C.AB

D.AAB

解释:*表示匹配前一个字符0次或无限次