文档介绍:华为公司软件笔试试卷(C/C++)
一、填空题
1-1、衡量一个算法好坏的度量主要有:时间复杂度、空间复杂度。
1-2、头文件中#ifndef/#define/#endif的作用是:防止头文件被重复引用(宏保护作用)
1-3、在如下的二叉数树中:
请写出前序遍历为:ABDCEGFHI(也称前序周游)
扩展知识:
前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
若二叉树为空则结束返回,否则:
(1)访问根结点
(2)前序遍历左子树
(3)前序遍历右子树
注意的是:遍历左右子树时仍然采用前序遍历方法。
如上图所示二叉树
前序遍历,也叫先根遍历,遍历的顺序是:根,左子树,右子树
遍历结果:ABDECF
中序遍历,也叫中根遍历,顺序是: 左子树,根,右子树
遍历结果:DBEAFC
后序遍历,也叫后根遍历,遍历顺序,左子树,右子树,根
遍历结果:DEBFCA
1-4、以下为32位操作系统下的C 程序,请计算sizeof的值
a)
char str[]=”hello”;
char *p = str;
int n = 10;
请计算:
sizeof { str } =6
sizeof { p } = 4
sizeof { n } = 4
b)
void Func { char str[100]}
{
sizeof { str } =4
}
c)
void *p = malloc { 100}
sizeof {p}=4
二、选择题
2-1、在一种语言中,运算符是从右向左结合的(例如:a+b+c=a+(b+c));下面表达式“7-(16/(3+10*2)-4”的结果是:(C)
A -1 B 1 C 3 D 7 E 9
2-2、某些操作系统把一条命令的执行结果输出给下一条命令,作为它的输入, 并加以处理,这种机制称为A,使命令执行的结果不在屏幕上显示, 而引入另外一个文件,这种机制称为B。使命令所需要的处理信息不从键盘接收,而取自另一个文件,这种机制称为C。操作系统不从键盘逐条接收命令,而调用一个正文文件,执行其中保存的一系列命令,这种方式属于D方式,编写这样的文件应符合E 的语法规则。E
A:1)链接 2)管道(线) 3)输入重新定向 4)输出重新定向
B:1)清屏 2) 屏蔽显示 3)输入重新定向 4)管道(线)
C:1)输入重新定向 2)读保护 3)管道(线) 4)批处理
D:1)系统生成 2) 初始装入 3)批处理 4)管道(线)
E:1)会话语言 2)交互语言 3)机器语言 4)命令语言
2-3、线程和进程最主要的区别在于:(D)
A:进程是UNIX下的概念,线程是Windows下的概念
B:进程的效率比线程低
C:在进程中可以创造线程,但线程中不能生成进程
D:进程由自己独立的运行空间,线程的运行空间是共享的。
知识扩展:
线程是比进程更小的处理模块。
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
2-4、对栈S进行下列操作:push(1),push(2),pop(),pop()。则此时栈顶元素是:(D)
A: 1 B: 2 C: 0 D:不确定
扩展知识:
堆栈的操作规则是先进后出,即FIFO。
堆栈有两种基本操作,对应有两条基本指令