C++面试汇总

文章目录

  • 是否了解RAII (Resource Acquisition is Initialization) ?请阐述。
  • 设计模式有哪些?特别是单例子模式,工厂模式
  • http get 和post请求区别
  • tcp udp
  • c++结构体和类的区别和联系
  • 进程 和线程区别
  • dll动态库和lib静态库,
        • . so动态库和. a静态库
  • cpu架构,国产化架构
  • c++编译命令,gdb调试
  • c++标准模板库 stl
  • C++的三大特性:封装、继承、多态。类的基本概念:类,对象,继承。
  • C和C++的区别?
  • 全局变量和局部变量在内存分配上有何不同?
  • static、extern、volatile、const的作用,new与malloc的区别:
        • static的作用
        • extern关键字的作用
        • volatile的作用
        • const的作用
        • new与malloc的区别
  • 指针和引用的区别:
  • 智能指针:
  • 简述深拷贝和浅拷贝的区别:
  • 编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数;
  • 请讲述堆和栈的区别:
  • 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
  • new、delete、malloc、free之间的关系:
  • 虚函数是怎么实现的:
        • 虚函数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的?
  • 什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?
  • 关于构造函数和析构函数:
  • QT信号槽机制的优缺点
  • 多线程情况下, Qt中的信号槽分别在什么线程中执行, 如何控制?
  • 描述Qt下Tcp通信的整个流程
  • 描述QT下udp通信的整个流程
  • 描述QT下多线程的两种使用方法, 以及注意事项
  • 描述QT中的文件流(QTextStream)和数据流(QDataStream)的区别, 他们都能帮助我们完成一些什么事情.
  • 谈谈对C++内存的理解
  • C++四种强制类型转换
  • 动态绑定与静态绑定

是否了解RAII (Resource Acquisition is Initialization) ?请阐述。

是把资源和对象的生命周期绑定,对象创建获取资源,对象销毁释放资源

设计模式有哪些?特别是单例子模式,工厂模式

· 单例模式:这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
如日志系统,资源管理器,线程池,内存池等

· 工厂模式:对创建对象的封装,符合开闭原则。工厂模式在许多项目中大量使用,因为它将对象的构造过程封装,使创建对象的接口统一且简洁,另一方面符合开闭原则,易于扩展。开源项目NVDLA的compiler中各类node的建立,LLVM中的pass,都有工厂模式的用例。

· 适配器模式:STL中的容器适配器stack和queue,是对象适配器的绝佳用例。项目开发中也常常使用。

· 观察者模式:频繁使用,观察者模式建立了一种一对多的联动,一个对象改变时将自动通知其他对象,其他对象将作出反应。消息更新、广播机制、消息传递、链式触发(高级啊)……比如Qt的信号槽机制

· 职责链模式:将一个请求的发送者和接收者解耦,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。采用职责链模式不仅可以方便扩展(当增加一个接受者时,只需要在链上的适当位置插入对应的处理方法即可),而且可以替换掉代码中可能存在的switch-case或者if-else。在工具的设计、具有层级关系或权限关系的任务处理场景中可以应用职责链模式。

· 策略模式:常常与工厂模式搭配,封装不同的算法(策略),再结合C++多态机制,策略模式在实际开发过程中应用十分广泛。
代理模式:C++智能指针、引用计数等

http get 和post请求区别

GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Book

你可能感兴趣的:(Linux,C++,mysql,sql,数据库)