【C/C++】面试基础题目收集

news2025/6/4 11:41:27

C++ 软件开发面试中常见的刷题题目通常可分为以下几大类:数据结构与算法、系统编程、面向对象设计、C++ 语言特性、并发编程等。


🧠 一、数据结构与算法(力扣/牛客经典题)

掌握 STL 和底层结构实现能力:

📌 数组 & 字符串

  • 两数之和(LeetCode 1)
  • 三数之和(LeetCode 15)
  • 盛水最多的容器(LeetCode 11)
  • 最长不重复子串长度(LeetCode 3)
  • 字符串转整数(LeetCode 8)

📌 链表

  • 反转链表(LeetCode 206)
  • 判断链表是否有环(LeetCode 141)
  • 合并两个有序链表(LeetCode 21)
  • K 个一组翻转链表(LeetCode 25)

📌 栈与队列

  • 用两个栈实现队列(剑指 Offer 09)
  • 最小栈(LeetCode 155)
  • 滑动窗口最大值(LeetCode 239)

📌 哈希

  • 有效的字母异位词(LeetCode 242)
  • 字符串中的第一个唯一字符(LeetCode 387)
  • 和为 K 的子数组(LeetCode 560)

📌 树与图

  • 二叉树前/中/后/层序遍历(LeetCode 102/94/145)
  • 判断二叉搜索树合法性(LeetCode 98)
  • 最小公共祖先(LeetCode 236)
  • 克隆图(LeetCode 133)

📌 排序 & 搜索

  • 快排/归并排序手写实现
  • 二分查找变种(如搜索旋转数组 LeetCode 33)
  • TopK 问题(堆或快排思想)

📌 动态规划

  • 爬楼梯(LeetCode 70)
  • 最长回文子串(LeetCode 5)
  • 零一背包问题(经典 DP)
  • 编辑距离(LeetCode 72)

💡 二、C++ 语言特性与底层

了解 C++ 的内存模型、语法糖和 STL 容器底层实现:

📌 C++ 核心语言特性

  • 拷贝构造、移动构造、赋值操作区别
  • 智能指针实现原理(shared_ptr / unique_ptr / weak_ptr
  • 虚函数表机制、RTTI、类型转换(static_cast 等)
  • RAII 和资源管理模式
  • 模板特化、SFINAE、完美转发
  • lambda 表达式、bind、function

📌 STL 相关

  • vector, list, map, set, unordered_map 的底层实现
  • 自己实现简易版 vector(支持动态扩容)
  • 自己实现 shared_ptr
  • 红黑树(map/set 底层)基本操作手写(插入、删除)

🧵 三、并发与多线程编程

大厂常问线程模型、锁机制、任务调度类问题:

  • 用 C++ 实现线程池(支持任务提交和执行)
  • 生产者消费者模型(使用 condition_variable)
  • 原子操作与内存序(std::atomic, memory_order)
  • 实现一个读写锁
  • 死锁的产生与解决
  • 基于定时器的任务调度系统

🛠️ 四、系统编程基础题目

涵盖文件、网络、内存、信号等系统能力:

  • 实现 mmap/read/write 的文件读写工具
  • 实现一个简易 echo server(select/epoll)
  • TCP 三次握手/四次挥手过程图解
  • fork + pipe 实现父子进程通信
  • 实现一个自定义内存池 allocator

📦 五、面向对象设计 & 设计模式

企业级系统设计能力的基础:

  • 电梯系统设计 / 订票系统 / 日志系统
  • 实现观察者模式 / 单例模式 / 策略模式
  • 模拟实现一个 LRU Cache(LeetCode 146)

✅ 建议刷题顺序与方法

  1. 第一轮(基础刷题): 数据结构 + 算法题精刷(100 道以内)
  2. 第二轮(C++ 特性): STL/模板/智能指针/RAII/虚函数专题刷
  3. 第三轮(系统能力): 多线程 + 网络 + 内存 + 项目实战题
  4. 第四轮(综合系统设计): 设计一个线程池、异步日志、RPC 框架等

📚 配套资料推荐

  • 《Effective C++》《More Effective C++》《Effective Modern C++》
  • 《C++ Primer》《STL 源码剖析》
  • LeetCode、牛客网 C++ 题库
  • 《Linux 高性能服务器编程》(游双)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2395854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模拟实现线程池(线程数目为定值)和定时器

前言 昨天学习关于定时器的相关知识。今天花时间去模拟实现了一个定时器,同时也去模拟实现了一个线程池(线程数目为定值)。我感觉我收获了很多,对于线程的理解加深了。跟大家分享一下~ 线程池和定时器(这个是主要)的实现 代码 线程池 import java.ut…

数据结构之队列实验

引言 在计算机科学中,进制转换是基础但重要的操作。例如将一个十进制数转换为二进制或八进制表示时,我们通常使用“短除法”——即不断用目标进制去除当前数,记录余数,直到商为0为止。 这种方法得到的是低位先产生的结果&#x…

【Ubuntu】摸鱼技巧之虚拟机环境复制

前言 提示:所有的操作都需要关闭虚拟机 如何快速在其它电脑布置,linux环境,如果我们有一个环境直接拷贝就有时间摸鱼呀。 1.直接复制简单粗暴 不做赘述,如果不会复制,那么请右击鼠标压缩复制 2.克隆虚拟机 2.1 …

室内VR全景助力房产营销及装修

在当今的地产行业,VR全景已成为不可或缺的应用工具。从地产直播到楼市VR地图,从效果图到水电家装施工记录,整个地产行业的上下游生态中,云VR全景的身影无处不在。本文将探讨VR全景在房产营销及装修领域的应用,并介绍众…

jenkins集成gitlab实现自动构建

jenkins集成gitlab实现自动构建 前面我们已经部署了Jenkins和gitlab,本文介绍将二者结合使用 项目源码上传至gitee提供公网访问:https://gitee.com/ye-xiao-tian/my-webapp 1、创建一个群组和项目 2、添加ssh密钥 #生成密钥 [rootgitlab ~]# ssh-keyge…

Spring Boot微服务架构(八):开发之初就引入APM工具监控

使用 APM(Application Performance Management)工具监控 Spring Boot 应用,可以帮助开发者实时追踪性能瓶颈、分析调用链路、监控资源使用情况,并快速定位故障。以下是详细的步骤和常用工具的选择指南: ​​一、常用 A…

大规模真实场景 WiFi 感知基准数据集

一段话总结 本文提出CSI-Bench,首个大规模真实场景WiFi感知基准数据集,覆盖26个室内环境、35名用户、16种商用设备,包含461小时有效数据,支持跌倒检测、呼吸监测、定位、运动源识别等单任务及用户身份、活动、 proximity联合标注的多任务学习。通过标准化评估协议和基线模…

Python实现HPSO-TVAC优化算法优化支持向量机SVC分类模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在当今数据驱动的时代,支持向量机(SVM)作为一种经典的机器学习算法,…

ck-editor5的研究 (3):初步使用 CKEditor5 的事件系统和API

前言 在上一篇文章中—— ck-editor5的研究(2):对 CKEditor5 进行设计,并封装成一个可用的 vue 组件 ,我已经把 CKEditor5 封装成了一个通用vue组件,并且成功在nuxt中运行,并具备一定的通用性&…

WPS快速排版

论文包括(按顺序):封面(含题目)、摘 要、关键词、Abstract(英文摘要)、Keywords、目录、正文、参考文献、在读期间发表的学术论文及研究成果,致 谢 题目(黑小一加粗&…

Java实现命令行图书管理系统(附完整源码)

一、项目概述 本文将介绍如何使用Java实现一个基于命令行的图书管理系统。系统支持管理员和普通用户两种角色,提供图书的增删改查、借阅归还等功能。项目采用面向对象设计原则,代码结构清晰,适合Java初学者学习。 二、系统功能架构 graph T…

【数据结构】顺序表和链表详解(上)

前言:上期我们介绍了算法的复杂度,知道的算法的重要性同时也了解到了评判一个算法的好与坏就去看他的复杂度(主要看时间复杂度),这一期我们就从顺序表和链表开始讲起。 文章目录 一,顺序表1,线性表2,顺序表…

唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!

在智能家居的浪潮中,门锁搭载显示屏已成为行业创新的焦点。据行业数据显示,2023年全球智能门锁出货量中,搭载显示屏的型号占比已突破40%,且年复合增长率达25%。而2024年国内智能门锁销量突破2200万套,预计2025年市场规…

智能穿戴新标杆:SD NAND (贴片式SD卡)与 SOC 如何定义 AI 眼镜未来技术路径

目录 一、SD NAND:智能眼镜的“记忆中枢”突破空间限制的存储革命性能与可靠性的双重保障 二、SOC芯片:AI眼镜的“智慧大脑”从性能到能效的全面跃升多模态交互的底层支撑 三、SD NANDSOC:11>2的协同效应数据流水线的高效协同端侧…

node_modules包下载不下来

如果项目里面的package-lock.json有resolved ,就指向了包的下载来源,如果这个网址挂了,那npm i 就会一直卡着。而且,在终端去修改 npm的镜像是没有用的 解决办法是:把项目里面的 lock文件 .npmrc都删了 然后重新下载就可以了

yolo个人深入理解

卷积层的理解,通过云端服务器训练模型,模型构建的重要性,针对极低像素的处理,模型训练召回率提高技巧,卷积层2,4,8,16,32的小模型与大模型的理解 一.关于backbone,neck,head深入理解 1,backbone的主要组成部分是sppf和conv,这是backbone的核心,其中yolov5和yolov8…

从0开始学vue:Element Plus详解

一、核心架构解析二、技术实现指南三、高级特性实现四、性能优化方案五、生态扩展方案六、调试与测试七、版本演进路线 Element Plus 是专为 Vue 3 设计的桌面端 UI 组件库,基于 Vue 3 的 Composition API 重构,在保持与 Element UI 兼容性的同时&#x…

互联网向左,区块链向右

2008年,中本聪首次提出了比特币的设想,这打开了去中心化的大门。 比特币白皮书清晰的描述了去中心化支付的解决方案,并分别从以下几个方面阐述了他的理念: 一、由转账双方点对点的通讯,而不通过中心化的第三方&#xf…

Python6.1打卡(day33)

DAY 33 MLP神经网络的训练 知识点回顾: 1.PyTorch和cuda的安装 2.查看显卡信息的命令行命令(cmd中使用) 3.cuda的检查 4.简单神经网络的流程 1.数据预处理(归一化、转换成张量) 2.模型的定义 …

论文阅读笔记——Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

I3D 论文 UCF-101(13000多个视频)和 HMDB-51(7000多个视频)数据集过小,提出了 Kinetics 数据集,并且在其之上预训练之后能够迁移到其他小的数据集。 2DLSTM:使用2D CNN的好处是可以直接从 Ima…