cpp 八股复习

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

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

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

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

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

3.什么是 lambda 表达式

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

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

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

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

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

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

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

相关推荐
蒸蒸yyyyzwd12 小时前
C++ 八股学习笔记。
八股
蒸蒸yyyyzwd4 天前
秋招学习笔记 Day 64 之准备系统软件开发工程师岗位笔记
c++·八股
蒸蒸yyyyzwd6 天前
秋招学习笔记 day62
八股
蒸蒸yyyyzwd7 天前
秋招学习笔记 day61
八股
蒸蒸yyyyzwd9 天前
后端学习笔记 day58
c++·八股
蒸蒸yyyyzwd12 天前
秋招学习笔记 day54
八股
蒸蒸yyyyzwd13 天前
计网八股笔记
八股