龙空技术网

奇安信 | Linux软件开发笔试详解

嵌入式工作室 51

前言:

此时看官们对“先序遍历abcdefghi算法”大约比较珍视,同学们都需要剖析一些“先序遍历abcdefghi算法”的相关知识。那么小编在网摘上搜集了一些关于“先序遍历abcdefghi算法””的相关内容,希望各位老铁们能喜欢,兄弟们一起来了解一下吧!

下列有关 const 限定符说法错误的是:

A、可以将一个非 const 对象的地址赋值给一个指向 const 对象的指针。

B、可以将一个非 const 对象的地址赋给一个指向非 const 对象的指针。

C、一个 const 对象不可以被多次赋值。

D、通过 const 对象指针可以改变全局 const 对象内容。

答案:D

题解:

选项A:

int num;const int *p = #

赋值合法!

选项B:

int num;int *p = #

赋值合法!

选项C:const对象只能被初始化一次,不能被赋值。

选项D:

const int g_num;         //全局const对象const int *p = &g_num;   //*p = 1; 错误

const 修饰的是 *p,即指针 p 指向的内容不能修改。

以下程序的输出是:

int var = 100;int main(){    int var = var;    printf("%d\n", var);    return 0;}

A、随机数。

B、100。

C、0。

D、编译失败。

答案:A

题解:

当全局变量遇到局部变量,局部变量的优先级更高;没有初始化的局部变量是随机值;

主函数中定义个局部变量,因为没有初始化,所以是随机值。用var来进行初始化,此时的var就是语句前面定义的var而不是全局变量,所以结果就是随机值。

以下程序在big-endial架构处理器下的输出是:

int i = 1;char *pc = &i;printf("%02x%02x%02x%02x\n", pc[0], pc[1], pc[2], pc[3]);

A、1000。

B、0001。

C、01000000。

D、00000001。

答案:D

题解:

大端字节序:低地址存放高字节。

&i取的是整数 i 第一个字节的地址,即 0x100。

%02x表示输出十六进制,且宽度为 2,前面补 0。

若入栈的顺序为e,f,g,h,则以下不可能的出栈顺序为:

A、e,f,g,h。

B、f,e,h,g。

C、f,h,e,g。

D、g,f,h,e。

答案:C

题解:

选项A:e进栈、出栈,f进栈、出栈,g进栈、出栈,h进栈、出栈;

选项B:e、f进栈,f出栈、e出栈,g、h进栈,h出栈、g出栈;

选项C:e、f进栈,f出栈,g、h进栈,h出栈,此时g为栈顶,e不可能先出栈;

选项D:e、f、g进栈,g、f出栈,h进栈,h、e出栈。

int (*p)[10];

则 p 是一个:

A、数组。

B、指针。

C、函数。

D、其他答案都不对。

答案:B

题解:

p是指针,指向有 10 个元素的数组,每个元素都是整形。

关于Linux的文件操作,下面说法正确的是:

A、一个文件的权限为-rwxr-xr-- ,用数字表示是:754。

B、chown -R root:root dir,可以将dir下所有文件的所有者和所属组变为root。

C、mkdir -p dir,若dir目录已存在,shell命令执行时会报错。

D、chmod u+x file1,会给file1的所有者增加可执行权限。

答案:ABD

题解:

选项A:r表示4,w表示2,x表示1;

选项B:chown用于修改属组和属主,-R表示递归,该命令表示修改目录dir以及dir下所有文件的属主和属组为root;

选项C:-p表示递归创建目录,比如:

mkdir -p /home/xx/yy

如果在home目录下不存在 xx 目录,则先创建 xx 目录,再创建 yy 目录。

选项D:chmod用于修改权限,该命令表示给 file1 的拥有者增加可执行权限。

关于TCP和UDP协议,下面说法正确的是:

A、TCP基于连接,UDP是无连接的。

B、TCP面向报文传输,UDP面向字节流传输。

C、TCP拥有拥塞控制机制,UDP没有。

D、TCP和UDP都支持多对多通信。

答案:AC

题解:

选项B:TCP基于流,UDP基于数据报;

选项C:TCP具有拥塞控制机制,UDP没有;

选项D:TCP不支持多对多通信。

Linux中关于僵尸进程说法正确的是:

A、僵尸进程是由于父进程异常退出造成的。

B、僵尸进程是由于父进程未回收子进程造成的。

C、父进程在创建子进程时,调用2次fork,可以预防僵尸进程。

D、僵尸进程可以使用kill -9杀掉。

答案:B

题解:

所谓僵尸进程,是指进程执行完了已经结束,但是资源没有被回收。如何防止僵尸进程的产生,就是在进程运行结束后,及时回收进程的资源。僵尸进程已经“死了”,无法再用 kill 命令杀死。

char c;以下对c的赋值错误的是:

A、c = "a"。

B、c = 'a'。

C、c = '\086'。

D、c = '\031'。

答案:AC

题解:

选项A:不能把字符串赋值给字符;

选项C:0开头的表示八进制,但是八进制最大数是 7,所以写法错误;

选项D:0开头表示八进制,D选项表示 031 的转义字符。

已知:

int a[4][3] = {1,2,3,4,5,6,7,8,9,10,11,12};int (*ptr)[3] = a;int *p = a[0];

那么值和 a[3][2]相同的表达式是:

A、*(*(ptr + 3) + 2)。

B、*(*(a + 2) + 3)。

C、*((a + 3)[2])。

D、*(p + 11)。

答案:AD

题解:

ptr:表示行的地址,p:表示元素的地址,a:同ptr。

选项A:ptr + 3指向第四行,取值后变成第四行首元素地址,再加2变成第四行第三个元素的地址,取值后就是 a[3][2]。

选项B:a + 2指向第三行,取值后变成第三行首元素地址,再加 3 变成第四行第一个元素地址,取值后就是 a[3][0]。

选项C:a + 3指向第四行,[2]表示向下两行的首元素地址,即第六行首元素地址,取值后就是 a[5][0],元素不存在。

选项D:p指向首行首元素,向后移动 11 个元素再取值,即 a[3][2]。

十一

以下语句可以看作一条语句的是:

A、i++。

B、int a = 0, b = 0, c = 0。

C、for (i = 0; i < 10; i++);。

D、i > 0 ? a = 0, b = 0。

答案:ABCD

题解:

在C/C++中,四条语句的写法都成立。

十二

链表具有的特点是:

A、不必事先估计存储空间。

B、可随机访问任一元素。

C、插入删除不需要移动元素。

D、所需空间与线性表长度成正比。

答案:ACD

题解:

选项A:链表没有长度限制,需要存储数据的时候就申请内存,不必预估空间。

选项B:链表的存储空间不连续,不能像数组一样随机访问,只能通过某个节点(比如头节点)经过多次移动,访问需要的节点。

选项C:插入和删除操作只需要修改节点的指针域,不需要移动元素。

选项D:节点越多,所需的空间越多。

十三

关于二叉树的说法不正确的是:

A、二叉树的度为2。

B、一棵二叉树的度可以小于2。

C、二叉树中至少有一个节点的度为2。

D、二叉树中任何一个节点的度都为2。

答案:ACD

题解:

度:节点的分支个数。

二叉树:指度不大于 2 的树。

十四

已知二叉树的先序遍历结果是 ABCDEF,后序遍历结果为 CDBFEA,那么中序遍历的结果可以是:

A、CBDAEF。

B、DCAEFB。

C、CBDAFE。

D、CBADFE。

答案:AC

题解:

已知先序遍历和中序遍历,可以确定后序遍历;已知后序遍历和中序遍历,可以确定先序遍历;但是已知先序遍历和后续遍历,由于左右孩子不能确定,所以中序遍历不确定。

先序遍历的特点:根出现在最前面;中序遍历的特点:根出现在中间。

选项A:

选项B:中序遍历的顺序:左-根-右,后序遍历的顺序:左-右-根,所以两种遍历方式,第一个元素是相同的,B选项可以直接PASS。

选项C:和选项A表示的是同一个二叉树。

选项D:CB节点是A的左子树,DFE节点是A的右子树,所以在后序遍历的时候,一定是左子树(包含CB,顺序不一定)、右子树(包含DFE,顺序不一定)、根,与后序遍历结果不一致。

十五

以下哪些上下文的切换由CPU来完成:

A、进程上下文切换。

B、线程上下文切换。

C、协程上下文切换。

D、中断上下文切换。

答案:ABD

题解:

协程属于用户空间。

标签: #先序遍历abcdefghi算法 #先序遍历为abc