口头面试题
C++
初级
基础语法和概念
- C 与 C++ 的区别?
- 指针是什么?引用是什么?与指针有什么区别?
new、delete与malloc、free有什么区别?static关键字有哪些用途?define与const有什么区别?- 如何定义一个类?
- 简单描述面向对象的三大基本特征
- 什么是构造函数,析构函数,作用是什么?
- 类如何继承?
class与struct有什么区别?- C++ 中有几种传递参数的方式?
const char* p; char const *p; char * const p;三者有什么区别?- 堆与栈的区别?
- 重复释放一个资源(文件、new 出的内存)会出现会么结果?
- 数组作为参数时可以改变数组内容,而其他类型如 int 却不会,为什么?
const关键字?有什么作用?- 内联函数相比于与
#define的优势? assert的用法?
基本编程
- 如何在 C++ 中实现单例模式?
- 如何实现多态?
- 如何实现文件读写操作?
STL
std::vector与std::list有什么区别?- 如何使用
std::vector - 如何使用
std::map - 迭代器是什么?有什么作用?
中级
基础语法和概念
- 有没有什么情况是指针能实现但引用不能实现的?
- 成员方法前 const 与后
const有什么区别? - 重载
overload、重写override、重定义redefine有的区别? - 一个没有任何成员的类 A,
sizeof(A)的结果,为什么? - 如何避免内存泄漏?
- 所有的运算符都能重载吗?
- 模板编程是什么?
- 如何定义函数模板?
- 什么是内存对齐?有什么好处?
nullptr与NULL区别?- 有了
typedef,为何还会增加一个using
面向对象
- 虚函数是什么?它是如何实现多态?
- 纯虑函数是什么?抽象类是会么?存在意义是什么?
- 如何处理菱形继承带来的问题?
- 构造函数可以是虚函数吗?为什么?
- 基类的析构函数不是虚函数会带来什么问题?
STL
- 从实现角度为看,
std::vector与std::list哪个效率更高?为什么? std::vector的push_back与emplace_back有什么区别?std::array较std::vector有什么优势?std::function是什么?lambda表达式?std:map与std::unordered_map有什么区别?- 如何将一个自定义类型做为
std::map、std::unordered_map的键? - 说出使用较多的
stl的容器或算法? - 什么是
std::algorithm库?有哪些常用的方法?挑一两个说说
内存管理
- 什么是智能指针?用过哪些?
- 如何创建线程?
- 在多线程环境中,如何处理资源抢夺的问题?
- 什么是线程同步?在 C++ 中如何实现?
- 什么是死锁?如何避免?
- 什么是 RAII(资源获取即初始化)?有什么作用?
高级
原理
- C++ 里是不是所有的操作都是
main()引起的? - 什么是左值?右值?左值引用?右值引用?使用场景?
- 移动语义
- 智能指针的实现原理?
- 在存在
const的情况下, 为什么还存在一个constexpr的关键字?
系统编程
- 什么是进程间通信?C++ 中有哪些 IPC 机制?
- 什么是内存映射文件?有什么用?如何使用?
- 如何实现一个线程池?
- 如何使用
std::async与std::future实现异步任务?
性能优化
- 如何处理内存碎片?
- 什么是缓存优化?如何使用缓存优化?
- 现实使用场景下,
std::vector与std::list的效率对比与实现角度上有区别吗?为什么? - 如何优化 IO 性能?
- 如何减少应用的启动耗时?
架构设计
- 说说常用的设计模式,并详细描述如何使用它,解决了什么问题?
- 什么是模块化设计?如何实现?模块与模块之间如何通信?
- 如何设计一个高效的日志系统?
- 如何实现一个支持几十甚至上百种手段的支付系统?用 if-else 吗?
- 除了 MVC,还知道其他的结构吗?
- 在 MVC 这种 Service 与 View 分离的情况下,View 层如何通知 Service 触发了事件?
高级编程
- 如何定义类模板?
- 什么是模板特化?偏特化?全特化?
- 如何实现静态多态?CRTP?
现代 C++ 特性
- C++11、C++14、C++17 有哪些好用的新特性?
5643

被折叠的 条评论
为什么被折叠?



