C++: 面经*

C++ 目前的应用领域

  • 目前常见的桌面应用软件
    QQ、网易云音乐
  • 基础软件和高级语言的运行时程序
    大型数据库软件、Java虚拟机、Python编译器
  • 业务性应用软件的后台
    游戏服务器后台

C++ 存在的特点

  • C++ 整套的语法不具备“功能完备性”,单纯地使用这门语言本身提供的功能无法创建任何有意义的程序,必须借助操作系统的 API 接口函数来达到相应的功能。
  • C++ 语言需要直接使用操作系统的接口功能,这就造成了 C++ 语言繁、难的地方。
  • 在应用层开发,直接使用操作系统接口的函数,往往执行效率高、控制力度大。

C++ 的前端(客户端)开发和后端开发

cpp的前端和后端开发并没有优劣之分,二者的区别主要在于侧重点以及开发的思维不同。

前端开发一般有较多的界面逻辑,直接与客户交互,因此侧重点在于界面的易用性和流畅性。
对于后端开发,其主要目的则在于为客户端提供高效的服务,因此侧重点在于请求响应的正确性、及时性以及流畅性。

C++11/14/17/20标准

对于C++11,应当了解一些常用的知识点:

  • auto 关键字
  • for-each 循环
  • 右值及移动构造函数 + std::forward + std::move + stl 容器新增的 emplace_back() 方法
  • std::thread 库、std::chrono 库
  • 智能指针系列(std::shared_ptr/std::unique_ptr/std::weak_ptr)
  • 线程库 std::thread + 线程同步技术库 std::mutex/std::condition_variable/std::lock_guard 等
  • Lamda 表达式(Java 中现在也常常考察 Lamda 表达式的作用)
  • std::bind/std::function 库