C++口头面试题

口头面试题

C++

初级

基础语法和概念
  • C 与 C++ 的区别?
  • 指针是什么?引用是什么?与指针有什么区别?
  • newdeletemallocfree 有什么区别?
  • static 关键字有哪些用途?
  • defineconst 有什么区别?
  • 如何定义一个类?
  • 简单描述面向对象的三大基本特征
  • 什么是构造函数,析构函数,作用是什么?
  • 类如何继承?
  • classstruct 有什么区别?
  • C++ 中有几种传递参数的方式?
  • const char* p; char const *p; char * const p; 三者有什么区别?
  • 堆与栈的区别?
  • 重复释放一个资源(文件、new 出的内存)会出现会么结果?
  • 数组作为参数时可以改变数组内容,而其他类型如 int 却不会,为什么?
  • const 关键字?有什么作用?
  • 内联函数相比于与 #define 的优势?
  • assert 的用法?
基本编程
  • 如何在 C++ 中实现单例模式?
  • 如何实现多态?
  • 如何实现文件读写操作?
STL
  • std::vectorstd::list 有什么区别?
  • 如何使用 std::vector
  • 如何使用 std::map
  • 迭代器是什么?有什么作用?

中级

基础语法和概念
  • 有没有什么情况是指针能实现但引用不能实现的?
  • 成员方法前 const 与后 const 有什么区别?
  • 重载 overload 、重写 override 、重定义 redefine 有的区别?
  • 一个没有任何成员的类 A,sizeof(A) 的结果,为什么?
  • 如何避免内存泄漏?
  • 所有的运算符都能重载吗?
  • 模板编程是什么?
  • 如何定义函数模板?
  • 什么是内存对齐?有什么好处?
  • nullptrNULL 区别?
  • 有了 typedef,为何还会增加一个 using
面向对象
  • 虚函数是什么?它是如何实现多态?
  • 纯虑函数是什么?抽象类是会么?存在意义是什么?
  • 如何处理菱形继承带来的问题?
  • 构造函数可以是虚函数吗?为什么?
  • 基类的析构函数不是虚函数会带来什么问题?
STL
  • 从实现角度为看,std::vectorstd::list 哪个效率更高?为什么?
  • std::vectorpush_backemplace_back 有什么区别?
  • std::arraystd::vector 有什么优势?
  • std::function 是什么?
  • lambda 表达式?
  • std:mapstd::unordered_map 有什么区别?
  • 如何将一个自定义类型做为 std::mapstd::unordered_map 的键?
  • 说出使用较多的 stl 的容器或算法?
  • 什么是 std::algorithm 库?有哪些常用的方法?挑一两个说说
内存管理
  • 什么是智能指针?用过哪些?
  • 如何创建线程?
  • 在多线程环境中,如何处理资源抢夺的问题?
  • 什么是线程同步?在 C++ 中如何实现?
  • 什么是死锁?如何避免?
  • 什么是 RAII(资源获取即初始化)?有什么作用?

高级

原理
  • C++ 里是不是所有的操作都是 main() 引起的?
  • 什么是左值?右值?左值引用?右值引用?使用场景?
  • 移动语义
  • 智能指针的实现原理?
  • 在存在 const 的情况下, 为什么还存在一个 constexpr 的关键字?
系统编程
  • 什么是进程间通信?C++ 中有哪些 IPC 机制?
  • 什么是内存映射文件?有什么用?如何使用?
  • 如何实现一个线程池?
  • 如何使用 std::asyncstd::future 实现异步任务?
性能优化
  • 如何处理内存碎片?
  • 什么是缓存优化?如何使用缓存优化?
  • 现实使用场景下,std::vectorstd::list 的效率对比与实现角度上有区别吗?为什么?
  • 如何优化 IO 性能?
  • 如何减少应用的启动耗时?
架构设计
  • 说说常用的设计模式,并详细描述如何使用它,解决了什么问题?
  • 什么是模块化设计?如何实现?模块与模块之间如何通信?
  • 如何设计一个高效的日志系统?
  • 如何实现一个支持几十甚至上百种手段的支付系统?用 if-else 吗?
  • 除了 MVC,还知道其他的结构吗?
  • 在 MVC 这种 Service 与 View 分离的情况下,View 层如何通知 Service 触发了事件?
高级编程
  • 如何定义类模板?
  • 什么是模板特化?偏特化?全特化?
  • 如何实现静态多态?CRTP?
现代 C++ 特性
  • C++11、C++14、C++17 有哪些好用的新特性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的sun&shine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值