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++工程能力.

全部评论

相关推荐

1.请详细描述你在简历中提到的AI相关项目中,负责的主要模块和核心技术贡献。2.在设计一个高吞吐、低延迟的模型推理服务时,你会重点考虑哪些架构层面和工程层面的问题?3.请解释C++程序内存中栈(stack)、堆(heap)和静态/全局存储区的特点与主要区别。4.在C++中,new/delete`与'malloc/free`的主要区别是什么?为什么在C++中通常推荐使用前者?5.请解释深拷贝和浅拷贝的概念,并说明在什么情况下必须使用深拷贝。6.请阐述C++中'std:unique_ptr、'std..shared_ptr和'std:weak_ptr的设计意图、使用场景及相互区别。7.虚函数表(vtable)是如何实现运行时多态的?虚函数与纯虚函数(抽象类)在语义和用法上有何不同?8.什么是内存对齐?编译器对结构体进行内存对齐的主要规则是什么?请计算一个给定结构体(包含不同类型成员)在特定平台下的sizeof大小。9.请解释C++11中右值引用(&amp;amp;&amp;amp;)和移动语义(move&nbsp;semantics)的概念,并说明它们如何用于实现高效的数据转移(如std.:.vector的push_back)。110.简述CUDA的SlIMT(单指令多线程)编程模型,描述thread、block、grid的层次关系。11.在CUDA内核中,一个线程的局部变量通常存储在何处?这与寄存器的分配有何关系?12.在CUDA优化中,如何使用共享内存(Shared&nbsp;Memory)来减少对全局内存的重复访问?请举一个简单的例子(如矩阵乘法中的分块)。13.什么是warp&nbsp;shuffle指令?它在warp内部的数据交换和规约操作中有什么优势?14.解释在CUDA中使用float4或int4等向量化加载/存储指令进行合并访存的原理和性能收益。15.什么是共享内存的bankconflict?它是如何产生的?请举例说明。16.如何通过数据填充(padding)或其他内存布局调整技术来避免或减轻共享内存访问中的bankconflict?17.解释CPU缓存的工作原理,包括时间局部性、空间局部性的概念,以及常见的缓存替换策略18.编程题:实现一个算法,在一个包含大量整数的数据流中,实时找出出现频率最高的前K个元素。请描述你的思路(哈希表+最小堆)并分析时间复杂度。
查看18道真题和解析
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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