
C++面试手撕代码系列
文章平均质量分 64
实战演练:通过手撕代码的方式,模拟真实面试场景,帮助求职者提高代码编写和问题解决能力。
科技之隅
这个作者很懒,什么都没留下…
展开
-
C++实现自旋锁SpinLock
自旋锁是一种锁机制,用于多线程编程中保护共享资源。与普通的阻塞锁不同,自旋锁在获取不到锁时,线程不会被挂起,而是持续循环(“自旋”)检查锁是否可用。当锁被释放时,线程立即获取锁进入临界区。自旋锁适用于短时间的临界区操作,因为它避免了线程上下文切换的开销,但在长时间等待时会浪费大量 CPU 资源。自旋锁是一种用于多线程环境下的同步机制,能够确保在同一时间只有一个线程能够访问共享资源。原创 2024-10-25 10:31:29 · 1179 阅读 · 0 评论 -
用两个栈实现一个队列
通过使用两个栈来模拟队列的先进先出(FIFO)特性:一个栈用于执行入队操作(将新元素压入栈1),另一个栈用于出队操作(从栈2中弹出元素)。在出队时,如果栈2为空,则将栈1中的所有元素逐一弹出并压入栈2,从而确保出队的顺序与入队顺序一致。原创 2024-10-06 21:53:05 · 1408 阅读 · 0 评论 -
实现一个简单的环形队列
环形队列(Circular Queue)是一种特殊的数据结构,旨在高效地管理和利用存储空间。与传统的线性队列相比,环形队列的主要特点在于,它的队尾和队头可以在同一存储空间中循环使用,从而避免了空间浪费。原创 2024-10-04 11:50:18 · 539 阅读 · 0 评论 -
快速判断大端小端字节序
大小端(Endianness)是指计算机存储多字节数据时,字节的顺序。原创 2024-10-02 11:02:54 · 457 阅读 · 0 评论 -
C++实现生产者消费者模型
生产者-消费者模型是一种用于解决多线程同步问题的经典设计模式,常见于缓冲区管理、任务调度等场景。该模型的核心是两个角色:生产者和消费者。通过共享缓冲区(通常是队列)进行协作。原创 2024-09-30 06:00:00 · 823 阅读 · 0 评论 -
手撕快速排序
快速排序是一种高效的排序算法,采用分治的思想时间复杂度最佳情况:O(n log n)(基准元素每次均匀分割)平均情况:O(n log n)最坏情况:O(n²)(当数组已经是有序的,或所有元素相同,且每次选择的基准是最小或最大值)空间复杂度空间复杂度:O(log n)(递归调用栈的空间,取决于递归深度)在最坏情况下(O(n))时,可能需要额外的O(n)空间(当分区极不均匀时)原创 2024-09-29 08:30:00 · 417 阅读 · 0 评论 -
C++ 简易异步定时器实现
这个代码实现了一个简单的异步定时器Timer类,利用 C++ 的和std::async进行多线程处理。启动定时器:通过start方法,可以设置一个延迟时间和一个回调函数。定时器在延迟结束后会自动执行这个回调。停止定时器:可以使用stop方法来停止定时器,并等待当前正在执行的任务完成。线程安全:使用std::mutex确保在多线程环境中安全地访问和修改定时器的状态。异步执行:定时器的延迟处理在一个独立线程中进行,主线程可以继续执行其他操作。原创 2024-09-28 10:44:02 · 1469 阅读 · 1 评论