- 博客(259)
- 资源 (1)
- 收藏
- 关注
原创 【C语言/C++】如何快速进阶的13个项目
“C/C++真的太难学了,我准备放弃了!”很多初学者在学完C和C++的基本语法后,就停滞不前了,最终走向“从入门到放弃”。其实,我们初学者最需要的不是HelloWorld,也不是语法知识的堆砌,需要的只是实战项目的磨砺。
2019-12-17 15:16:45
1709
1
原创 C/C++ 为什么需要编译器?
CPU只能执行机器指令,没办法直接运行C/C++源码;C/C++语法规则复杂,代码运行前必须解析和检查;项目往往分成多个文件和库,需要链接器合并;不同CPU指令不一样,编译器负责适配硬件;编译器可以优化代码,让程序运行速度更快。就写一行简单的,生成可执行文件的背后,整套工具链已经完成了大量工作。编译器,就是我们写的代码和CPU之间,必不可少的翻译桥梁。【C语言】五小时快速入门C语言【C语言】零基础到项目实战(交换机项目)【C/C++ 】项目经理带你-零基础学习。
2026-09-21 20:09:55
286
原创 C/C++高效Bug定位实战指南(VS2022环境):告别瞎猜,系统化调试排错流程
本文总结了基于VS2022的C/C++高效调试方法论,强调以“先复现、再定位,先证据、后假设”为核心原则,通过最小化复现场景与万能二分法精准缩范围,破解内存越界、多线程竞争等延迟崩溃类难题。重点规避“崩溃点≠根因”的误区,倡导使用Sanitizer、Dump分析与回归测试闭环,建立可复用的标准化排错流程,显著提升疑难Bug定位效率,适用于90%以上C/C++开发场景。
2026-09-18 21:09:36
280
原创 C++ 大厂求职面试:算法要求、考察形式与高频踩坑
本文基于 C++ 求职辅导中的常见面试现象进行整理,重点讨论普通工程开发岗位的算法准备。不同公司、业务方向和面试轮次存在差异,具体仍应以岗位 JD、历年面经和实际面试安排为准。
2026-09-10 17:05:51
56
原创 C++ 堆排序深度精讲:基于完全二叉树的选择排序进化,最坏情况 O(n log n) 的稳定王者
堆排序是一种结合数据结构优势的高效排序算法,核心是通过完全二叉树(堆)优化最值查找过程。其诞生源于对选择排序、快速排序和归并排序缺点的改进需求:在保证最坏O(nlogn)时间复杂度的同时实现原地排序(O(1)空间)。算法分为建堆(线性时间)和反复取堆顶排序两个阶段,采用数组存储堆结构并通过下标关系维护父子节点。相比快排和归并,堆排序在内存受限场景优势显著,但存在缓存不友好和不稳定的缺陷。C++标准库提供现成堆操作函数,工程中推荐直接调用。该算法特别适合需要绝对时间复杂度保证的嵌入式或实时系统场景。
2026-07-05 20:00:00
341
原创 C++ 快速排序(Quick Sort)深度精讲:分治思想、Lomuto 分区法及三数取中优化,面试手撕必会
摘要:快速排序算法解析 快速排序通过递归分区策略实现高效排序,平均时间复杂度为O(n log n)。其核心在于Lomuto分区法,通过基准元素将数组划分为两部分。优势包括优秀的缓存局部性和原地排序特性,但最坏情况下(如数组已有序)会退化为O(n²)。工程优化策略如三数取中、小区间插入排序和随机化基准可提升性能。面试时需注意快排的不稳定性,实际开发中建议使用优化后的标准库函数(如std::sort)。
2026-07-04 20:00:00
453
原创 “希尔排序”是什么呢?什么原理?怎么用?有什么优势?
希尔排序是插入排序的优化版本,由Donald Shell于1959年提出。其核心思想是通过递减的增量序列对数据进行分组插入排序,先让数据"大范围"有序,再逐步细化。相比传统O(n²)排序算法,希尔排序突破了性能瓶颈(平均时间复杂度优于O(n²)),具有原地排序、代码简洁等优势,特别适合中等规模数据。但存在不稳定性和增量序列选择等短板,实际工程中常被更高级算法替代。该算法体现了"先粗调后精调"的设计思想,是算法优化的重要范例。
2026-07-03 20:00:00
691
原创 C++ 选择排序(Selection Sort)深度解析:与冒泡的本质区别及“最少交换次数”优势
选择排序非常符合直觉,就像打擂台:第一轮遍历整个数组,找出最小的“擂主”,让它和第一个位置交换;第二轮忽略第一个位置,在剩下的元素里找最小的,和第二个位置交换……:无论数组初始状态如何(有序、逆序、乱序),外层 n-1 轮,内层比较次数为 n+(n-1)+...+1,总和固定为。(5a 和 5b 值相等,用下标区分先后),第一轮找到最小值为 2,交换 5a 和 2,数组变为。,工程意义不大,面试时可作为“思维拓展”提一句。控制“已排序区间的末尾”,内层循环。注意边界:外层循环。
2026-07-02 20:00:00
386
原创 什么是C++冒泡排序?
的数组,外层循环控制“需要冒泡的轮数”(共 n-1 轮),内层循环控制“当前轮需要比较的相邻元素对”。每完成一轮,当前未排序区间的最大值就被推到了末尾,下一轮比较次数减 1。该位置之后的元素已经有序,下一轮内层循环只需遍历到该位置即可,进一步缩小扫描范围。),基础版仍会傻傻执行完所有 n-1 轮比较,极其浪费。(内省排序)在百万级数据上比冒泡快成千上万倍。,说明数组已经全局有序,直接跳出外层循环。每次交换后,记录最后一次交换的位置。(因为每轮末尾已有序),千万别写成。:若数组本来就是有序的(如。
2026-07-01 20:00:00
204
原创 什么是C++排序算法?
C++标准库提供了多种高效排序算法,主要包括:1. std::sort:基于内省排序(结合快排、堆排和插入排序),时间复杂度O(nlogn),是默认首选;2. std::stable_sort:稳定排序(保持相等元素顺序),适合特殊需求;3. std::partial_sort和std::nth_element:用于部分排序或快速定位特定元素。这些算法支持自定义比较规则,适用于各种容器。使用时需注意:关联容器本身有序,链表需用专属排序方法。工程开发中应优先使用标准库实现而非手写算法,因其经过高度优化且稳定可
2026-06-30 14:43:37
668
原创 面试官问:空类能实例化吗?
考察维度核心结论能否实例化✅ 能,编译器保证每个对象都有唯一地址。内存占用通常为1 字节(纯占位,不存储实际数据)。含普通/静态函数大小仍为 1(函数在代码段)。含虚函数大小变为指针大小(32位4字节 / 64位8字节),因存在vptr。空基类优化 (EBO)作为基类时,不会额外增加派生类体积(编译器优化)。
2026-06-16 13:40:49
323
原创 什么时候用智能指针?什么时候用裸指针?
维度智能指针裸指针所有权明确(独占/共享)无所有权(仅观察)生命周期管理自动手动(需保证对象有效)异常安全安全不安全(需额外编码)开销有额外内存/CPU开销几乎为零推荐度默认首选仅限性能关键或极简单场景💡现代C++实践:优先使用智能指针表达所有权;仅在需要“非拥有型引用”或与旧C接口交互时使用裸指针。【C语言/C++】知识点精讲:指针。
2026-06-12 22:18:24
371
原创 嵌入式Linux应用开发技术栈完全指南
TCP(可靠流)、UDP(实时性)、RAW_SOCKET(ICMP ping等):底层库、硬件抽象层、性能敏感模块、Bootloader/U-Boot辅助开发。(非驱动/内核开发),涵盖构建、系统编程、GUI、调试及系统集成全流程。:高安全性应用(汽车、医疗)、并发数据处理、替代部分C/C++模块。:指针、内存管理、位运算、结构体对齐、函数指针、回调机制。:RAII、智能指针、虚函数、STL容器、移动语义。:内存安全、无GC、零成本抽象、与C语言无缝互操作。
2026-06-12 22:00:55
345
原创 C++八股文 | 空类到底能不能实例化?那神奇的1字节藏着大秘密
然后问“这玩意儿能实例化吗?你是不是愣住?今天带你看透空类的所有细节,从标准到编译器骚操作,一次讲透👇。
2026-06-06 20:00:00
350
原创 C++八股文 | 指针 vs 引用,面试官最爱问的区别全拆解!
用指针:需要动态分配内存(new/malloc)、实现多态、可选参数(允许为空)、需要换向时。用引用:函数传参避免拷贝、操作符重载(返回引用)、必须保证有效性的场合。
2026-06-05 17:24:14
256
原创 面试官提问:简单说说STL容器吧?
STL容器体系分类及选型指南 STL容器可分为四类:1)顺序容器(vector/list/deque等)按插入顺序存储;2)关联容器(map/set)基于红黑树有序存储;3)无序关联容器(unordered_)基于哈希表;4)容器适配器(stack/queue)。选型关键点:vector适合随机访问,deque适合头尾操作,list适合频繁任意位置增删,关联容器需排序时选用,哈希容器追求O(1)查找。不同容器在迭代器失效规则、内存布局等方面存在显著差异,需根据具体场景选择。
2026-05-29 21:35:09
342
原创 自学C/C++到底该看什么书?程序员的避坑书单(附电子档)
开发了多年,踩过书的坑,也捡过书的宝。今天把自己真正读过、有用、经典的C/C++书籍整理出来,帮你省下盲目买书的时间。
2026-05-20 15:14:33
497
原创 C++智能驾驶开发方向深度解析:技术栈、岗位与薪资全景
智能驾驶C++开发是一条技术门槛高但回报丰厚的赛道。随着行业合规化与商业化加速,具备扎实技术功底与项目经验的开发者将迎来更多机遇。建议从业者持续深耕核心技能,关注政策与技术演进,把握行业红利。
2026-05-11 21:52:06
318
原创 2026年C++后端开发面试题
公司核心考察特色题示例阿里巴巴STL 深挖、系统设计、基础原理vector 扩容因子为什么是2?迭代器失效所有场景蚂蚁集团金融一致性、基础架构己方交易成功但渠道失败怎么发现处置腾讯网络、操作系统、LRUTIME_WAIT 状态详述;手写 LRU 缓存字节跳动新特性、高并发、算法C++20 协程使用;线程池业务场景设计华为OS、网络基础守护进程实现;僵尸进程百度内存、多线程C++ 内存分区;i++ 原子性小米分方向(服务端/嵌入式/客户端)自旋锁在中断中的使用;
2026-04-27 14:52:26
825
原创 C语言课设通关攻略:从0到1写出“学生成绩管理系统”(附完整代码思路)
这份笔记几乎涵盖了一个C语言课设从设计到实现的所有关键点。建议你把每个函数单独写一遍,不要直接复制代码,而是理解后自己敲出来。遇到 bug 就用printf定位。复习口诀结构体管数据,数组来做仓,文件存硬盘,菜单走四方。增删改查加排序,统计排序别慌张,缓冲区坑要避开,课设轻松拿优良。祝你课设顺利,期末不挂科!🎉C语言/C++入门与项目实战C++八股文与大厂面经。
2026-04-27 14:20:54
493
原创 嵌入式实习面试问题:那个动态内存是怎么样分配的?
说白了,嵌入式玩的就是“确定性”和“可控”,凡是破坏这两点的,都要格外小心。动态内存算是这里面的一个重点“照顾对象”。
2026-04-21 20:00:00
280
原创 嵌入式实习面试问题:你的OTA升级途中掉电了你怎么处理?
这样,无论掉电发生在哪个环节,系统重启后都能自动、安全地恢复到确定状态,要么继续升级,要么回退到旧版本,最大限度地避免‘变砖’,保证系统可用性。但为防新固件有运行时致命错误,可保留一次“回退”机会(例如,启动计数器:新固件连续启动失败N次后,自动回滚)。:更新“升级状态标志”和“引导信息”时,必须使用原子操作或先写后效(Copy-on-Write)机制,防止标志位本身因掉电处于中间状态。:恢复过程中,需要通过LED、屏幕或串口日志明确告知用户当前状态(如“系统恢复中”、“升级失败,正回退”)。
2026-04-20 13:42:04
417
1
原创 Linux 操作系统八股文(2026最新完整版)
Linux 作为后端开发、运维、嵌入式领域的核心技术栈,其底层原理和核心机制是面试高频考点。本文整理了 Linux 操作系统核心知识点,涵盖进程管理、内存管理、设备管理、文件系统等核心模块,内容兼具深度与实用性,既适合面试突击背诵,也可作为日常开发查阅手册。本质:运行在计算机上的核心软件,负责管理硬件(CPU、内存、磁盘等)和软件资源(程序、数据)。核心作用:屏蔽硬件层复杂性,为应用程序提供统一的抽象接口,协调资源分配与调度。
2026-04-02 21:51:29
1120
原创 分岗位拆解:C++面试高频问题全景指南(2026版)
岗位匹配度 > 知识广度:深度比广度更重要项目经历 是差异化关键:准备1-2个有深度的项目沟通能力 是加分项:能清晰表达技术思考持续学习 是必需品:C++标准持续演进面试本质是解决问题能力的考察。无论哪个岗位,清晰的思路、扎实的基础、对性能的敏感度,都是面试官最看重的素质。把握岗位特点,针对性准备,你的面试成功率将提升300%。腾讯元宝为你提供精准的面试指导,助力你的技术之路。C语言/C++入门与项目实战C++八股文与大厂面经。
2026-03-02 14:08:42
750
原创 杀毒软件是 Windows 特产?揭秘 Win、macOS、Linux 的安全真相
三者都有杀毒需求,只是威胁程度和防护形态完全不同。Windows 因为用户基数大(约 75% 桌面份额),成为恶意软件的主要目标(约 70% 病毒针对它);而 macOS 和 Linux 并非 “不需要杀毒”,而是凭借生态机制和低市场份额,让普通用户几乎感受不到威胁。
2026-02-25 16:15:54
923
1
原创 Qt样式实现方式详解:六大方法全面解析
在Qt开发中,样式系统是构建美观、一致用户界面的核心。面试中常被问到的"Qt有多少种方法实现样式"问题,实际上考察的是开发者对Qt样式系统的全面理解。本文将系统性地解析六种主要的Qt样式实现方式,帮助你从容应对此类面试问题。通过继承QStyle类并重写绘制方法,可以实现完全自定义的样式系统。:绘制基本元素(PE_):绘制控件(CE_):绘制复杂控件(CC_):获取控件尺寸标准:获取样式提示public:// 自定义按钮背景} else {// 自定义控件绘制逻辑。
2026-02-02 14:44:36
802
原创 腾讯C++一面面经(基础导向,多技术领域全覆盖)
常规开场环节,主要用于快速建立面试官对个人的初步认知,建议简洁明了,突出个人技术栈、学习经历与求职意向,时长控制在1-2分钟为宜。本次腾讯一面聚焦计算机基础知识点,覆盖C++、设计模式、操作系统、计算机组成原理、Linux、计算机网络六大核心领域,无项目深挖,整体难度偏基础,主要考察候选人对基础知识的掌握扎实度。个人反思:因平时学习不够扎实,部分基础问题作答有误,面试后较为懊恼。
2026-01-27 20:22:11
720
原创 C++虚函数实现原理深度解析:从多态到底层机制
C++的多态特性是其面向对象设计的核心,而虚函数是实现多态的关键机制。理解虚函数的底层实现,不仅有助于编写高效的C++代码,也是面试中常被考察的重点。请详细阐述C++虚函数的实现原理,包括虚函数表、虚函数表指针的概念,以及在单继承、多继承和虚继承场景下的内存布局差异。通过深入理解虚函数的底层机制,开发者可以更好地利用C++的多态特性,设计出既灵活又高效的面向对象系统。:每个包含虚函数的类在编译时生成一个静态函数指针数组,存储该类所有虚函数的地址。:派生类的新虚函数附加到第一个基类的vtable末尾。
2026-01-22 13:36:53
869
原创 Qt信号与槽本质解析(面试复习版)
在Qt面试中,信号与槽(Signal & Slot)是高频核心考点,不仅会问本质定义,还会延伸到实现原理、使用场景及与传统回调的区别。本文从面试视角,梳理信号与槽的核心知识,帮你快速掌握应答要点。
2026-01-20 15:23:54
1359
原创 C++ 智能指针核心特性与 weak_ptr 关键问题解析
C++ 智能指针是基于RAII(资源获取即初始化)原则设计的内存管理工具,核心目标是替代原生指针管理动态内存,自动释放资源,避免内存泄漏、重复释放、悬空指针等手动内存管理错误。因设计缺陷被废弃,不推荐使用)。智能指针的核心价值是RAII 自动内存管理,不同类型适配 “独占 / 共享 / 观察” 三种资源管理场景;weak_ptr无法安全直接判断共享计数是否为 0,需通过expired()lock()间接判断对象是否销毁;shared_ptr。
2026-01-08 15:07:23
908
原创 C++右值引用与转移语义详解
在C++11标准之前,传统的左值引用虽能解决参数传递时的拷贝开销问题,但无法高效处理临时对象(如函数返回的临时变量、字面量等)的资源管理。临时对象的频繁创建与拷贝会导致性能损耗,尤其当对象包含堆内存等重量级资源时,这种损耗更为明显。为解决这一问题,C++11引入了右值引用(Rvalue Reference)和转移语义(Move Semantics)两大核心特性。它们的核心目标是:在不改变程序语义的前提下,通过“资源转移”替代“资源拷贝”,大幅提升临时对象相关操作的效率,同时完善了C++的引用体系。
2026-01-04 17:46:17
1008
原创 C++智能指针 vs 普通指针:告别内存泄漏的烦恼
简单说,智能指针就是“会自己清理的指针”。它像一个负责的管家,你创建对象后,它会自动在你不需要的时候清理内存。// 以前要这样(提心吊胆):// ... 用完后delete p;// 千万别忘了!// 现在可以这样(高枕无忧):// 完事了!
2025-12-30 15:59:13
648
原创 【C++】从零开始构建C++停车场管理系统:技术详解与实战指南
本文介绍了一个基于C++和MySQL的停车场管理系统开发教程。项目采用现代C++11/14特性,结合MySQL数据库和连接驱动,实现车辆入场登记、出场结算、停车查询等核心功能。
2025-12-26 21:52:15
1205
原创 【C++】学生管理系统设计与实现丨SQLite数据库版本
学生信息的完整管理(增删改查)多种查询方式(按学号、姓名、班级)成绩排序与统计分析SQLite数据库存储,保证数据持久化数据备份与恢复功能输入验证与错误处理本文详细介绍了一个基于SQLite数据库的C++学生管理系统的设计与实现。模块化设计:清晰的类结构和职责分离数据安全:使用SQLite数据库保证数据持久化和完整性代码健壮:完善的错误处理和输入验证性能优化:使用索引、事务等数据库优化技术易于扩展:良好的架构设计支持功能扩展该系统适合作为学习C++面向对象编程、数据库操作和软件工程实践的案例。
2025-12-18 17:57:45
1078
奇牛编程高级程序员-阶段考核-V2.0
2022-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅