(纯干货)面试 | C++面试宝典

目标检测与深度学习

共 2473字,需浏览 5分钟

 · 2021-09-16

点击左上方蓝字关注我们



一个专注于目标检测与深度学习知识分享的公众号

编者荐语
作者将自己在面试过程中被问的和自认为重要的面试题整理出来,希望对大家有所帮助。其中的一些问题,也在作者曾经发过的文章中有详细的介绍,同时附上相应的链接,方便大家阅读。

# 干了这碗鸡汤

别为难自己,活得像你自己就行了


-- 东野圭吾




01

C语言

  1. const的作用有哪些,谈一谈你对const的理解?

  2. 描述char*、const char*、char* const、const char* const的区别?

  3. 指针常量和常量指针有什么区别?

  4. static的作用是什么,什么情况下用到static?

  5. 全局变量与局部变量的区别?

  6. 宏定义的作用是什么?

  7. 内存对齐的概念?为什么会有内存对齐?

  8. inline 内联函数的特点有哪些?它的优缺点是什么?

  9. 如何用C 实现 C++ 的面向对象特性(封装、继承、多态)

  10. memcpy怎么实现让它效率更高?

  11. typedef和define有什么区别?

  12. extern有什么作用,extern C有什么作用?

  13. 如何避免野指针?

  14. 如何计算结构体长度?

  15. sizeof和strlen有什么区别?

  16. 知道条件变量吗?条件变量为什么要和锁配合使用?




02



C++基础

  1. C语言和C++有什么区别?
  2. struct和class有什么区别?
  3. extern "C"的作用?
  4. 函数重载和覆盖有什么区别?
  5. 谈一谈你对多态的理解,运行时多态的实现原理是什么?
  6. 对虚函数机制的理解,单继承、多继承、虚继承条件下虚函数表的结构
  7. 如果虚函数是有效的,那为什么不把所有函数设为虚函数?
  8. 构造函数可以是虚函数吗?析构函数可以是虚函数吗?
    面试系列之C++的对象布局【建议收藏】
  9. 什么场景需要用到纯虚函数?纯虚函数的作用是什么?
  10. 了解RAII吗?介绍一下?
    RAII妙用之计算函数耗时
    RAII妙用之ScopeExit
  11. 类的大小怎么计算?
  12. volatile关键字的作用?什么时候需要使用volatile关键字
  13. 如何实现一个线程池?C++线程池的实现之格式修订版
  14. 了解各种强制类型转换的原理及使用?
  15. 指针和引用有什么区别?什么情况下用指针,什么情况下用引用?
  16. 一般什么情况下会出现内存泄漏?怎么用C++在编码层面尽量避免内存泄漏。
  17. unique_ptr如何转换所有权?
  18. 谈一谈你对面向对象的理解
  19. 什么场景下使用继承方式,什么场景下使用组合?

  20. new和malloc有什么区别?
  • malloc的内存可以用delete释放吗?

  • malloc出来20字节内存,为什么free不需要传入20呢,不会产生内存泄漏吗?

  • new[]和delete[]一定要配对使用吗?new[]和delete[]为何要配对使用?


21. C++11新特性你都了解多少?


22. STL
  • C++直接使用数组好还是使用std::array好?std::array是怎么实现的?

  • std::vector最大的特点是什么?它的内部是怎么实现的?resize和reserve的区别是什么?clear是怎么实现的?

  • deque的底层数据结构是什么?它的内部是怎么实现的?

  • map和unordered_map有什么区别?分别在什么场景下使用?

  • list的使用场景?std::find可以传入list对应的迭代器吗?

  • string的常用函数



03

设计模式

如果你能知道所有的设计模式最好,即便不知道所有的设计模式,下面这些高频设计模式你还是需要了解的。
  1. 分别写出饿汉和懒汉线程安全的单例模式
  2. 说出观察者模式类关系和优点
  3. 说出代理模式类关系和优点
  4. 说出工厂模式概念和优点
  5. 说出构造者模式概念
  6. 说出适配器模式概念



04

操作系统

  1. 进程和线程的区别?深度好文|面试官:进程和线程,我只问这19个问题
  2. 操作系统是怎么进行进程管理的?
  3. 操作系统是如何做到进程阻塞的?
  4. 进程之间的通信方式有哪些?
  5. 什么是上下文切换,操作系统是怎么做的上下文切换?
  6. 线程是如何实现的?
  7. 线程之间私有和共享的资源有哪些?
  8. 一般应用程序内存空间的堆和栈的区别是什么?
  9. 进程虚拟空间是怎么布局的?10张图22段代码,万字长文带你搞懂虚拟内存模型和malloc内部原理
  10. 虚拟内存是如何映射到物理内存的?了解分页内存管理吗?操作系统内存管理,你能回答这8个问题吗?
  11. 产生死锁的必要条件有哪些?如何避免死锁?
  12. 什么是大端字节,什么是小端字节?如何转换字节序?
  13. 信号和信号量的区别是什么?
  14. 锁的性能开销,锁的实现原理?
  15. 了解CPU的Cache吗?如何写一个高效的多维矩阵乘法?如何利用CPU Cache写出高性能代码,看这些图就够了!



05

编译原理

  1. gcc hello.c 这行命令具体的执行过程,内部究竟做了什么?gcc a.c 究竟经历了什么?
  2. 程序一定会从main函数开始运行吗?
  3. 如何确定某个函数有被编译输出?
  4. 动态链接库和静态链接库的区别是什么?Linux 为什么要动态链接?与静态链接的区别是什么?


END



双一流大学研究生团队创建,专注于目标检测与深度学习,希望可以将分享变成一种习惯!

整理不易,点赞支持一下吧↓

浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报