应用程序PING发出的是什么报文(C)
A.TCP请求报文
B.TCP应答报文
C.ICMP请求报文
D.ICMP应答报文
语法分析器可以用于(C)
A.识别语义错误
B.识别语法和语义错误
C.识别语法错误
D.识别并修正语法,语义错误
解释:语法分析器通常是作为编译器或解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单片语组成的资料结构
IPV6地址包含多少位()
A.16
B.32
C.64
D.128
解释:IPv6的128位地址通常写成8组,每组为四个十六进制数的形式。比如:
AD80:0000:0000:0000:ABAA:0000:00C2:0002 是一个合法的IPv6地址。
如果在一个建立了TCP连接的socket上调用recv函数,返回值为0,则表示(B)
A.对端发送了一段长度为0的数据
B.对端关闭了连接
C.还没有收到对端数据
D.连接发生错误
解释:recv返回0的唯一条件就是对端关闭了连接
在socket可读的情况下,当有异常发生的时候,read返回-1
以下哪些不是内核对象(D)
A.进程
B.线程
C.互斥器
D.临界区
解释:临界区是资源对象,只能被一个进程访问
同一进程下的多个线程可以共享哪一种资源(B)
A.stack
B.data section
C.register set
D.thread ID
解释:线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。
对于Linux说法,下列说法正确的是()
A.线性访问内存非法时,当前线程会进入信号处理函数
B.用mv命令移动文件时,文件的修改时间会发生变化
C.ulimit -c设置的是函数调用栈的大小
D.malloc函数是应用程序向操作系统申请内存的接口
B.不会改变
C.ulimit用于shell启动进程所占用的资源.-c size:设置core文件的最大值.单位:blocks
在c++中,
const int i = 0; int *j = (int *) &i; *j = 1; printf("%d,%d", i, *j)
输出是多少?(A)
A.0,1
B.1,1
C.1,0
D.0,0
解释:const修饰的常量值具有不可变性,c++编译器通常会对该变量做优化处理,在编译时变量i的值为已知的,编译器直接将printf输出的变量i替换为0。尽管如此,编译器仍然会为变量i分配存储空间,通过修改内存的hack方式将变量i在内存中的值修改后并不影响printf的输出。
gcc不会对此进行优化,所以如果用gcc来编译,输出就是1,1
struct Date { char a; int b; int64_t c; char d; };
Date data[2][10]; 在32位系统上,如果Data的地址是x,那么data[1][5].c的地址是(C)
A.X+195
B.X+365
C.X+368
D.X+215
解释:
struct Date {
char a;//起始位置0
int b;//起始位置4
int64_t c;//起始位置8
char d;//起始位置16,
//考虑成员中自身对齐值最大的那个值是8. 16不是8的倍数,所以这个sturct的size是24.
};
data[1][5]与data[0][0]相隔15个元素,data[1][5].c的地址是x+24*15+(4+4) = 368
快速排序算法在序列已经有序的情况下的复杂度为(B)
A.O(nlogn)
B.O(n^2)
C.O(n)
D.O(n^2 logn)
有序的情况是O(n2);无序的情况是O(nlog2n)