完美世界2017c++游戏开发:笔试题+面试题

笔试题

一 选择题(1分*30)

1 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员必定是基类中的()
A 私有成员 B 公有成员 C 保护成员 D 保护成员或私有成员linux


2 下列程序输出结果是()ios

#include<iostream>
void main(){
int n[][3] = { 10, 20, 30, 40, 50, 60};
int (*p)[3];
p = n;
cout << p[0][0] << "," << *(p[0] + 1) << ", " << (*p)[2] << endl;

A 10, 30, 50 B 10,20,30 C 20,40,60 D 10,30,60c++


3 假定A为一个类,则执行 A a(2) , b[3], *p[4] ;语句时调用构造函数的次数为()
A 3 B 4 C 5 D 9web


4 有关多态不正确的是()
A C++语法的多态性分编译时的多态和运行时的多态
B 编译时的多态性可经过函数重载实现
C 运行时的多态可经过模板和虚函数实现
D 实现运行时多态性的机制成为动态多态性面试


5 已知p一个指向类A数据成员m的指针,a是类A的一个对象,若是要给m复制为5,正确作法是()
A a.p = 5 B a->p = 5 C a.*p = 5 D *a.p = 5算法


6 当一个类的某个函数被说明为virtual时,该函数的在该类的全部派生类中()
A 都是虚函数
B 只有被从新说明的才是虚函数(本人注:此处题有点问题,貌似从新说明,应该是重写)
C 只有被从新说明为virtual时才是虚函数
D 都不是虚函数编程


7 类B是类A的公有派生类, 类A和类B中都定义了虚函数func(), p 是一个指向类A对象的指针,则p->A::func()将()
A 调用类A中的函数
B 调用类B中的函数
C 根据p所指向的对象类型而肯定调用类A中的函数或类B的函数
D 都调用设计模式


8 已知f1 和f2是同一个类中的两个成员函数,可是f1不能直接调用f2,这说明()
A f1和f2都是静态函数
B f1 不是静态函数, f2是静态函数
C f1 是静态函数, f2不是静态函数
D 都不是静态函数安全


9 程序输出结果为()服务器

#define add(a+b) a+b
int main(){
    printf("%d/n", 5*add(3+4));
    return 0;
}

A 23 B 35 C 16 D 19


10 关于数据结构一下说法错误的是()
A 红黑树插入操做的平均时间不复杂度为O(logn), 最坏为O(logn)
B B+树。。。。。。。。。。。。。。。O(logn),。。。O(logn)
C Hash。。。。。。。。。。。。。。。O(logn),。。。O(n)
D 排序链表。。。。。。。。。。。。。O(n),。。。。。O(n)


11 有六个元素6,5,4,3,2,1顺序进栈,不合法的出栈顺序是()
A 5 4 3 6 2 1 B 4 5 3 1 2 6
C 3 4 6 5 2 1 D 2 3 4 1 5 6


12 36匹马,现有6个赛道,须要多少次比赛能够选出第一二三名()
A 7 B 8 C 9 D 12


13 下列语句正确的是()
A int a, &ra = a, &&ref = ra
B int &rafa[10]
C int a,&ra = a, &*refp = &ra
D int *pf, *&pref = pi


14 一个二叉树 的后序遍历为DEBFCA ,中序为DBEAFC,则前序为()(不贴选项了)


15 编译程序分析源程序阶段依次为()
A 语法分析,语法分析,语义分析
B 词法分析,语法分析,语义分析
C 语义分析,语法分析,词义分析
D 语法分析,语义分析,语法分析


16 代码执行后count的值为()

int count = 0;
for(int i = 1; i <= 13; i*= 2)
for(int j = 1; j <= i; ++j)
count++;

A 15 B 16 C 31 D 32


17 此设计模式定义一组可选算法,执行逻辑时根据环境选择算法,不一样算法产生不一样输出结果,则该设计模式为()
A 工厂factory
B 抽象工厂 abstract factory
C 策略 strategy
D 观察者 observer


18 选择合适的容器,须要频繁的进行插入和删除(1),须要在内存快速查找(2),须要在磁盘中快速查找(3).()
A vector/map/list
B list/hash_map/b tree
C deque/tree map/vector
D list/vector/map


19 若在有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找b的过程当中,前后进行比较的关键字为()
A f e b B f d b C g c b D g db


20 68 + 78 = 201,采用的是()进制表示。
A 12 B 13 C 14 D 15


21在32位机器上执行以下程序

unsigned char* p1;
unsigned int* p2;
p1 = (unsigned char*)0x810000;
p2 = (unsigned int*)0x820000;

请问p1 + 5p2 + 5分别等于多少()
A 0x810005, 0x820005
B 0x810005, 0x820020
C 0x810005, 0x820014
D 0x810010, 0x820020


22 程序段以下:

void GetValue(char* p){
    p = (char*)malloc(100);
}
void Test(){
    char* str = NULL;
    GetValue(str);
    strcpy(str, "Perfect");
    strcpy(str + 2, "World");
    printf(str);
}

运行Test()结果为()
A Perfect World B Rfect World
C PeWorld D 程序崩溃


23 静态变量的默认值是多少()
A 0 B 1 C 内存随机值 D 依赖编译器决定


24 关于tcp和udp描述中错误的是()
A
B
C
D


25 不属于linux通讯方式的是()
A 线程局部变量 B共享内存 C socket D管道


26 c++ STl中list使用的迭代器类型为()
A Input iterator B Forward iterator
C Bidirectional iterator D Random Access Iterator


27 如下关于TCP的send函数描述正确的是()
A
B
C
D


28 若是一个有序的vector/map/set 中进行数据查找,哪个查找复杂度更低()
A vector B map C set D 时间复杂度同样


29 关于stl描述正确的是()
A stl容器是多线程安全的。
B stl的vector查找效率通常比map快
C 往stl容器放入对象是直接拷贝一份对象到容易中,这部份内存由容易管理
D stl的栈是采用红黑书实现的。


30 某地很是重男轻女,若一户人家生一个女孩,能够继续生,直到男孩为止,假设生男女的几率相等。平均每户有()个女孩。
A 0.5 B 2/3 C 1 D 4/3

二 填空题(2分*13)

1 c++在c的基础上引入了4种类型转换关键字:()
2 c++函数能够经过如下方式重载(overload):(),不能经过返回值类型进行重载。缘由是()。
3 c++内联函数(inline)的优势(),缺点()。
4 举例说明c和c++语言逻辑表达式中短路求值得意义()
5 为避免不知情的状况下构造某个c++对象,应该在此类的构造函数前使用()关键字
6 int n = 0; while(n = 1) n++;while循环执行的次数是()
7 设类A的成员函数void f(void);若定义一个指向类成员函数的指针变量pf指向f,该指针变量声明语句是()。(可不要写成 auto pf = &A::f,虽然这样是对的。)
8 用位操做把int最高为置零()
9 在IA32架构下,sizeof(PageLayout) 大小为()

union PageLayout{
    struct{
        int pi;
        char key[5];
    }
    char d[10];
}

10
11
12
13

三 简答题(4分*5)

1
2
3 c中的malloc 和c++的new有什么区别
4 简述c++对象浅拷贝和深拷贝
5

四 算法与编程(8分*3)

1 链表翻转
2 实现一个函数删除vector中全部偶数(vector中元素为int)

//这是我当时的答案,仅仅得了2分
void removeEven(vector<int>& nums){
    std::erase(std::remove_if(nums.begin(), nums.end(),
                            [](int x){return x%2 == 0;}),
                nums.end());
}

3 编写类String的构造函数,析构函数,拷贝构造,复制函数
已知String的原型为:

class String{
public:
    String(const char* str = NULL);
    ~String();
    String(const String& other);
    String& operator = (const String& other);
private:
    char* m_data;
}

面试题

技术面

我当时是两个面试官一块儿面试的。
主要是c++语法比较多。
1 一个空类,编译器会自动为这个类实现哪些成员函数?
2 c++11新特性(我在简历上写了熟悉c++11)
3 智能指针,那几个指针的用途?
4 析构函数可否抛出异常?缘由?(构造函数呢)
5 在构造函数中可否调用虚函数?(析构函数呢)。(此题由于说到虚函数,那么情景应该为有多态的情形)
6 写一个相似于std::shuffe的函数(惟一的代码题,不是考算法的)
7 了解socket相关的知识吗()
8 你玩过哪些游戏?(这部分比较开放了,部分题记不清楚了)
你了解bs,cs吗
你玩的游戏属于上边的哪种 ?
几我的组建一个局域网打游戏,几台主机是如何通讯的?服务器在吗?

制做人面

巴拉巴拉瞎扯

HR面

巴拉巴拉瞎扯

总结

首先笔试分为Java和C++这个比较人性化。c++部分的笔试题大部分都是考的语法级别的,看了前边的题应该晓得这点。
第二面试的时候更多也是会从语法方面问问题。
第三没有算法题。只要作过剑指offer上边的便可。
最后,去面试的时候,作好能提早半个小时到。这个时候前台会把你的试卷给你,这样你就有充足的时间看那些不会的题。由于有的面试官会针对你答错的题,再给你讨论。
对于完美来讲,编程语言的语法很重要