CVTE 软件开发-C++ 一面

1. 自我介绍

2. 实习主要工作介绍

3. 实习期间遇到的问题,你是怎么解决的

4. 研究生的研究方向介绍

5. 你的专业不是计算机相关,平时是怎么学习的

6. 你使用到的 C++11 新特性有哪些

常用的 C++11 特性包括:auto、nullptr、lambda、std::thread、mutex、condition_variable、atomic、智能指针、move 语义、unordered_map。 在工程里最常用的是:

  • 用智能指针管理生命周期;
  • 用 move 降低拷贝开销;
  • 用 lambda 提升异步回调代码可读性;
  • 用原子变量和锁保证并发安全。

代码:

#include <iostream>
#include <memory>
#include <thread>
#include <atomic>
#include <vector>

int main() {
    std::atomic<int> cnt{0};
    auto worker = [&cnt]() {
        for (int i = 0; i < 10000; ++i) {
            cnt.fetch_add(1, std::memory_order_relaxed);
        }
    };

    std::thread t1(worker), t2(worker);
    t1.join();
    t2.join();

    std::unique_ptr<std::string> p(new std::string("C++11"));
    std::cout << *p << " cnt=" << cnt.load() << std::endl;
    return 0;
}

7. 你做过“分布式配置中心 C++ SDK”项目吗?请介绍整体设计思路

我做过一个“分布式配置中心 C++ SDK”项目,目标是给业务提供稳定、低延迟的配置读取能力。 设计上分四层:

  1. 接口层:统一 get/watch API;
  2. 缓存层:本地快照 + 版本号管理;
  3. 同步层:长连接监听变更 + 增量拉取;
  4. 容错层:失败回退、重试、熔断、降级。 关键原则是“读路径尽量无阻塞,写路径串行化并可追踪”。

8. 在这个 SDK 项目中,你如何保证并发读配置时的一致性和性能

我的方案是“读写分离 + 快照版本”:

  • 读请求优先走只读快照,避免重锁;
  • 更新线程生成新版本后原子替换;
  • 通过版本号保证读取到的是完整配置;
  • 更新失败不覆盖旧版本,保证可用性优先。

代码:

#include <atomic>
#include <memory>
#inclu

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

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

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

全部评论

相关推荐

这个简历还有救吗,考研失利了,完蛋蛋了
helloWord大...:每次看见你们9爷隔着嚷嚷找不到工作,我真的分不清是串还是装
点赞 评论 收藏
分享
昨天 07:14
门头沟学院 C++
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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