首页 > 影石嵌入式1面
头像
elliot19
发布于 04-13 21:57 甘肃
+ 关注

影石嵌入式1面

C++相关

  1. 简单介绍一下OOP(面向对象)的特性是什么?

    • 继承、封装、多态
  2. 平时写代码(C++)写的比较多是吗?

  3. 有用过哪些设计模式呢?(比如工厂模式有了解吗?)

    • 没答上,之后优先看设计模式部分
  4. 你提到的内存管理熟悉,具体是指哪一部分?(内存碎片还是内存回收?)

    • 内存回收:RAII原则,“以对象管理资源”
  5. 如果用智能指针,会出现没有被释放掉的情况吗?

    • 循环引用
    • 智能指针虽然极大降低了内存管理的心智负担,但它管理的是对象的生命周期。如果我们在逻辑上创造了闭环的引用关系(如循环引用),或者错误地移交了所有权(如 release 之后未手动释放),内存依然会泄露。因此,理解 shared_ptr 的引用计数机制和 weak_ptr 的辅助作用是至关重要的。
  6. 有了解过 weak_ptr 吗?它的工作原理是什么?

  7. 你有了解过RAII编程规范吗?

    • 将资源的生命周期和对象的生命周期绑定
    • 封装资源: 设计一个类来封装资源(如一个 FileHandler 类封装文件句柄)。
    • 构造函数获取资源: 在构造函数中完成资源的初始化。如果获取失败,抛出异常。
    • 析构函数释放资源: 在析构函数中完成资源的释放。
    • 使用栈对象: 在业务代码中通过创建该类的局部对象(栈对象)来使用资源。
  8. 弱引用(weak_ptr)是为了解决什么样的问题?

  9. 弱引用的实现原理是什么样的?

  10. 弱引用在C++中一般处于什么样的一个设计模式?

  11. 如果出现了内存泄露或“踩内存”,你一般是怎么去定位的?

  12. new 方法和 malloc 有什么区别?

  13. 你有了解过一些标准的内存申请库文件吗?

  14. 你了解“零拷贝”这个概念吗?

操作系统相关

  1. 关于操作系统,你主要对哪一块比较熟悉?
  2. 简单讲一下进程和线程之间的区别是什么?
  3. 多进程之间通信(IPC)一般有哪些方法?
  4. 多线程之间通信,如果想把本地数据传给对端,能直接把指针传给对方吗?
  5. 如果不能传指针,你要怎么进行数据传输?(如果不传指针传什么?)
  6. 你说直接传申请的一片内存,那这个内存什么时候释放?(是一调接口就直接清理掉吗?会不会传到一半就被释放了?)

全部评论

(1) 回帖
加载中...
话题 回帖

近期热帖

热门推荐