CVTE 软件开发工程师-C++ 一面

1. 自我介绍

如果不会, 可以看看我这篇文章 : 记住这几个回答,起码面试不减分

2. 针对之前的实习进行提问

3. vector 的 push_back 和 emplace_back 有什么区别

  • push_back:先创建临时对象,再拷贝/移动到容器,存在额外开销;
  • emplace_back:直接在容器内存原地构造,无临时对象,效率更高;
  • C++11 后优先使用 emplace_back。

代码示例

#include <vector>
#include <string>
using namespace std;

int main() {
    vector<string> v;

    // push_back:创建临时对象 + 移动
    v.push_back("hello");

    // emplace_back:原地构造,无临时对象
    v.emplace_back("world");
}

4. vector 的扩容原理

vector 是连续内存的动态数组,容量不足时会自动扩容:

  1. 扩容倍数:通常 1.5倍 或 2倍;
  2. 步骤:开辟新内存 → 拷贝/移动旧数据 → 释放旧内存;
  3. 扩容会导致迭代器、指针全部失效;
  4. 可使用 reserve 预先分配空间,减少扩容。

扩容触发代码

vector<int> v;
for (int i=0; i<10; i++) {
    v.push_back(i);
    // 容量不足时自动扩容
}

5. 实习项目中使用到的设计模式

6. 介绍一下单例模式两种设计思路

(1)饿汉模式

程序启动时就创建实例。

class Singleton {
private:
    static Singleton instance;
    Singleton() {}
public:
    static Singleton& getInstance() {
        return instance;
    }
};
Singleton Singleton::instance;

(2)懒汉模式

第一次使用时才创建。

class Singleton {
private:
    static Singleton* instance;
    Singleton() {}
public:
    static Singleton* getInstance() {
        if (instance == nullptr) {
            instance = new Singleton();
        }
        return instance;
    }
};
Singleton* Singleton::instance = nullptr;

7. 哪种单例模式是线程安全的

  1. 饿汉模式:天然线程安全;
  2. C++11 magic static 懒汉:线程安全(最推荐);
  3. 双检查锁(DCL)懒汉:线程安全。

线程安全最优写法(C++11)

class Singleton {
private:
    Singleton() {}
public:
    static Singleton& getInstance() {
        static Singleton instance;
        return instance;
    }
};

8. 饿汉模式的单例模式是否线程安全

是线程安全的。饿汉模式在程序进入 main 函数前就完成初始化,不存在多线程竞争问题,可安全使用。

9. 函数重载和函数重写的区别

函数重载(同一类)

  • 函数名相同,参数不同;
  • 无 virtual,编译期确定。
class A {
public:
    void f(int x) {}
    void f(double x) {}
};

函数重写(继承关系)

  • 函数名、参数、返回值完全相同;
  • 必须带 virtual,运行期多态。
clas

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++ 常考面试题总结 文章被收录于专栏

本专栏系统梳理C++方向, 大中厂高频高频面试考点 , 内容皆来自真实面试经历,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力.

全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务