栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++目录型笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++目录型笔记

前言 正文 经验
    如何获得结构成员相对于结构开头的字节偏移量:offsetof(S,x);浮点数的值如何比较大小?不能直接用是否相等的方式比较两个数是否相等,只能用两个数相减,然后是否符合某个精度。引用传递和指针传递是不同的:任何对于形参引用的操作都会通过一个间接寻址的方式操作到主调函数中的相关变量。而指针传递的话,即使在被调函数中改变指针地址,也无法应用到主调函数中的相关变量。动态建立对象:先执行operator new ,在内存中查找一块合适的地址,然后调用类的构造函数构造对象。调用者如何调用被调函数:使用Call指令调用被调函数,然后将下一条指令压入栈中,待该函数处理完毕,再将这下一条指令进行出栈。C++中提供了explicit关键字,在构造函数声明的时候加上explicit关键字,能够禁止隐式转换。一个类对象的地址就是类所包含的这一片内存空间的首地址。所有的函数都是存放在代码区的,不管是全局函数还是成员函数又或者是静态函数。所以,类的大小由成员变量所决定。静态成员函数与一般成员函数的区别就在于:静态成员函数没有this指针,因此不能访问非静态数据成员。且this指针只能在成员函数中使用,全局函数,静态函数都不能使用this指针。this指针是在成员函数开始执行前创建的,在成员的执行结束后清除。delete的本质:为被释放的内存调用一个或多个析构函数。然后,释放内存。空类的大小:为了让对象的实例能够相互区别。并且每个实例都是独一无二的,所以空类的大小为1. 其空类的实例的大小也为1.静态成员不占用类的大小。其存放在静态存储区。当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。弱引用指针与普通指针的一个比较大的区别就是:弱引用能检测到所管理的对象是否已经被释放,从而避免非法访问内存。RALL(Resource Acquisition is Initialization):资源获取即初始化。也就是在构造函数中申请分配资源,在析构函数中申请释放资源。即使是同一个值的Integer对象,那么也是生成不同的对象。所以通过 Map 做了映射,不管你 new 多少个 Integer 出来,这多个 Integer 都会被映射为同一个 Integer,从而保证即使超出 Integer 缓存范围时,也只有一把锁。定义:减少常见的错误,能够更快的定位错误,提升运行性能。永远不要在用ranged-for的时候修改容器自身。说不要判断this 为nullptr,这是UB行为。不要判断对象的引用是nullptr,这是UB行为。永远认为引用所指向的对象是一个存在的对象。避免在switch语句中使用default不要返回裸指针,类似于:int *get_value();优先用栈而不是堆
1. 手写shared_ptr 2. 请说出二分查找的实现思路及时空复杂度 2. 虚函数的相关概念(请你谈谈虚函数) 2.0 构造函数可以是虚函数吗 2.1. C++类有继承时,析构函数必须为虚函数 2.2 虚函数与纯虚函数的差别 2.3 纯虚函数实现原理 2.4 虚函数是否可以是内联函数? 2.5 虚函数和虚函数表的存放地址 2.6 如何获得虚函数表的地址 2.7 虚函数表带来的安全性问题 2.8 虚函数到底虚在哪 2.9 父子继承时候,它构造函数和析构函数的顺序? 2.10 析构时候,如何让父子类里所有的析构都调用一遍? 2.11 C++虚函数的实现原理(底层结构) 2.12 函数指针与指针函数 2.13 虚函数的使用场景 2.14. 在有继承关系的父子类中,构建和析构一个子类对象时,父子构造函数和析构函数的执行顺序分别是怎样的? 2.15. 在有继承关系的类体系中,父类的构造函数和析构函数一定要申明为 virtual 吗?如果不申明为 virtual 会怎样? 2.16. C++ 空类默认产生的类成员函数 2.17. C++空类的大小,加一个函数呢?加一个虚函数呢? 3. C++ 四种强制类型转换 3.1 const_cast 3.2 static_cast 3.3 dynamic_cast 3.4 reinterpre_cast 4. vector怎么删除重复的元素 4.1 vector的底层原理?删除一个元素底层会做什么事情? 4.2 vector 扩容的本质 4.3 vector的push_back() 4.4 vector的插入,删除 4.5 emplace_back VS push_back 5.深拷贝和浅拷贝 6. LRU 7. 静态多态与动态多态的相关概念 7.1 静态多态和动态多态是如何实现的? 7.1_1 为什么C语言中没有重载呢? 7.2 多态性指的是什么?(什么是多态) 7.3 使用多态的过程中应注意什么点? 7.4. 讲一下对多态的理解 7.7. 哪些C++成员函数不能用多态 13. 关键字const的含义、作用与优点 13.1 const如何修改 14. 海量数据处理面试题 14.1Top(K)一般处理方式 14.2海量日志处理,提取出日访问百度次数最多的IP地址 14.3 如何从 100 亿 URL 中找出相同的 URL? 14.4 位图法 15. 解释一下HashMap这个数据结构 16. 请说一下C/C++ 中指针和引用的区别? 19.1 引用的底层原理 21. 你知道什么树? 21.1完全二叉树 21.2二叉查找树(二叉排序树) 21.3平衡二叉树(二叉搜索树) 21.4 avl树是什么结构,让我说一下怎么插入,插入后怎么旋转。 22. C语言中的strlen与sizeof的区别 23. C++ 友元是什么 29.1 排序算法集合 29.1 快排(算一下快排复杂度,计算过程) 29.2 堆排(算一下复杂度) 31. 二叉树后序中序遍历 32. 红黑树 32.1 红黑树与AVL树的比较: 32.2 红黑树特性。 32.3 红黑树查找速度。 32.4 红黑树的插入 32.5 红黑树与B+树的比较?(B树与B+树的介绍) 1. 简介 2. B树的定义: 3. B+树的定义 4. B+树的其他要求: 5. B树的缺点(为何要用B+数在数据库的查找上应用) 6.B树和B+树的区别: 7.B+树的优点 8. B树相对于红黑树的区别: 9.红黑树 和 b+树的用途有什么区别? 10. B/B+树性能分析 11. 为什么说B+树比B树更适合数据库索引? 32.6 红黑树的应用 32.7 mysql中为何要使用B+树? 50.vector的底层工作原理 51. map与unordered_map优点和缺点 51.1 何时使用map,何时使用HashMap? 51.2 map中的key如果是结构体应该注意什么? 52.2 hash与map的区别 52. 对哈希函数的理解 52.1 一致性哈希算法的理解 53. 如何实现栈? 53.1 如何用队列实现栈? 54. Vector,ArrayList 与linkedList 的区别
55.[解析c++中函数重载的实现原理](https://blog.csdn.net/qq_40840459/article/details/78510939)
55. const 和 define的区别 56. C++11的新特性 60.1 智能指针 60.1_1 智能指针的作用 60.1_2 智能指针的理解 60.1_3 智能指针的使用 60.1_4 智能指针存在相互引用的问题,如何解决? 60.1_5 智能指针的本质? 60.1_6 std::weak_ptr如何强制类型转换为std::shared_ptr 61. c++源文件从文本到可执行文件经历的过程(gcc编译的过程) 62.请你回答一下malloc的原理,另外brk系统调用和mmap系统调用的作用分别是什么? 62.1 new和malloc的区别 62.2 new的底层实现

62.2_1 new和delete的实现原理, delete是如何知道释放内存的大小的?
62.2_2、new分配的内存是虚拟内存还是物理内存

62.3 mmap了解过吗?

63.树的储存

66.1拷贝构造和移动构造 66.2 什么情况下必须使用拷贝构造函数 ?string类的拷贝构造函数 66.3 拷贝构造函数 66.3 左值与右值的区别
    STL的基本组件
67.1 一个空类占用的内存大小是多少?
    递归太深有什么影响?请你谈谈 C++内存模式堆内存和栈内存的区别?重载和重写的区别DFS和BFS算法select和epoll区别?它们算同步还是异步io,同步异步区别在哪里
76.1 epoll的底层原理? 76.1_1:epoll的ET(Edge Triger)和LT(Level Trig)模式 76.2 select的底层原理 76.2 IO多路复用的含义 76.3 说出 你所知道的IO多路复用模型,并解释为什么IO多路复用效率高?
    HashMap的面试题。
78.1 如何自己实现一个Hash? 78.2 你看过hashmap的源码吗? 78.3 hash冲突你还知道哪些解决办法? 78.4 为什么HashMap不用linkedList,而选用数组? 78.5 那ArrayList,底层也是数组,查找也快啊,为啥不用ArrayList? 78.6 为什么hashmap的在链表元素数量超过8时改为红黑树? 78.7 HashMap在并发编程环境下有什么问题啊? 79 说一个你熟悉的设计模式 79.1 单例模式 79.2 工厂模式
    extern“C”{}有什么用?static的作用
    85.vector和list区别,resize和reserve区别,erase底层
85.1 vector/list/map/deque的底层实现,增删改查复杂度

Vector
list
map
88.程序编译和链接了解吗,有什么作用?

88.1 静态链接和动态链接的差别 88.2 动态链接库的两种链接方法
    移动构造函数在何时使用?C++多重继承会带来什么问题?(菱形继承)
92.1 所以菱形继承的解决方案是啥?
    结构体和类的区别(struct与class的区别)?
97.1 struct 和 union区别 97.2 struct中的字节对齐机制 97.3 C和C++中结构体的不同
    哈希算法原理?mutable和volatile是啥呀?vector的resize和reserve有什么不同啊?malloc是如何实现的(malloc的底层实现原理)?
    101.0 内存相关图例
    101.1 内存的管理方式
    101.2 在Linux下是如何使用malloc的?3 malloc管理内存的方式智能指针中的强指针和弱指针。Qt的智能指针指针数组的使用?
    111.c语言函数参数的入栈顺序为从右向左的原因?
    113.函数的调用栈是怎么实现的?32位和64位指的是一个什么样的概念
    118.数据结构中数组和链表的区别C++ move用法
    129.1 std::move的底层原理移动语义和完美转发
    131.结构体对齐方式、意义
    135.常量指针和指针常量区别
    136.typedef和define区别string的底层原理虚继承的作用
    147.STL数据结构集合C语言如何实现面向对象编程alloca ,malloc,calloc,realloc,free
    150.stdcall和cdecl的区别?迭代器失效的几种情况布隆过滤器的作用空指针的深入了解STL源码中的traits模板
    155_1. 函数模板与类模板的区别extern与static的区别声明和定义的区别STL集锦
    158_1. priority_queue重写C函数
    159_1.重写strcpy函数
    159_2. memcpy的重写阻塞与非阻塞的区别内联函数与宏的区别大端模式与小端模式
    163.volatile、mutable和explicit关键字的用法static的作用const关键字的作用new的工作原理
    167.delete的工作原理malloc的实现原理malloc、realloc、calloc的区别函数体内初始化与函数列表初始化的区别对象复用 和零拷贝技术函数参数的压栈顺序C++中将临时变量作为返回值时的处理过程const char* 与char* 与string的相互转化
    174_1. string转const char*
    174_2. const char* 转string,直接赋值即可
    174_3. string 转char*
    174_4. char* 转string
    174_5. const char* 转char*
    174_6. char* 转const char*,直接赋值即可类对象的大小受哪些因素影响?C++中的new、operator new与placement new内存管理相关笔记前置声明和include 的区别与作用C语言free()函数如何释放动态分配的内存空间?可以在C++的成员函数里调用delete this吗?
    180_1. 在类的析构函数中调用delete this?
    180_2. 在实际测试中,出现的情况?
    180_3. 对于this指针的描述?
    180_4.对this指针的注意事项?成员函数与非成员函数?
142. 如何在main()函数之前执行一些代码 参考
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号