完美世界实习生笔试题-2016年

一、单项选择题

1、print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()

 A、const void print();

 B、void const print();

 C、void print() const;

 D、void print(const);

2、下列对于宏的描述,不正确的是:()

 A、宏会带来性能的缺失

 B、宏不进行类型检查

 C、宏可以做到函数无法做到的功能

 D、编译时宏的处理早于函数

3、四个平面最多把三维空间分成几个部分?()

 A、15

 B、14

 C、13

 D、16

4、下面3段程序代码的效果一样吗()

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

 A、(2)=(3)

 B、(1)=(3)

 C、(1)=(2)

 D、都不一样

 E、都一样

5、师徒四人西天取经,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗而他们只有一支手电筒,一次同时最多可以有两个人一起经过桥。而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒不能用丢的方式来传递,四个人的步行速度各不同,若两人同行则以较慢者的速度为准,大师兄需花1分钟过桥,二师兄需花2分钟过桥,三师兄需花5分钟过桥,师傅需花10分钟过桥。请问他们最短在多少分钟内过桥?()

 A、18

 B、17

 C、19

 D、16

6、查看下面两段代码()

(1)
class classA {...};
class classB
{
public:
    classB(classA a) {mA = a;}
private:
    classA mA;
};
(2)
class classA {...};
class classB
{
public:
    classB(classA a): mA(a) {}
private:
    classA mA;
};

 A、两种方法产生的结果和效率完全相同

 B、通常情况下(2)的效率更高

 C、通常情况下(1)的效率更高

 D、两种调用方法会产生不同的结果

7、对于int* pa[5];的描述,以下哪个选项是正确的()

 A、pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针;

 B、pa是一个指向数组的指针,所指向的数组是5个int类型的元素;

 C、pa[5]表示某个数的第5个元素的值;

 D、pa是一个指向某个数组中第5个元素的指针,该元素是int类型的变量

8、C++中32位单精度浮点数能表示的十进制有效数字是多少位?()

 A、9

 B、6

 C、7

 D、8

9、下面哪一种算法不是图像空间的消隐算法()

 A、画家算法

 B、Z-buffer算法

 C、可见面光线追踪算法

 D、区间扫描线算法

10、short a[10] = {0};sizeof(a)返回:()

 A、2

 B、20

 C、4

 D、10

11、使用下列二位图形变换矩阵将产生的变换结果为()

 

 A、以Y轴为对称轴的反射图形

 B、以Y=X为对称轴的反射图形

 C、绕原点旋转180度

 D、以X轴为对称轴的反射图形

12、对于protected成员,下面说法错误的是:()

 A、基类可以访问从所有派生类造型(cast)成基类对象的protected成员

 B、从派生类继承的子类里可以访问基类的protected成员

 C、派生类可以定义一个同名的非protected成员

 D、派生类可以访问基类对象的protected成员

13、当一个类对象的生命周期结束后,关于调用析构函数的描述正确的是:()

 A、如果派生类没有定义析构函数,则只调用基类的析构函数

 B、如果基类没有定义析构函数,则只调用派生类的析构函数

 C、先调用派生类的析构函数,后调用基类的析构函数

 D、先调用基类的析构函数,后调用派生类的析构函数

14、以下哪种STL容器中的对象是连续存储的:()

 A、list

 B、vector

 C、map

 D、set

15、一个栈的入栈序列是A、B、C、D、E,则栈的不可能输出序列是:()

 A、DCEAB

 B、ABCDE

 C、EDCBA

 D、DECBA

16、有四个整数a、b、c、d,且c > d,则“a > b”是“a - c > b - d”的:()

 A、必要不充分条件

 B、充分不必要条件

 C、充要条件

 D、既不充分也不必要条件

17、下列情况中,不会调用拷贝构造函数的是()

 A、用一个对象去初始化同一个类的另一个新对象时

 B、将类的一个对象赋值给该类的另一个对象时

 C、函数的形参对象,调用函数进行形参和实参结合时

 D、函数的返回值是类的对象,函数执行返回调用时

18、以下GPU缓冲区中哪个是深度缓冲区:()

 A、frame buffer

 B、z buffer

 C、color buffer

 D、stencil buffer

19、假设下面的函数foo会被多线程调用,那么让i、j、k三个变量哪些因为线程间共享访问需要加锁保护()

int i = 0;
void foo()
{
    static int j = 0;
    int k = 0;
    i++; j++; k++;
}

 A、i和j

 B、i,j,k都需要

 C、i

 D、j和k

20、给定n个节点的二叉搜索树,每个节点的值是整数。给定一个整数,在树中找出与该整数最接近的节点的最小算法复杂度是()

 A、O(logn)

 B、O(n^2)

 C、O(nlogn)

 D、O(n)

二、编程题

21、给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)
例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},长度为6。

22、小萌是个WOW发烧友,每天都痴迷于他的法师号。精诚所至金石为开,小萌穿越到WOW的世界中了...

初来乍到的小萌在暴风城的小巷中,遇见了一位善良的德鲁伊。德鲁伊听了小萌的故事,打算帮助他在WOW这个世界好好活下去,于是,把自己的东西都给了小萌了...

德鲁伊的东西太多了,于是小萌去拍卖行买了几个包裹,一切妥当之后,小萌开始把东西装进包裹里。

不过,因为小萌穿越时候脑袋先着地,所以脑子不好用,每次他拿起一个物品,要不装进包里,要不就直接扔掉...

而且,一个背包一旦不往里装东西,小萌就会封上口不再用...

现在,告诉你小萌每个物品的体积,背包的个数和容量,以及小萌拿物品的顺序,你要帮助小萌求出他能拿走多少东西。


参考答案

1、C    2、A    3、A    4、C    5、B    6、B    7、A    8、C    9、D    10、B

11、A    12、A    13、C    14、B    15、A    16、A    17、B    18、B    19、A    20、A

21、参考代码:

#include<iostream>
#include"vector"
using namespace std;
 
int main()
{
    vector<int>result;
    vector<int>result1;
    vector<int>num;
    int T;
    cin >> T;
    while (T--)
    {
        int a;
        cin >> a;
        int n = a;
        while (a--)
        {
            int b;
            cin >> b;
            num.push_back(b);
            result.push_back(1);
        }
        for (int i = 0; i < n; i++)
        {
            result[i] = 1;
            for (int j = i - 1; j >= 0; j--)
            {
                if (num[i]>num[j] && result[i] < (result[j] + 1))
                    result[i] = result[j] + 1;
            }
        }
 
        int max = -1;
        for (int i = 0; i < n; i++)
        {
            if (result[i]>max)
            {
                max = result[i];
            }
        }
                 result.clear();
                num.clear();
        result1.push_back(max);
    }
    for (int i = 0; i < result1.size(); i++)
    {
        cout << result1[i] << endl;
    }
}

22、参考代码:

#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
    int test;
    cin >> test;
    while (test--)
    {
        int dp[25][25][25];
        int n, t, m, a[25];
        cin >> n >> t >> m;
        for (int i = 1; i <= n; i++)
            cin >> a[i];
        memset(dp, 0, sizeof(dp));
        for (int i = 1; i <= m; ++i) // 前i个背包
        {
            for (int j = 1; j <= n; ++j) // 前j件物品
            {
                for (int k = 0; k <= t; ++k) // 容量为k
                {
                    if (k - a[j] >= 0) // 放入
                        dp[i][j][k] = max(max(dp[i][j - 1][k], dp[i][j - 1][k - a[j]] + 1), dp[i - 1][j][t]); 
                    // 放入当前背包
                    else // 丢弃
                        dp[i][j][k] = max(dp[i][j - 1][k], dp[i - 1][j][t]);
                    //cout<<i <<" 个背包. "<<j<<" 件物品. "<<k<<" 容量  "<<dp[i][j][k]<<endl;
                }
            }
        }
        cout << dp[m][n][t] << endl;
    }
    return 0;
}


个人资料
Bingo
等级:9
文章:694篇
访问:38.9w
排名: 1
上一篇: Logistic Regression 模型简介
下一篇:完美世界研发工程师笔试题-2016年
猜你感兴趣的圈子:
完美世界笔试面试圈
标签: 小萌、dp、析构、派生类、过桥、面试题
隐藏