秋招日寄|嵌入式模拟面试拷打|20241101
1. 虚拟内存
- 虚拟内存是一种内存管理技术,允许操作系统为每个进程提供一个逻辑上连续的地址空间。
- 虚拟内存将物理内存和磁盘空间结合,使得程序能够使用比实际物理内存更多的内存。
- 它通过页面置换算法管理内存的使用,提高了内存的利用率,并且隔离了各个程序的内存空间,增加了系统的安全性和稳定性。
2. 面向对象
-
面向对象编程(OOP)是一种编程范式,通过类和对象封装数据和操作。
-
OOP 的优势在于提高代码的可复用性、可扩展性和可维护性。
3. 面向对象的三大特性
- 封装:将数据和操作封装在类中,隐藏内部实现,提供公共接口。
- 继承:通过继承复用代码,创建层次结构,子类可以继承父类的属性和方法。
- 多态:允许不同类型的对象通过同一接口进行操作,分为静态多态和动态多态。
4. 什么是多态?多态如何实现?
-
多态是指不同对象可以通过同一接口进行操作。在 C++ 中,多态通过虚函数实现。
-
子类可以重写父类的虚函数,在运行时决定调用哪个函数,从而实现不同对象的统一处理。
5. 静态多态与动态多态
- 静态多态:编译时决定调用哪个函数,主要通过函数重载和模板实现。
- 动态多态:运行时决定调用哪个函数,通过虚函数和基类指针实现,支持在运行时调用子类的实现。
6. C++ 11 新特性
C++ 11 引入了许多新特性,包括:
- 自动类型推导:使用
auto
关键字自动推导变量类型。 - 智能指针:
std::unique_ptr
和std::shared_ptr
,提供更安全的内存管理。 - lambda 表达式:简化了函数对象的使用,便于编写回调函数。
- 右值引用和移动语义:通过移动语义提高性能,避免不必要的拷贝。
7. C 和 C++ 的区别
- 面向对象:C 是面向过程的语言,C++ 支持面向对象编程,提供类和对象的概念。
- 标准库:C++ 提供更丰富的标准库,包括 STL(标准模板库)。
- 类型检查:C++ 的类型检查更严格,支持函数重载和模板。
8. Python 和 C++ 的区别
- 语法:Python 的语法更简洁,适合快速开发;C++ 语法复杂,但灵活性更高。
- 性能:C++ 性能更高,因为它编译为本地代码,而 Python 运行在解释器上。
- 内存管理:Python 有自动垃圾回收,而 C++ 需要手动管理内存。
9. 重载、重写、隐藏的区别
- 重载:同一作用域内,函数名称相同但参数不同,编译器根据参数类型和数量决定调用哪个函数。
- 重写:子类重写父类的虚函数,以实现不同的功能。
- 隐藏:子类定义了与父类同名但不同参数的函数,隐藏了父类同名函数。
10. 如何理解 C++ 是面向对象编程
-
C++ 支持面向对象编程,通过类、继承和多态等特性,使程序员能够创建和操作对象,利用封装、继承和多态实现代码复用和扩展。
-
C++ 提供了丰富的工具来设计复杂的软件结构。
11. 类相关
-
类是 C++ 中的基本构造,包含数据成员和成员函数。通过类,可以创建对象,实现数据封装和功能抽象。
-
构造函数用于初始化对象,析构函数用于清理资源。
12. 什么是虚函数?什么是纯虚函数?
- 虚函数:在基类中使用
virtual
关键字声明的函数,允许在派生类中重写。虚函数支持多态性。 - 纯虚函数:在基类中声明为纯虚函数(如
virtual void func() = 0;
),表示该函数没有实现,必须由派生类实现,使得基类成为抽象类,无法实例化。
13. 虚函数与纯虚函数的区别
-
虚函数可以有默认实现,而纯虚函数没有实现,必须由子类实现。
-
纯虚函数使得类成为抽象类,不能被实例化。
-
虚函数允许可选的重写,而纯虚函数强制子类提供实现。
14. 虚函数的实现机制
虚函数通过虚函数表(vtable)实现。每个含有虚函数的类都有一个虚函数表,表中存储了该类及其继承链上所有虚函数的地址。对象中包含一个指向该表的指针(vptr),在运行时通过这个指针找到并调用正确的函数。这一机制允许动态绑定,从而支持多态性。
#牛客创作赏金赛#秋招日寄|嵌入式模拟面试拷打 文章被收录于专栏
一些八股模拟拷打Point,万一有点用呢