排序
面试题:如何理解 C++ 中的 atomic?
在 C++ 中,std::atomic 是一个模板类,用于实现原子操作。原子操作是不可分割的操作,即在多线程环境中,一个线程执行原子操作时,不会被其他线程中断。std::atomic 提供了一种高效...
面试题:C++ QT 中信号和槽的原理是什么?
在 C++ 的 Qt 框架中,信号(Signal)和槽(Slot) 是一种用于对象间通信的机制,它是 Qt 的核心特性之一。信号和槽的原理基于 观察者模式,通过松耦合的方式实现对象之间的交互。 1....
面试题:C++ 多线程开发需要注意些什么?线程同步有哪些手段?
C++ 多线程开发是一个复杂且容易出错的领域,需要特别注意线程安全、资源竞争、死锁等问题。以下是多线程开发中需要注意的事项以及常用的线程同步手段。 C++ 多线程开发需要注意的事项 线程安全...
面试题:如何解决 C++ 中条件变量的信号丢失和虚假唤醒问题?
在 C++ 中,条件变量(std::condition_variable)是多线程编程中常用的同步机制,用于线程间的通信。然而,使用条件变量时可能会遇到 信号丢失 和 虚假唤醒 的问题。以下是...
面试题:C++ 如何实现线程池?给出大体思路?
实现一个线程池(Thread Pool)是 C++ 并发编程中的常见任务。线程池的核心思想是预先创建一组线程,并将任务分配给这些线程执行,从而避免频繁创建和销毁线程的开销。以下是实现线程池的大体思...
面试题:用过哪些 C++ 日志框架?都有什么优缺点?
在 C++ 开发中,日志框架是记录程序运行状态、调试信息和错误信息的重要工具。以下是几种常见的 C++ 日志框架及其优缺点: 1. spdlog 优点: 高性能:spdlog 是一个非常快速的日志库,专为高性...
面试题:C++ 动态库和静态库的区别?
在 C++ 中,库(Library)是预编译的代码集合,可以被其他程序调用。库分为静态库(Static Library)和动态库(Dynamic Library),它们在链接方式、内存占用、更新和维护等方面有显著区别。 1....
面试题:请介绍 C++ 中 shared_ptr 的原理?shared_ptr 线程安全吗?
std::shared_ptr 是 C++ 标准库中的一种智能指针,用于管理动态分配的对象生命周期。它通过引用计数机制实现多个 std::shared_ptr 共享对象的所有权。理解 std::shared_ptr...
面试题:平时开发 C++ 程序处理错误是使用 try-catch 还是错误码方式?
在 C++ 开发中,处理错误的方式主要有两种:异常处理(try-catch) 和 错误码(Error Code)。选择哪种方式取决于具体的应用场景和需求。以下是两种方式的对比以及适用场景: 1. ...
面试题:介绍下 C++ 程序从编写到可执行的整个过程?
C++ 程序从编写到可执行的整个过程通常分为四个主要阶段:预处理、编译、汇编和链接。每个阶段都有特定的任务,最终生成可执行文件。以下是详细的介绍: 1. 编写源代码 程序员使用文本编辑器或...