趣游2014校园招聘笔试
24 October 2013
好像是做手游的公司。一个创业公司。
###一、概念题
#####1. 引用和指针的区别? int a = 1; int& b = a; cout « &a « endl; cout « &b « endl; // same address
- 引用访问一个变量是直接访问,而指针是间接访问。
- 引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。 + 不存在空引用,引用必须初始化。
- 引用在开始的时候就绑定到了一个内存空间(开始必须赋初值),所以他只能是这个内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值。
#####2. new delete与malloc free的联系与区别?
- malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。
- maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。
- new 内置了sizeof、类型转换和类型安全检查功能。
- 在用delete 释放对象数组时,留意不要丢了符号‘[]’。
#####3. struct和class的联系和区别? struct Shape { int id;
Shape() {
cout << "Constructor of Shape" << endl;
}
~Shape() {
cout << "Destructor of Shape" << endl;
}
};
struct Circle : Shape {
Circle() {
cout << "Constructor of Circle" << endl;
}
~Circle() {
cout << "Destructor of Circle" << endl;
}
};
- 访问权限不同。struct 的默认访问权限是public,class 的默认访问权限是private。如果一个类中只有get/set函数,而没有其他处理数据的函数,使用struct就可以了。
- struct默认是public继承,class默认是private继承。
#####4. 什么是面向对象,描述它的基本特征。 封装、继承、多态。
#####5. 重载(overload)和重写(override)的区别?
#####6. “线程安全”的含义。
- 程序中的每一条语句都是原子操作,则是线程安全的。
- 实例变量是在堆中分配的,并不被属于该实例的所有线程共享,只有一个线程独享,是线程安全的。
- 局部变量在堆栈中分配,因为每个线程都有它自己的堆栈空间,所以是线程安全的.
- 静态类不用被实例化,就可直接使用,也不是线程安全的.
- 单线程方式是线程安全的。
#####7. 用c socket函数描述C/S架构的程序,两端网络连接建立过程。
###二、程序编写题
#####1. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数(不能用strlen)。
- 请描述你解决这个问题的思路;
- 请给出函数代码,以及算法的复杂度。
#####2. 链表题:一个链表的节点结构 struct Node { int data; Node* next; };
- a. 已知链表的头结点head,写一个函数把这个链表逆序。
- b. 已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序(保留所有结点,即便大小相同)。
- c. 已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序,这次要用递归的方法。
#####3. 用数组来实现一个栈,并用面向对象的方法进行封装。
###三、附加题
#####1. 两个数相乘,位数没有限制,请写一个程序接受键盘输入并输出结果。
解析《大数乘法》。本题目难度就在于先开始不做进位处理,然后还能找出竖式乘法的左移规律。否则写起来会很麻烦。
原文链接:趣游2014校园招聘笔试,转载请注明来源!
–EOF–