C++面试题整理,希望对大家有所帮助

98 阅读2分钟

C++最新面试题

1.计算机网络 三次握手与四次挥手的过程及状态的转变? 为什么是三次握手而不是两次握手? 为什么是需要四次挥手? soket通信实现的基本过程? 使用原生的socket不使用网络库的时候,怎么防止粘包,需要怎么定义相关请求的结构? 接口的幂等性? http协议是长连接还是短链接,怎么改为长链接? http请求头包含哪些内容?一个http请求包含哪些内容?

2.windows相关问题 说说windows的消息机制?有哪些相关的函数? MFC窗体的生命周期,涉及到哪些函数? 模态对话框与非模态对话框的区别? 怎么产生一个dump文件?dump分析工具你知道哪些?windbg windows下你了解哪些定时器类?自己怎么实现一个定时器类? 什么时候会产生内存泄漏?怎么调试内存泄漏?用到哪些内存泄漏的调试方式? 说一说windwos的消息映射机制? 一个dll大入口函数是什么?mfc程序的入口函数是什么? 线程切换的时候操作系统做了哪些事情? sendmessage与postmessage的区别是什么?什么是同步消息什么是异步消息?

3.说一说C与C++的内存分配方式?

1从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,如全局变量,static变量。

2在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

3从堆上分配(动态内存分配)程序在运行的时候用malloc或new申请任意多少的内存,程序员负责在何时用free或delete释放内存。动态内存的生存期自己决定,使用非常灵活。

4用C++设计一个不能被继承的类

template <typename T> class A 
{ 
friend T; 
private: 
A() {} 
~A() {} 
}; 

class B : virtual public A<B> 
{ 
public: 
B() {} 
~B() {} 
}; 
class C : virtual public B 
{ 
public: 
C() {} 
~C() {} 
}; 
void main( void ) 
{ 
B b; 
//C c; 
return; 
} 

注意:构造函数是继承实现的关键,每次子类对象构造时,首先调用的是父类的构造函数,然后才是自己的。