中科合迅 软件开发-C++ 一面

1、类和 struct 的区别

答案:在 C++ 里,classstruct 本质上都可以定义成员变量、成员函数、构造函数、析构函数、继承关系,语法能力基本一致。最核心的区别只有两个:

第一,默认访问权限不同。class 默认是 privatestruct 默认是 public

第二,默认继承权限不同。class 默认私有继承,struct 默认公有继承。

所以从语言能力上说,两者差别不大,更多是代码风格和语义习惯不同。通常把偏数据聚合、对外开放字段较多的类型写成 struct,把需要封装和约束访问控制的类型写成 class

代码:

#include <iostream>
using namespace std;

struct A {
    int x;          // 默认 public
    void print() {
        cout << x << endl;
    }
};

class B {
    int x;          // 默认 private
public:
    B(int v) : x(v) {}
    void print() {
        cout << x << endl;
    }
};

int main() {
    A a{10};
    a.print();

    B b(20);
    b.print();
}

2、structunion 的区别

答案:struct 的每个成员都有自己独立的存储空间,一个对象里所有成员可以同时存在。union 的所有成员共用同一块内存,同一时刻通常只适合使用其中一个成员,修改一个成员往往会覆盖另一个成员的内容。

所以 struct 更像是把多个字段组合起来描述一个对象,union 更像是同一份内存的多种解释方式。union 常见在协议解析、底层内存布局控制、节省空间的场景里使用,但用的时候要特别注意当前活跃成员到底是谁。

代码:

#include <iostream>
using namespace std;

struct S {
    int a;
    char b;
};

union U {
    int a;
    char b;
};

int main() {
    cout << sizeof(S) << endl;
    cout << sizeof(U) << endl;

    U u;
    u.a = 0x12345678;
    cout << hex << u.b << endl;
}

3、C++11 常用新特性有哪些

答案:C++11 比较常用的内容主要有这些:auto、范围 for、右值引用、移动语义、完美转发、nullptrlambda 表达式、smart pointerthreadmutex、原子类型、constexproverride/final、统一初始化和 unordered_map 等。

如果放到工程里,使用频率最高的一般还是几类:一类是语言层面的 autonullptr、范围 forlambda,能明显改善代码可读性;一类是资源管理相关的 unique_ptrshared_ptr、移动语义,能减少手写内存管理错误;还有一类是并发编程支持,比如线程库、互斥锁、条件变量、原子操作。

代码:

#include <iostream>
#include <memory>
#include <vector>
using namespace std;

int main() {
    vector<int> nums = {1, 2, 3, 4};

    for (auto x : nums) {
        cout << x << " ";
    }
    cout << endl;

    auto p = make_unique<int>(42);
    cout << *p << endl;

    auto f = [](int a, int b) { return a + b; };
    cout << f(3, 4) << endl;
}

4、介绍一下你做过的项目架构

答案:我做过一个 基于 C++17 / ASIO / protobuf / LevelDB 的分布式配置中心客户端。这个项目的目标是给多个业务模块提供统一的配置拉取、版本管理和本地缓存能力,支持动态更新和故障回退。

整体架构分成四层。最底层是网络通信层,负责和配置服务端保持长连接,接收配置变更事件;上面一层是协议编解码层,负责 protobuf 消息解析和版本校验;再往上是配置管理层,负责

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

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

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

全部评论

相关推荐

03-14 21:33
已编辑
东莞理工学院 Java
📍面试公司:好未来🕐面试时间:03/14💻面试岗位:golang后端开发❓面试问题:1.&nbsp;Go&nbsp;的基本数据类型有哪些?2.&nbsp;什么是值类型和引用类型,分别有哪些?3.&nbsp;slice&nbsp;底层结构和扩容机制是什么?4.&nbsp;map&nbsp;底层基于什么实现,是有序还是无序?5.&nbsp;对&nbsp;Go&nbsp;的&nbsp;channel&nbsp;怎么理解?6.&nbsp;channel&nbsp;一般用在什么业务场景?7.&nbsp;无缓冲和有缓冲&nbsp;channel&nbsp;的区别是什么?8.&nbsp;如何深拷贝&nbsp;slice,避免多个变量互相影响?9.&nbsp;Redis&nbsp;适用哪些业务场景?10.&nbsp;为什么&nbsp;Redis&nbsp;单线程还能支持高并发?11.&nbsp;epoll&nbsp;在&nbsp;Redis&nbsp;中用在什么场景?12.&nbsp;Redis&nbsp;的&nbsp;key&nbsp;过期策略有哪些?13.&nbsp;Redis&nbsp;过期删除后内存会立刻释放吗?14.&nbsp;Redis&nbsp;内存满了有哪些淘汰策略?15.&nbsp;Redis&nbsp;持久化方案有哪些?16.&nbsp;RDB&nbsp;和&nbsp;AOF&nbsp;区别是什么?17.&nbsp;Redis&nbsp;高可用方案有了解吗?18.&nbsp;Redis&nbsp;主从、哨兵、集群的区别?19.&nbsp;ES&nbsp;主要适用于什么场景?20.&nbsp;业务数据(如订单)能不能存在&nbsp;ES?21.&nbsp;多表数据聚合同步到&nbsp;ES&nbsp;怎么实现?22.&nbsp;ES&nbsp;集群健康状态有哪几种,分别代表什么?23.&nbsp;ES&nbsp;设置分片和副本,允许节点宕机数量怎么判断?24.&nbsp;Kafka&nbsp;和&nbsp;RocketMQ&nbsp;的区别是什么?25.&nbsp;Kafka&nbsp;为什么会出现消息丢失?26.&nbsp;如何避免&nbsp;Kafka&nbsp;消息丢失?27.&nbsp;Kafka&nbsp;的&nbsp;at&nbsp;least&nbsp;once&nbsp;机制是什么?28.&nbsp;业务层如何保证消息不丢失、最终一致?29.&nbsp;MySQL&nbsp;事务隔离级别有哪些?30.&nbsp;MySQL&nbsp;默认隔离级别是什么?31.&nbsp;可重复读的含义是什么?32.&nbsp;什么场景会使用不同的事务隔离级别?33.&nbsp;InnoDB&nbsp;可重复读是怎么实现的?34.&nbsp;MySQL&nbsp;有哪些存储引擎,区别是什么?35.&nbsp;MyISAM&nbsp;适用什么业务场景?36.&nbsp;联合索引的最左匹配原则是什么?37.&nbsp;MySQL&nbsp;默认索引类型是什么,和哈希索引区别?38.&nbsp;多表关联查询、聚合查询如何设计索引?39.&nbsp;研发工程师应该如何应对和使用&nbsp;AI?40.&nbsp;使用&nbsp;AI&nbsp;编程工具有哪些风险?41.&nbsp;怎么避免&nbsp;AI&nbsp;生成代码带来的线上问题?42.&nbsp;平时用什么开发工具和&nbsp;AI&nbsp;模型?43.&nbsp;使用&nbsp;AI&nbsp;辅助开发遇到过哪些问题,怎么解决?44.手撕sql包括建立索引等等🙌面试感想:感动坏了,春招以来最舒服的一场面试,大部分问题都回答出来了,并且面试官在你回答出来了之后,还会给予正反馈说没错,你说的对,然后记不太清楚的问题,他还会给予提示,然后告诉你该怎么去回答,并且给出他的看法,也是一天直接速通了两面下周三约HR面
发面经攒人品
点赞 评论 收藏
分享
点赞 评论 收藏
分享
03-12 15:35
嘉应学院 Python
快说谢谢牛牛精灵:说不定就是下一个寒武纪!
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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