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

Posted cynchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2014年腾讯实习生笔试题解析相关的知识,希望对你有一定的参考价值。

本答案是我自己搜索资料解答出来,假设不正确敬请指出

1、 使用深度优先算法遍历下图。遍历的顺序为(C)
技术分享
A ABCDEFG B ABDCFEG
C ABDECFG D 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

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

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

  3. 二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点(D)
    A BC B AC C DF D CF

解析:
首先依据后序遍历和中序遍历画出该二叉树
技术分享
然后先序线索化二叉树。也就是先序遍历该二叉树,仅仅只是在遍历的时候每一个节点要记录前继和后继(也就是在遍历该节点之前遍历了哪个节点,之后应该遍历哪个节点),E节点的前继是C。后继是F,所以答案选D

  1. 线性结构的是(ABC)
    A 串 B 链式存储栈 C顺序存储栈 D 顺序存储二叉树
    解析:
    经常使用的线性结构有:线性表。栈。队列,双队列,数组,串。


    常见的非线性结构有:二维数组。多维数组,广义表,树(二叉树等),图(网等)
    故答案选ABC

  2. Linux命令是哪些(ABD)
    A ls B mkdir Cmagnify D man
    解析:
    ls命令显示当前文件夹的内容
    mkdir命令创建新的文件夹
    man命令查看一些不熟悉的命令的用法,还能够用来查询系统库文件
    C不是linux的命令。是dos下的命令

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

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

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

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

  3. 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。

  4. a 是二维数组。a[i][j]的指针訪问方式为:(B)
    A (a+i+j) B ((a+i)+j) C (a+i)+j D *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
解析:
此题easy误选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 分配内存,然后返回这块内存的首地址。放入栈中

15 进程A读取B进程中的某个变量(非共享内存)。可行的方式(AC)
A 进程向消息队列写入一个包括变量内容的消息,B进程从队列中读出
B 通过本地环路通信
C 假设A、B 非亲属。那么A通过命名管道把这个变量的地址发给B进程
D 假设 B是A 进程。那么B直接读取变量内容就可以
解析:
进程间通信方式:管道(PIPE)和有名管道(FIFO),信号(signal),消息队列(Message Queue),共享内存(sharememory),信号量,套接字(socket)
B选项本地环路通信属于网络中通信方式,D选项不能直接读取变量内容,能够通过管道方式进行父亲和儿子通信。

16 使用 send发送大量小的数据包,说法正确的是(ABCD)
A 带宽利用率低 B 网卡吞吐非常高 C 网卡中断频繁 D 进程上下文切换频繁
解析:
当使用TCP传输小型数据包时,程序的设计是相当重要的。

假设在设计方案中不正确TCP数据包的延迟应答。Nagle算法。Winsock缓冲作用引起重视。将会严重影响程序的性能,假设数据片段不须要紧急传输的话,应用程序应该将他们拼接成更大的数据块,再调用Send。
直接调用send的话会出现ABCD几种问题

17 TCP的握手与分手 可能出现的情形是(ABD)
A 握手须要3次通信
B 分手须要进行4次通信
C Fin和ACK 在同一包里
D ACK 和SYN 在同一包里
解析:
考察TCP的三次握手和四次分手
TCP是主机对主机层的传输控制协议,提供可靠的连接服务。採用三次握手确认建立一个连接,因为TCP连接是全双工的,因此每一个方向都必须单独进行关闭,关闭须要四次,AB对

服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它能够把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。

但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你全部的数据都全部发送给对方了。所以你能够未必会立即会关闭SOCKET,也即你可能还须要发送一些数据给对方之后,再发送FIN报文给对方来表示你允许如今能够关闭连接了。所以它这里的ACK报文和FIN报文多数情况下都是分开发送的,C错,D对,因此答案选ABD

  1. 和16题 一样。

    。。

    。。

  2. 新窗体打开网页,以下哪个(B)
    A _self B _blank C _top D _parent
    解析:
    要想页面上全部的链接都在新窗体中打开。在页面中增加:



    _blank是最常见的链接方式。表示超链接的目标地址在新建窗体中打开。


    故答案选B

20.二进制数01011011转化为十进制为(B)
A 103 B 91 C 171 D 71
解析:
从右向左转换:2^0+2^1+2^3+2^4+2^6 = 91;
21 版本号控制软件是哪些(BC)
A bugzilla B subversion C Git D loadrunner
解析:
Loadrunner: 压力測试工具
bugzilla :追踪系统的软件,专门为Unix而定制
故选BC
22 Select A,B from Table1 where A between60 and 100 order by B,以下哪些优化sql性能(C)
A 字段A 建立hash索引。字段B btree索引
B 字段A 建立hash索引,字段B不建立索引
C字段A 建立btree索引。字段B不建立索引
D 字段A 不建立 索引。字段B建立btree索引

解析:
哈希索引固然效率高,但不能基于范围
数据库内部採用的是B-Tree结构方便查询一个区间段的值。适合进行区间索引
选C
23 数据索引的正确是(ABD)
A 1个表仅仅能有一个聚族索引,多个非聚族索引
B 字符串模糊查询不适合索引
C 哈希索引有利于查询字段用于大小范围的比較查询
D 多余的索引字段会减少性能
解析:
哈希索引固然效率高。但不能基于范围,C错

24 CPU与外设的数据传输的方式是(ABCD)
A 程序方式 B中断 C DMA D 通道方式
解析:CPU与外设之间数据传送都是通过内存实现的,外围设备和内存之间的经常使用数据传送控制方式有四种
(1)程序直接控制方式:就是由用户进程直接控制内存或CPU和外围设备之间的信息传送。

这样的方式控制者都是用户进程。
(2)中断控制方式:被用来控制外围设备和内存与CPU之间的数据传送。这样的方式要求CPU与设备(或控制器)之间有相应的中断请求线,并且在设备控制器的控制状态寄存器的相应的中断允许位
(3)DMA方式:又称直接存取方式。其基本思想是在外围设备和内存之间开辟直接的数据交换通道。
(4)通道方式:与DMA方式相相似,也是一种以内存为中心。实现设备和内存直接交换数据的控制方式。与之不同的是,在DMA方
故ABCD都对

25 式子7*15=133成立,则用的是几进制(C)
A 6 B 7 C 8 D 9

解析:
若是6进制或者7进制的话不可能存在数字7,排除A。B
D带进去算不正确
若是8进制。15用十进制表示就是13。7*13 = 91,133用十进制表示的话是91,故选C











































































































































以上是关于2014年腾讯实习生笔试题解析的主要内容,如果未能解决你的问题,请参考以下文章

腾讯2015实习生-客户端笔试题目解析

腾讯2017暑期实习生笔试题解题答案汇总

腾讯2017暑假实习生 - 软件开发类笔试

腾讯实习笔试编程题 满二叉搜索树求三个节点的最低公共祖先

腾讯2016实习生编程题 打印蛇形二维数组

笔试题81. 腾讯2017暑期实习生笔试题