C++面试常考题(未完整.更新中)
2012-10-11 17:54
281 查看
1.static用法
static 的成员函数和成员变量,可直接通过类名::函数名或类名::变量名直接访问,该函数名和变量名仅跟类相关联
在函数名里定义的static变量,改变它的存储结构,多次调用该函数时,该变量仅被初始化一次
全局变量与static的静态变量。改变它的作用域,全局变量的范围是整个程序,而static的静态变量的范围仅有该模块
2.多态的机制
编绎器会为继承体系上的每一个类创建一个虚函数表,表中的每一次指向虚函数的地址。
每个对象都会有一个虚指针指向虚函数表
通过父类指针就可以访问到子类的函数
3.引用跟指针
引用必须被初始化,且引用被初始化之后就不能再修改
4.vector<>缺陷,?vector.resize()与vector.reserve()?
vector添加数据的时候,有时需要重新申请一片空间,一般是2倍,然后把原来的数据复制过来,并回收原来的资源
vector.resize()会调用构造函数
5.虚析构
能让父类指针为了调用子类的析构函数
6.map的底层是?
红黑树
7.排序
8.仿函数类
9.智能指针
10.C++的四种转换,dynamic_cast<>与普通的转换有什么不同
11.struct对齐
struct A
{
int a;
char b;
int c;
}
sizeof(A) = 12;
struct B
{
int a;
char b;
char c
}
sizeof(B) = 8
12.迭代器的五种类型
只读迭代器
只写迭代器
向前的可读可写迭代器
能向前能向后的可读可写迭代器
随机迭代器
13.二分查找
14.最长子序列和 ( O(n) )
15.i++与++i
++i的效率高
16.宏定义与内联函数区别,有什么缺陷
宏定义是在预处理时对代码替换
内联函数具有函数的性质,能进行内型检查,它在编译时对代码替换
17.寻找最大K个数
快速排序的思想
18.new与malloc有什么区别
new是操作符,可调用构造函数
malloc是C标准库函数,不调用构造函数
19.SOCKET通信
TCP:
服务端:
创建SOCKET对象
绑定地址
设置监听个数
等待监听(accept)
客户端:
创建SOCKET对象
connect服务器
开始通信
最后关闭SOCKET对象
UDP:
服务端:
创建SOCKET对象
绑定地址
设置异步监听或调用receive进行得等待
客户端:
创建SOCKET对象
绑定地址
调用send通信
最后关闭SOCKET对象
20.三次握手
第一次,客户端向服务器发送请求,序号SYN=i;,进入SYN_SEND状态
第二次,服务端接受请求并对客户端发出应答,序号SYN=i+1,同时服务端也发送请求,序号为SYN=j,服务端进入SYN_RECEIVE状态
第三次,客户端接受服务端的请求并发出应答,序号SYN=j+1,此包发送完毕后,进入establish状态
21.进程调度,进程通信,线程同步
进程通信方式:SOCKET,消息队列,共享内存,信号量,管道
进程调度:先来先服务,优先级调度,时间轮转片,多级反馈
线程同步:互斥锁,临界区,信号量,信号量
22.多线程有什么缺陷
对全局变量的访问有危险
23.a[100] ={a,b,c} a[5] = 0
a[100] a[5]未知
24. A GetA() , A& GetA() , A * GetA() ,有什么区别,缺陷
A& GetA()返回的是引用,当返回一个局部变量的引用,对象在函数执行结束后就被释放了
A * GetA()返回的是指针,当返回一个局部变量的指针,对象在函数执行结束后就被释放了,当返回的数据是堆上的数据,则要考虑释放
A GetA()返回的是值,不需要担心前两个的影响,返回时会调用构造函数,降低效率
25.海量数据(比如找最大的IP访问量之类的)
网上有很多实例
26.推荐看看《编程之美》,不用全看.
27.《C++primer》(不需要全看,懂的就可以不用看),《Effective C++》,《Effecitve STL》,当然还有 数据结构与算法了
28.熟悉strstr,strcmp,strlen,strcpy之类的C 标准库函数源码.
百度百科上
29.char a[]="abc"与char *b = "abc"的区别
char a[] = "abc"是数组,在栈上的数组,并初始化为abc
char *b = "abc"在全局区内申请一块内存并初始化为abc,然后指针b指向它
static 的成员函数和成员变量,可直接通过类名::函数名或类名::变量名直接访问,该函数名和变量名仅跟类相关联
在函数名里定义的static变量,改变它的存储结构,多次调用该函数时,该变量仅被初始化一次
全局变量与static的静态变量。改变它的作用域,全局变量的范围是整个程序,而static的静态变量的范围仅有该模块
2.多态的机制
编绎器会为继承体系上的每一个类创建一个虚函数表,表中的每一次指向虚函数的地址。
每个对象都会有一个虚指针指向虚函数表
通过父类指针就可以访问到子类的函数
3.引用跟指针
引用必须被初始化,且引用被初始化之后就不能再修改
4.vector<>缺陷,?vector.resize()与vector.reserve()?
vector添加数据的时候,有时需要重新申请一片空间,一般是2倍,然后把原来的数据复制过来,并回收原来的资源
vector.resize()会调用构造函数
5.虚析构
能让父类指针为了调用子类的析构函数
6.map的底层是?
红黑树
7.排序
8.仿函数类
9.智能指针
10.C++的四种转换,dynamic_cast<>与普通的转换有什么不同
11.struct对齐
struct A
{
int a;
char b;
int c;
}
sizeof(A) = 12;
struct B
{
int a;
char b;
char c
}
sizeof(B) = 8
12.迭代器的五种类型
只读迭代器
只写迭代器
向前的可读可写迭代器
能向前能向后的可读可写迭代器
随机迭代器
13.二分查找
14.最长子序列和 ( O(n) )
15.i++与++i
++i的效率高
16.宏定义与内联函数区别,有什么缺陷
宏定义是在预处理时对代码替换
内联函数具有函数的性质,能进行内型检查,它在编译时对代码替换
17.寻找最大K个数
快速排序的思想
18.new与malloc有什么区别
new是操作符,可调用构造函数
malloc是C标准库函数,不调用构造函数
19.SOCKET通信
TCP:
服务端:
创建SOCKET对象
绑定地址
设置监听个数
等待监听(accept)
客户端:
创建SOCKET对象
connect服务器
开始通信
最后关闭SOCKET对象
UDP:
服务端:
创建SOCKET对象
绑定地址
设置异步监听或调用receive进行得等待
客户端:
创建SOCKET对象
绑定地址
调用send通信
最后关闭SOCKET对象
20.三次握手
第一次,客户端向服务器发送请求,序号SYN=i;,进入SYN_SEND状态
第二次,服务端接受请求并对客户端发出应答,序号SYN=i+1,同时服务端也发送请求,序号为SYN=j,服务端进入SYN_RECEIVE状态
第三次,客户端接受服务端的请求并发出应答,序号SYN=j+1,此包发送完毕后,进入establish状态
21.进程调度,进程通信,线程同步
进程通信方式:SOCKET,消息队列,共享内存,信号量,管道
进程调度:先来先服务,优先级调度,时间轮转片,多级反馈
线程同步:互斥锁,临界区,信号量,信号量
22.多线程有什么缺陷
对全局变量的访问有危险
23.a[100] ={a,b,c} a[5] = 0
a[100] a[5]未知
24. A GetA() , A& GetA() , A * GetA() ,有什么区别,缺陷
A& GetA()返回的是引用,当返回一个局部变量的引用,对象在函数执行结束后就被释放了
A * GetA()返回的是指针,当返回一个局部变量的指针,对象在函数执行结束后就被释放了,当返回的数据是堆上的数据,则要考虑释放
A GetA()返回的是值,不需要担心前两个的影响,返回时会调用构造函数,降低效率
25.海量数据(比如找最大的IP访问量之类的)
网上有很多实例
26.推荐看看《编程之美》,不用全看.
27.《C++primer》(不需要全看,懂的就可以不用看),《Effective C++》,《Effecitve STL》,当然还有 数据结构与算法了
28.熟悉strstr,strcmp,strlen,strcpy之类的C 标准库函数源码.
百度百科上
29.char a[]="abc"与char *b = "abc"的区别
char a[] = "abc"是数组,在栈上的数组,并初始化为abc
char *b = "abc"在全局区内申请一块内存并初始化为abc,然后指针b指向它
相关文章推荐
- 面试考题之9.1:数组与字符串(C/C++版)
- 我总结的.NET常见面试考题(不定期更新)
- C/C++常见考题深入分析之非完整版(我想永远也不可能完整的,呵呵)
- 面试考题之9.2:链表(C/C++版)
- 【C++面试】常考题复习
- 我总结的.NET常见面试考题(不定期更新)
- C++ 常见面试和笔试坑点总结(持续更新)
- C++ 面试常考题
- 【C++面试】常考题复习:排序算法
- [转]C++程序员面试的一份考题
- C/C++面试总结必考题
- C/C++面试总结必考题 2
- 笔试面试中C/C++重要知识点整理(不定期更新)
- C++ 面试经典考题1个
- 【C++面试】常考题复习
- c++面试必须熟练掌握的算法(持续更新)
- C++面试题目(持续更新)
- C++后台面试常见问题与回答(持续更新)
- 【下资源】全网独家首发2014传智播客C++第三期基础班+就业班至9月份更新完毕完整全套
- C++面试常见问题总结(不断更新中......)