2014年腾讯实习生笔试题解析

本答案是我自己搜索资料解答出来,如果不对敬请指出

1、 使用深度优先算法遍历下图,遍历的顺序为(C)

A ABCDEFGB ABDCFEG C ABDECFGD ABCDFEG 解析: 深度优先遍历类似于树的前序遍历,其基本思想为: (1).访问顶点v; (2).从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历; (3).重复以上两步; 选C 2. 输入序列ABCABC经过栈操作变成ABCCBA,下面哪些是可能的栈操作( AD) A.push pop push pop push pop pushpush push pop pop pop B.push push push push push push poppop pop pop pop pop C.push push push pop pop pop pushpush pop pop push pop D.push push push push pop pushpop push pop pop pop pop

解析:栈的特点是先进后出, B得到的结果:CBACBA, C得到的结果:CBABAC

下列关键码序列哪些是一个堆( A,D) A. 90 31 53 23 16 48B 90 48 31 53 16 23 C 16 53 23 90 3148D.1631 23 90 53 48 解析: 堆的性质,符合最大堆或者最小堆都行,如果大堆的话所有父节点都必须大于或等于其对应的子节点, 如果小堆的话,所有父节点都必须小于或等于其对应的子节点。 堆是一棵完全二叉树,从上到下画好,进行对比就可以得到答案。 B选项48的左子节点为53,而该堆为大堆,违反其父节点都必须大于或等于其对应的子节点性质 C选项:53右子节点为31,而该堆为小堆,违反其父节点都必须小于或等于其对应的子节点性质

稀疏矩阵压缩的存储方法是:(A,D) A 三元组 B 二维数组 C 散列 D 十字链表 解析: 稀疏矩阵常用表示方法有:三元组,带辅助行向量的二元组,十字链表。 B选项:二维数组经常用来存储稠密矩阵; C选项:散列是能一种快速实现访问的存储方式。通常作为检索部分的数据项是整形或者字符串。

二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点(D) A BCB ACC DFD CF

解析: 首先根据后序遍历和中序遍历画出该二叉树

然后先序线索化二叉树,也就是先序遍历该二叉树,只不过在遍历的时候每个节点要记录前继和后继(也就是在遍历该节点之前遍历了哪个节点,之后应该遍历哪个节点),E节点的前继是C,后继是F,所以答案选D

线性结构的是(ABC) A 串 B 链式存储栈 C顺序存储栈 D 顺序存储二叉树 解析: 常用的线性结构有:线性表,栈,队列,双队列,数组,串。 常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图(网等) 故答案选ABC

Linux命令是哪些(ABD) A ls B mkdirCmagnifyD man 解析: ls命令显示当前目录的内容 mkdir命令创建新的文件夹 man命令查看一些不熟悉的命令的使用方法,还可以用来查询系统库文件 C不是linux的命令,是dos下的命令

Unix系统中,适合任意两个进程通信的是(ACD) A FIFO B PIPE C Message Queue D sharememory 解析:

现在unix使用的进程间通信方式包括:管道(PIPE)和有名管道(FIFO),信号(signal),消息队列(Message Queue),共享内存(sharememory),信号量,套接字(socket) 但是PIPE是匿名管道,匿名管道只能在父子进程中进行通信,不能在任意两个进程中通信。 故选ACD。

Windows系统中,不适合进程通讯的是(A) A 临界区 B 互斥量 C 信号量 D 事件 解析: 这四个选项都是线程同步的实现方法,但互斥量、信号量、事件都可以被跨越进程使用来进行同步数据操作,而临界区只能在进程内部各线程间使用,故选A

下面的内存管理模式中,会产生外零头的是(BD) A 页式 B段式C 请求页式 D 请求段式 解析: 内零头是指进程在向操作系统请求内存分配时,系统满足了进程所需要的内存需求后,还额外还多分了一些内存给该进程,外零头是指内存中存在着一些空闲的内存区域, A选项属于内零头,C选项也属于内零头,所以选BD

Linux执行ls,会引起哪些系统调用(BCD) A nmap B read C execve D fork 解析: shell命令执行机制是 fork+exec execve在父进程中fork一个子进程,在子进程中调用exec函数启动新的程序。exec函数一共有六个,其中execve为内核级系统调用,其他(execl,execle,execlp,execv,execvp)都是调用execve的库函数,而当输入ls命令的时候,命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息,所以系统需要自动调用read函数。而A选项nmap最早是Linux下的网络扫描和嗅探工具包,故选BCD。

a 是二维数组,a[i][j]的指针访问方式为:(B) A (a+i+j) B ((a+i)+j) C (a+i)+jD *a+i+j 解析: a是一个int 类型的指针,表达式(a+i)返回一个int 类型的指针。(a+i)+j还是一个int 类型指针,((a+i)+j) 则是访问该int 类型指针的某个具体值

13 输出以下结果:(B) #define add(a,b) a+b; Intmain() { Printf(“”,3*add(4,7)); } A 33 B 19 C 25 D 49 解析: 此题容易误选A选项,注意宏替换只是简单的替换,3*add(4,7)会被替换成3*4+7,而不是3*(4+7),如果要达到3*(4+7)的效果应该#define add(a,b) (a+b);

14 对于以下代码,char * p= new char[100] (C) A p 和 new出来的内存都在栈上 B p 和 new出来的内存都在堆上 C p在栈上 new出来的在堆上 D p在堆上 new出来的在栈上 解析: new char[100]属于动态分配内存,在堆里面 p属于静态分配内存,在栈里面 char * p= new char[100]的意思是在栈内存中存放了一个指向一块堆内存的指针 p。在程序会先确定在堆中分配内存的大小,然后调用 operator new 分配内存,然后返回这块内存的首地址,放入栈中

并且为之实践了关怀和付出的善举。对于我性情中的易感和怨薄,

2014年腾讯实习生笔试题解析

相关文章:

你感兴趣的文章:

标签云: