排序
面试题:C++ 如何进行性能优化?
C++ 是一种高性能的编程语言,但在实际开发中,如果不注意代码的实现细节,仍然可能导致性能问题。以下是一些常见的 C++ 性能优化方法,涵盖了从代码设计到具体实现的多个方面。 1. 选择合...
面试题:介绍下 socket 的多路复用?epoll 有哪些优点?
Socket 的多路复用 多路复用(Multiplexing)是一种允许单个线程同时监控多个文件描述符(如 Socket)的技术。通过多路复用,程序可以在一个线程中高效地处理多个 I/O 操作,而不需要为每个连接...
面试题:C++ 中为什么要引入 make_shared?它有什么优点?
std::make_shared 是 C++11 引入的一个工具函数,用于创建并返回一个 std::shared_ptr,它封装了动态内存分配和 std::shared_ptr 的构造过程。 引入 std::make_shared 的主要目的是为了提...
面试题:什么情况下会出现死锁?如何避免死锁?
死锁(Deadlock)是多线程编程中常见的问题,指的是两个或多个线程互相等待对方释放资源,导致所有线程都无法继续执行。以下是死锁的产生条件、示例以及避免死锁的方法。 1. 死锁的产生条...
面试题:什么场景下使用锁?什么场景下使用原子变量?
在 C++ 多线程编程中,锁(如 std::mutex) 和 原子变量(如 std::atomic) 是两种常用的同步机制。它们各有优缺点,适用于不同的场景。以下是它们的对比以及适用场景...
面试题:C++ 中模板的实现一定要写在头文件中吗?
在 C++ 中,模板的实现通常需要写在头文件中,这是因为模板的实例化机制与普通函数或类的编译方式不同。以下是详细解释: 1. 为什么模板的实现通常写在头文件中? 模板的实现通常需要放在头文件...
面试题:C++ 中如何实现一个单例模式?
在 C++ 中,单例模式(Singleton Pattern)是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。以下是几种实现单例模式的常见方法: 1. 懒汉式(Lazy Initialization) 懒汉式...
面试题:C++ 中 vector 的 push_back 和 emplace_back 有什么区别?
push_back 和 emplace_back 是 C++ 中 std::vector 的两个成员函数,用于向容器末尾添加元素。它们的核心区别在于如何构造元素以及性能优化。 1. push_back 功能...
面试题:C++ 什么场景下用继承?什么场景下使用组合?
在C++中,继承和组合是两种不同的代码复用方式,适用于不同的场景。 1. 继承的使用场景 继承用于表示“is-a”关系,即子类是父类的一种特殊类型。继承适合以下场景: 代码复用:当多个类有共同...
面试题:请介绍下std::sort的原理?底层是快速排序吗?
std::sort 是 C++ 标准库中用于对容器(如 std::vector、std::array 等)或范围进行排序的算法。它的实现原理和底层排序算法并不是固定的快速排序,而是一种混合排序算法,结合...