嵌入式模拟面试拷打【8】

1. 虚拟内存

  • 虚拟内存是一种内存管理技术,允许操作系统为每个进程提供一个逻辑上连续的地址空间。
  • 虚拟内存将物理内存和磁盘空间结合,使得程序能够使用比实际物理内存更多的内存。
  • 它通过页面置换算法管理内存的使用,提高了内存的利用率,并且隔离了各个程序的内存空间,增加了系统的安全性和稳定性。

2. 面向对象

  • 面向对象编程(OOP)是一种编程范式,通过类和对象封装数据和操作。

  • OOP 的优势在于提高代码的可复用性、可扩展性和可维护性。

3. 面向对象的三大特性

  • 封装:将数据和操作封装在类中,隐藏内部实现,提供公共接口。
  • 继承:通过继承复用代码,创建层次结构,子类可以继承父类的属性和方法。
  • 多态:允许不同类型的对象通过同一接口进行操作,分为静态多态和动态多态。

4. 什么是多态?多态如何实现?

  • 多态是指不同对象可以通过同一接口进行操作。在 C++ 中,多态通过虚函数实现。

  • 子类可以重写父类的虚函数,在运行时决定调用哪个函数,从而实现不同对象的统一处理。

5. 静态多态与动态多态

  • 静态多态:编译时决定调用哪个函数,主要通过函数重载和模板实现。
  • 动态多态:运行时决定调用哪个函数,通过虚函数和基类指针实现,支持在运行时调用子类的实现。

6. C++ 11 新特性

C++ 11 引入了许多新特性,包括:

  • 自动类型推导:使用 auto 关键字自动推导变量类型。
  • 智能指针std::unique_ptrstd::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),在运行时通过这个指针找到并调用正确的函数。这一机制允许动态绑定,从而支持多态性。

#牛客创作赏金赛#
SAGIMA嵌入式模拟面试拷打 文章被收录于专栏

一些八股模拟拷打Point,万一有点用呢

全部评论

相关推荐

醒工硬件:如果你想投硬件,可以考虑这么改: 1.个人荣誉没太有保留价值,除非一页凑不满 2.主修课程太多了,可以考虑删减一部分,或者分成硬件和嵌入式2个简历,侧重点不一样 3.个人技能放到学习经历下面,项目经历上面。学习一下AD画板,你有基础一两周也差不多学会了,面试官问你就说你会(总不能拉你实操吧),公司里一般用AD和Cadence比较多,AD好上手一些。增加常用仪器工具说明,例如示波器、信号发生器、电子负载、烙铁、风枪等 4.项目,项目可以多换换行,挤在一起不好阅读。可以说下红外那边用什么接口,蓝牙那边用什么接口,用了哪些关键技术点,多用术语。如果你投硬件,就增加项目1描述比重,降低项目2描述比重
点赞 评论 收藏
分享
01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客企业服务