cpp 八股复习

1.讲解一下 cpp 新特性的理解

CPP 的新特性主要是在 C++11 前后的变化,主要包括自动类型推导,lambda 表达式,右值引用和移动语义,智能指针和线程池的引入。

智能指针提供了自动管理堆上空间的方法,可以避免内存泄漏,lambda 可以和算法结合使用,右值引用和移动语义避免了对临时对象的深拷贝,可以适配多种算法。

2.讲解一下函数重载和重写

这是 CPP 实现多态的两种方法,函数重载是静态多态,根据函数参数类型,参数数量,参数顺序,在编译期间匹配具体调用的函数,函数返回值类型不作为区分依据,函数重写是指父类的虚函数在子类中被重写,通过基类指针或者引用绑定子类的对象可以实现不同的效果,叫做动态绑定。

3.什么是 lambda 表达式

lambda 表达式可以当成函数去使用,它的本质是仿函数类,使用=是按值捕获,使用&是引用捕获,其中按值捕获的是创建 lambda 表达式时刻的值。

这里是捕获的哪个值之前真实面试被问到过。

4.懒汉模式和饿汉模式的区别,懒汉模式线程安全如何实现

懒汉模式是当第一次访问指针的时候才创建,饿汉是一开始就创建,懒汉模式可能会遇到线程安全问题比如多个线程同时判断指针为空,都去创建,可以通过两次判断和加锁来解决,不直接使用锁是避免创建成功之后重复申请锁降低并发,先判断是否是空指针,然后申请锁去创建,申请锁之后再判断是否为空指针,如果不是说明已经被创建过了,就释放锁,返回。

5.多线程和多进程的区别是什么,各自的应用场景

进程切换需要切换虚拟地址空间,更新页表,TLB,刷新缓存,会带来更大开销,线程会共享内存,共享文件描述符,私有寄存器和栈,切换开销更小,进程是资源分配的基本单位,线程是调度的基本单位,在 IO 密集型,共享资源的情况下优先使用多线程,在 CPU 密集型的场景优先使用多进程。

复习一下昨天学的八股,感觉 CPP 新特性被问了有三次以上了,然后每次都支支吾吾的不是很确定,函数重载和重写问到的不多,主要是问我多态,问我虚函数,虚函数表虚函数指针这些。

相关推荐
蒸蒸yyyyzwd3 天前
后端学习笔记三个知识
笔记·八股
蒸蒸yyyyzwd3 天前
学习笔记 复盘
笔记·八股
香蕉大香蕉(06敬畏市场)4 天前
MySQL 单点详解(09)
java·数据库·mysql·面试·八股·大厂实习
香蕉大香蕉(06敬畏市场)5 天前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
香蕉大香蕉(06敬畏市场)5 天前
MySQL 单点详解(08)
java·数据库·mysql·面试·八股
香蕉大香蕉(06敬畏市场)6 天前
MySQL 单点详解(03)
java·数据库·mysql·面试·八股·大厂实习
蒸蒸yyyyzwd6 天前
学习笔记day92
笔记·八股
香蕉大香蕉(06敬畏市场)8 天前
高频八股 · JVM(8)
java·jvm·面试·八股·大厂实习
蒸蒸yyyyzwd9 天前
kafka、redis、mysql不熟悉问题总结
笔记·八股
香蕉大香蕉(06敬畏市场)9 天前
高频八股 · JVM(7):方法区、元空间与字符串常量池
java·jvm·ai·博客·八股·大厂实习