笔试真题解析 TT-2014 研发笔试题

1 在一个单链表中,若p所指的结点不是最后结点,在p所指结点之后插进s所指结点,则应执行操纵()
【解析】
s->next=p->next;p->next=s

2 在下列排序方法中,不稳定的方法有()
【解析】
不稳定排序的意思是在排序过程中,相等的两个数比较之后不会改变其原来的位置,即不需要交换。
常见的稳定排序有:
冒泡排序,插入排序,归并排序,基数排序。
常见的不稳定排序有:
选择排序,堆排序,希尔排序,快速排序。

笔试真题解析 TT-2014 研发笔试题_第1张图片


3 在多级存储体系中,“Cache-主存”结构的作用是解决( )的题目。
【解析】
存储系统分层方面的内容,“Cache-主存”结构的作用是解决主存与CPU速度不匹配。

4 在需要经常查找结点的先驱与后继的场合中,使用( )比较合适。
【解析】
双向链表

5 带头结点的单链表head为空的判定条件( )
【解析】
head->next==NULL

6 将一个递回算法改为对应的非递回算法时,通常需要使用( )。
【解析】


7 SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现( )功能。
【解析】
控制就是修改表的字段类型,约束,关系。而操作就是INSERT、DELETE、UPDATE数据等。
DDL:数据库模式定义语言,关键字:create
DML:数据操纵语言,关键字:Insert、delete、update
DCL:数据库控制语言 ,关键字:grant、remove
DQL:数据库查询语言,关键字:select
答:数据操纵


8 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( )。
【解析】
树的分支数=度数为2的节点数*2 + 度数为1的节点数
树的分支数 = 树的节点数 - 1
树的节点数 = 度数为1的节点+度数为2的节点 + 度数为0的节点,
该树的度数为1的节点不存在
综合以上三个公式得到答案:2m-1

9 TCP/IP协议栈的网络层的主要功能是通过( )来完成的。
【解析】
网络层是IP协议,TCP协议是传输层。

10 实现不同的作业处理方式(如:批处理、分时处理、实时处理等),主要是基于操纵系统对()治理采取了不同的策略。
【解析】
实现不同的作业处理方式(如批处理、分时处理、实时处理等),主要是基于操作系统对处理机管理采用了不同的策略。


11 下面关于编译系统和解释系统的观点中,错误的是
A.解释程序不产生目标代码,它直接执行源程序或源程序的内部形式
B.使用编译系统时会区分编译阶段和运行阶段
C.一般来说,编译系统的比较复杂,开发和维护费用都大。相反,解释系统比较简单,可移植性好,适合于以交互形式执行程序
D.一般来说,建立在编译基础上的系统在执行速度上要优于建立在解释执行基础上的系统
【解析】
解释程序不产生目标代码,它直接执行源程序或源程序的内部形式是错误的。


12 散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。由于散列函数不是一对一的关系,所以选择好的( )方法是散列文件的关键。
【解析】
(1)选择一个Hash函数,使得每个键字能有一个唯一的地址;
(2)当不同键字具有相同的地址,此时选择一种冲突处理方法至关重要
详见哈希函数文。


13 衡量查找算法效率的主要标准是( )。
【解析】
均匀查找长度。

14 对于#include   <filename.h> 和 #include “filename.h”,以下说法错误的是( )。
A.#include <filename.h>只搜索标准库路径
B.#include “filename.h”只搜索用户工作路径
C.#include <filename.h>搜索范围比#include “filename.h”小
D.两者可能等价
【解析】
#include<>只搜索标准库路径;#include""从当前工作路径开始搜索,然后扩展到标准库路径。
答:B


15 类定义的外部,可以被访问的成员有( )。
A.所有类成员
B.private或protected的类成员
C.public的类成员
D.public或private的类成员
【解析】
public: 公有访问,类外部可访问;
private:私有访问,类本身成员函数可访问;
protected:保护访问,类本身以及派生子类可访问;
这个问题有歧义,外部的友元都可以访问。什么叫类定义外部呢,构造函数能不能在外边写函数体啊,搞不懂这算不算类定义外部!
答:C。

16 中断响应时间是指(  )。
【解析】
意不是中断处理时间,而是响应时间。中断响应时间是指从发出中断请求到进入中断处理所用的时间。


17 TCP/IP模型的体系结构中,ICMP协议属于( )。
【解析】
ICMP协议划分不是很明显,但一般认为是IP协议的一部分,即网络层。ARP协议属于TCP/IP协议簇,而在TCP/IP模型中,所有定义的协议至少是在网际层(或称网络层,IP层)。
答:网络层


18 下列描述的不是链表的优点是( )
A.逻辑上相邻的结点物理上不必邻接
B.插进、删除运算操纵方便,不必移动结点
C.所需存储空间比线性表节省
D.无需事先估计存储空间的大小
【解析】
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。
答:C

19 下列的模板说明中,正确的有( )
A.template <typename T1, typename T2>
B.template <class T1, T2>
C.template <class T1, class T2>
D.template <typename T1; typename T2>
【解析】
AC



20 (  )面向对象程序设计语言不同于其他语言的主要特点。
A.继承性
B.消息传递
C.多态性
D.封装性
【解析】
ACD


21  阅读下列函数说明和C代码,将应填进(n)处的字句写在答题纸的对应栏内。
【说明】设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向先驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0.每当在链表上进行一次L.Locate(x)操纵时,令元素值x的结点的访问频度freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate(int &x)
{
< 结点类型说明 >
*p = first->next;
while (p != first &&   1) p = p->next;
if (p != first)
{
2 ;
< 结点类型说明 >
*current = p;
current->prior->next = current->next;
current->next->prior = current->prior;
p = current->prior;
while (p != first && 3 ) p = p->prior;
current->next = 4 ;
current->prior = p;
p->next->prior = current;
p->next = 5 ;
}
else
printf(“Sorry. Not find!\n”);  \*没找到*\
}
【解析】
题目不难,仔细点就没问题,失误点在2、3。
1 p->data!=x

2 p->freq++

3 current->freq>p->freq

4 p->next

5 current


22 “背包题目”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn,希望从N件物品中选择若干物品,所选物品的重量之和恰能放进该背包,即所选物品的重量之和即是S。递归和非递归解法都能求得“背包题目”的一组解,试写出“背包题目”的非递归解法

【解析】

// 现采用迭代方式实现,之后在对非迭代方式处理
// 算法思想:从根节点 O 出发,经过n个节点到达满二叉树叶子节点
// 第i-1层节点下的左右两个孩子有,左节点表示添加Wi个背包,右节点表示不添加Wi个
// 在节点到达重量S的时候录入容器
Class Solution
{
public:
    vector<vector<int>> Get_Res(int n,int S,vector<int> &w){
        vector<vector<int>> res;
        stack<int> path;        
        myfun(path,res,S,0,w,0,n);
        return res;
    }
    // path 表示添加的路径;
    // res 表示路径集合;
    // wei 当前路径下的重量
    // Level 当前层数
    // 初态下 Level和wei 都是 0 
    void myfun(stack<int> &path,vector<vector<int>> &res,int S,int wei,vector<int> &w,int Level,int n)
    {
        
        if(Level>=n)
        {
            if(S>=wei)
                res.push_back(path);
            if(S<wei)
                res.push_back(path.pop());
            return;
        }
        if(wei>S)
        {
            res.push(path.pop());
        }
        myfun(path,res,S,wei,w,Level+1,n);
        path.push(Level);
        wei = wei+w[Level];
        myfun(path,res,S,wei,w,Level+1,n);
        path.pop();
        wei = wei-w[Level];
    }
};


你可能感兴趣的:(腾讯,研发,笔试,2014,机试)