作者
Lee
试题来自牛客网。
一
下面程序的执行结果是()
charch[]="abcd",*pch;pch=ch;printf("%c\n",*pch+5);
A、f
B、0
C、\0
D、SegmentationFault
答案:A
题解:
pch是指针,指向字符数组ch的第一个元素‘a’。
*pch+5,先计算*pch,即字符‘a’,对字符‘a’加五,得到字符‘f’。
二
下面程序的执行结果是()
inti=0;voidfunc(inti){printf("%d",i++);}intmain(){func(i);printf("%d\n",i++);return0;}
A、01
B、00
C、12
D、11
答案:B
题解:
后置++的运算规则:先执行语句(输出),然后i的值再加一;
当全局变量遇上局部变量,局部变量优先级更高。
程序第二行的i是形参,属于局部变量,保存的值是0(第九行传过来的)。所以printf输出的是局部变量i的值,并且自增操作也是针对局部变量i,没有影响全局变量i的值。
用一篇文章搞懂++--
三
若有以下类型的
chara=5;intb=10;floatc=22;doubled=18;longlonge=15;
则表达式a*b+c-d-e的类型为()
A、float
B、int
C、longlong
D、double
答案:D
题解:
混合运算的规则:系统会默认把类型转换成表示范围大的类型。比如int和char一起运算,系统默认把char转换成int。
题目中double表示的范围最大。
四
下面程序的执行结果是()
intmain(intargc,char*argv[]){charstr[][10]={"China","Beijing"},*p=str;printf("%s\n",p+10);return0;}
A、China
B、Beijing
C、ng
D、ing
答案:B
题解:
char*p=str;
这行代码的赋值有问题。str是二维数组数组名,也是数组首行的地址,可以理解成是"China"这个一维数组的地址,即数组的地址。如果要用指针来保存该地址,应该是数组指针:
char(*p)[10]=str;
这样写比较合适。
题目中强行赋值,编译器会把第一个字符‘C’的地址赋值给指针p。p+10变成了字符‘B’的地址,所以输出的结果是“Beijing”
五
voidfunc(){staticintval;}
变量val的内存地址位于()
A、data
B、Bss
C、堆
D、栈
答案:B
题解:
C语言内存分配:
数据段(data):存放初始化的全局变量,属于静态数据区;
BSS段:存放未初始化的全局变量,属于静态数区;
堆:用户通过malloc等函数申请的内存;
栈:存放局部变量、形参。
val属于未初始化的静态变量。
六
关于Http状态码,下面说法正确的是?()
A、2xx表示成功
B、3xx表示客户端采取进一步的操作才能完成请求
C、4xx表示服务器错误
D、5xx表示客户端错误
答案:A
题解:
七
监听下面哪些端口,需要root权限?()
A、80
B、
C、
D、
答案:AD
题解:
Linux系统中,监听以下的端口需要root权限。以下的端口为特定应用程序所用。比如80用于HTTP协议,用于HTTPS协议。
八
下面哪些命令可以查看磁盘IO状况?()
A、vmstat
B、iostat
C、iftop
D、sar
答案:AB
题解:
vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
iftop是类似于top的实时流量监控工具。
sar(SystemActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等
九
对于进程间通信的匿名管道,下面说法正确的是?()
A、支持双向数据流
B、只支持单向数据流
C、只可用于有亲缘关系的进程之间
D、以一种特殊设备文件形式存在于文件系统中
答案:BC
题解:
管道有两种:无名管道和有名管道,无名管道适用于有血缘关系的进程(比如父子孙进程);有名管道适用于任意两个进程,有名管道以文件的形式存放在磁盘上。
管道都是单向的,进程从管道的一端写入数据,从另一端读取数据。
十
关于UTF-8编码,下面说法正确的是?()
A、可以向下兼容ASCII编码
B、固定使用4个字节表示
C、与字节顺序无关
D、与unicode是相互替代关系
答案:A
题解:
在UTF-8中,可以使用2字节来表示一个字符,格式为:xxxxx10xxxxxx也可以使用3字节来表示一个字符,格式为:
1xxxx10xxxxxx10xxxxxx甚至也可以使用4个字节来表示,格式为:
11xxx10xxxxxx10xxxxxx10xxxxxxUnicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
十一
在Linux系统中,获取帮助信息的命令是()
A、help
B、man
C、cat
D、display
答案:B
题解:
man手册可以查看命令、函数的信息。
man1ls//查看命令man2open//查看系统调用man3strcpy//查看库函数
十二
若一个系统内存有64MB,处理器是32位地址,则它的虚拟地址空间为多少字节?()
A、2G
B、4G
C、K
D、64M
答案:B
题解:
32为的操作系统,虚拟地址空间大小都是4G,和物理内存大小没有关系。
十三
设栈S的初始状态为空,元素a,b,c,d,e,f,g依次入栈,以下出栈序列不可能出现的是?()
A、abcedfg
B、bcafegd
C、aedcbfg
D、gefdcba
答案:D
题解:
选项D:因为g最先出栈,所以只能是所有元素按顺序进栈,g变成栈顶。那么e不可能先于f出栈。
十四
完全二叉树的结点个数为4*N+3,则它的叶结点个数为()
A、2*N+2
B、2*N
C、2*N-1
D、2*N+1
答案:A
题解:
具有M个节点的完全二叉树,叶子节点数为:
(N+1)/2;
十五
按照二叉树的定义,具有3个结点的二叉树有()种。
A、3
B、4
C、5
D、6
答案:C
题解:
十六
下列叙述中,正确的是()
A、线性表的线性存储结构优于链表存储结构
B、队列的操作方式是先进后出
C、栈的操作方式是先进先出
D、二维数组是指它的每个数据元素为一个线性表的线性表
答案:D
题解:
选项A:线性存储结构容量有限,插入效率低,使用场景很少。
选项B:队列的特点,先进先出
选项C:栈的特点,先进后出
十七
关于指针以下说法错误的是()
A、指针为物理内存的地址
B、程序A向0x7fffff0a地址写入,程序B可以从这个地址读取该值
C、栈变量指针堆变量指针
D、堆变量指针栈变量指针
答案:ABD
题解:
选项A:C语言里面使用的内存都是虚拟内存,为了保护操作系统,在用户态无法直接操作物理地址。
选项B:每个进程都有自己的独立的地址空间,一个进程无法访问另一个进程的地址空间。
选项D:虚拟内存地址分配,从低地址到高地址依次为:代码段、数据段、BSS段、堆、栈。
十八
C语言中为合法的标识符的是()
A、RB
B、Abc
C、foo-func
D、a8bc
答案:BD
十九
以下说法正确的是()
A、static局部变量只被初始化一次,下一次依据上一次结果值
B、static全局变量只初始化一次,防止在其他文件单元中被使用
C、static函数只在当前源文件中被使用
D、对于可在当前源文件以外使用的函数,应该在一个头文件中声明
答案:ABCD
题解:
static关键字在C语言中的作用:
修饰全局变量,改变变量的作用域,该变量只能在本文件中被使用,不能在其他文件中使用;
修饰函数,改变函数的作用域,使函数只能在本文件中被调用,不能在其他文件中调用;
修饰局部变量,改变变量的存储方式,使变量存放在静态数据区,函数调用完并不会被释放。
二十
以下关于符号连接与硬连接的说法,正确的是()
A、创建符号连接时,将创建一个inode
B、创建硬连接时,将创建一个inode
C、删除符号连接源文件后,连接文件还可继续访问
D、删除硬连接源文件后,连接文件还可继续访问
答案:AD
题解:
inode:存放文件元信息的区域,比如文件的作者、大小、创建日期。
符号链接只是记录了源文件的路径,不会创建inode。
硬链接相当于是给文件起了多个名字,每个硬链接都会有一个inode。
删除符号链接的源文件,没有了inode就找不到文件在哪。但是如果删除了硬链接的源文件,通过其他硬链接的inode还能找到文件在哪(虽然是删除,但是磁盘并不会把内容擦掉)。
预览时标签不可点收录于话题#个上一篇下一篇