
面试
文章平均质量分 63
深梦码农
知其然然后知其所以然,方始为善也!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QString 内存机制详解
QString 通过和:当字符串长度较小时,每次以固定步长进行扩容。具体而言,在字符串长度不超过20时,每次会增加4个字符的空间。:当字符串长度介于20和4084之间时,采用指数级增长策略,即每次将内存大小翻倍进行扩充,以满足快速增长的需求。:一旦字符串长度达到或超过4084,每次增加固定的2048个字符空间,这种策略有助于应对大规模字符串的操作需求。原创 2025-07-30 11:03:25 · 499 阅读 · 0 评论 -
TCP面试
------ SYN (seq=x) ---------------->| # 第一次握手。|------ 数据传输 ------------------->| # 连接建立,开始通信。|<---- SYN-ACK (seq=y, ack=x+1) ----| # 第二次握手。|------ ACK (ack=y+1) ------------->| # 第三次握手。1.确认号ack=x+1(表示已收到客户端的seq=x)。1.确认号ack=y+1(表示已收到服务器的seq=y)。原创 2025-07-30 10:33:56 · 1419 阅读 · 0 评论 -
抽象类不能实例化原因
纯虚函数使类成为抽象类。抽象类不能实例化,因为它的纯虚函数没有实现。抽象类的作用是强制派生类实现接口,提供多态的基础。这种机制保证了C++的多态性和接口设计的严谨性。原创 2025-07-21 19:49:04 · 279 阅读 · 0 评论 -
C++ RAII(资源获取即初始化)
RAII(Resource Acquisition Is Initialization,资源获取即初始化)是C++中一种重要的编程范式,用于管理资源(如内存、文件句柄、网络连接等)的生命周期。原创 2025-07-18 09:34:35 · 301 阅读 · 0 评论 -
C++ 类型转换详解
public:// 从C字符串转换。原创 2025-07-17 14:10:20 · 375 阅读 · 0 评论 -
C++ 内存泄漏产生的原因
内存泄漏是C++程序中常见的问题,指程序在动态分配内存后未能正确释放,导致内存资源无法被回收利用。原创 2025-07-17 09:16:58 · 240 阅读 · 0 评论 -
C++ shared_ptr 底层实现分析
shared_ptr。原创 2025-07-16 20:18:10 · 247 阅读 · 0 评论 -
如何定义一个只能在堆上或栈上生成对象的类
在C++中,可以通过特定的技术手段来控制对象只能在堆(heap)或栈(stack)上创建。原创 2025-07-15 20:01:11 · 369 阅读 · 0 评论 -
C++ auto 关键字详解
auto是 C++11 引入的关键字,用于自动类型推导,让编译器根据初始化表达式自动推断变量的类型。原创 2025-07-14 13:56:04 · 217 阅读 · 0 评论 -
C++ lambda表达式
Lambda 表达式是 C++11 引入的一种匿名函数特性,它允许你在需要函数的地方内联定义函数,而无需单独命名。原创 2025-07-14 10:57:40 · 347 阅读 · 0 评论 -
C++ const 关键字解析
这些值在程序运行期间不能被修改必须在定义时初始化。原创 2025-07-12 13:11:48 · 382 阅读 · 0 评论 -
C++ static 关键字详解
使用方式主要用途生命周期作用域静态局部变量保持函数调用间的状态程序整个运行期函数内部静态成员变量类级别的共享数据程序整个运行期类作用域静态成员函数不依赖实例的操作类作用域静态全局变量文件内部私有数据程序整个运行期文件内部静态全局函数文件内部私有函数文件内部。原创 2025-07-11 09:34:34 · 396 阅读 · 0 评论 -
C++ 指针数组和数组指针的概念
数组里存指针,用于管理多个独立对象(如字符串数组)。原创 2025-07-11 09:14:31 · 335 阅读 · 0 评论 -
C++ 函数指针、指针函数、回调函数的概念
用于存储和调用函数地址。原创 2025-07-11 09:11:05 · 375 阅读 · 0 评论 -
C++ struct 和 class 区别
特性structclass默认成员访问publicprivate默认继承方式publicprivate典型用途数据聚合封装和复杂逻辑根据代码语义选择:如果需要数据透明或简单聚合,优先用struct。如果需要隐藏实现细节,优先用class。原创 2025-07-10 10:25:49 · 428 阅读 · 0 评论 -
C++ 内存分布。 什么数据在栈区,什么数据在堆区
(通常几MB,Linux 默认 8MB,Windows 默认 1MB)。| 堆(Heap) | ← 动态分配(向上增长)| 栈(Stack) | ← 高地址(向下增长):由编译器自动分配和释放(函数调用时入栈,返回时出栈)。(未初始化的全局变量、静态变量,程序启动时自动清零)。| 代码区(Text Segment)| ← 低地址。| 常量区(.rodata) || .data(初始化数据) || .bss(未初始化数据)|原创 2025-07-09 13:47:51 · 596 阅读 · 0 评论 -
new/delete 和 malloc/free 的实现细节
程序员通常无需关心虚拟内存到物理内存的映射细节,除非开发底层系统(如OS内核)。操作系统捕获中断后,从物理内存中分配一页(或从交换空间加载),并更新页表。返回的内存时,CPU发现虚拟页未映射到物理页,触发缺页中断。的惰性分配减少了不必要的物理内存占用,但首次访问可能有延迟。先调用对象的析构函数(释放资源,如文件句柄、动态内存等)。是C++的内置函数,负责分配原始内存(底层通常调用。在分配的内存上调用对象的构造函数(初始化成员变量)。计算对象所需的内存大小(包括可能的对齐填充)。(如分配大小、对齐信息等)。原创 2025-07-09 09:17:59 · 337 阅读 · 0 评论 -
除了多态和继承还有什么面向对象方法
App(Logger* logger) : logger(logger) {} // 依赖注入。void deposit(double amount) { // 提供受控的访问方式。// Car "has-a" Engine(组合):将数据(成员变量)和操作数据的方法(成员函数)绑定在一起,并通过访问控制(void draw() override { // 必须实现。:适配器模式(Adapter)、装饰器模式(Decorator)。:观察者模式(Observer)、策略模式(Strategy)。原创 2025-07-08 16:48:31 · 566 阅读 · 0 评论 -
C++多态原理
多态是C++面向对象编程的核心特性,它允许通过统一的接口操作不同类型的对象。下面我将从底层机制到实际应用全面讲解C++多态的实现原理。原创 2025-07-07 15:12:30 · 963 阅读 · 0 评论 -
面向对象的三大特性和特征
特性:权限继承(public, protect, private);基类在子类的最高权限;怎么破坏继承(friend,using,)特性:访问权限(public, protect, private);静态多态,函数重载;动态多态,虚函数重写;目的:一个接口,多种形态,通过接口重用,增强可拓展性。目的:无需修改原有累的情况下通过继承实现对功能的拓展。目的:隐藏实现细节,实现模块化。原创 2024-10-28 19:57:20 · 237 阅读 · 0 评论 -
new delete和malloc free的区别
malloc分配空间的时候,申请的空间是16(16个字节,包含申请内存空间的大小)+mem,返回的是mem首地址,当要释放空间的时候,会左偏16位,得到所需释放空间的大小。3、new返回的是对象类型的指针,malloc返回的是void*,之后进行类型转换;1、new delete是C++的操作符,malloc free是C中的库函数。,它只是分配虚拟内存,创建对应的页表,但是没有在页表项中填写物理页的页号;6、delete需要对象内存的指针,free是void*类型的指针。delete的操作实现。原创 2024-10-28 09:03:34 · 240 阅读 · 0 评论 -
智能指针面试题
尽量使用make_shared来构造智能指针,不要通过get来操作裸指针,不要用一个指针构造多个智能指针对象)。多个对象通过share_ptr互相引用造成引用计数永远不为0,通过week_ptr解决,在循环引用的一方使用week_ptr来打破循环引用。智能指针怎么解决的:智能指针采用了RAII思想来自动化管理指针所指向的动态资源的释放,RAII主要利用了对象生命周期来控制程序资源,智能指针利用类的构造函数和析构函数来管理资源。智能指针的种类:shared_ptr、week_ptr、unique_ptr。原创 2024-10-24 21:08:34 · 367 阅读 · 0 评论 -
线程和进程的区别
2、资源开销:每个进程都有独立的代码和数据空间(程序上下文),进程之间切换开销比较大;同一进程内的线程共享此进程的代码和数据空间,只拥有自己独立的运行栈和程序计数器(PC),线程之间切换的开销较小。多进程比多线程要健壮。使用场景:对资源的管理和保护要求高,不限制开销和效率时,使用多进程。4、内存分配:同一进程中的线程共享此进程的内存空间和资源;1、本质区别:进程是操作系统资源分配的基本单位,线程是cpu任务调度和执行的基本单位。3、包含关系:线程是进程的一部分,同一进程可以包含一个或多个进程。原创 2024-10-24 10:54:03 · 429 阅读 · 0 评论