中科海讯 C++初级研发工程师笔试题目

  1. C++语言中的`const`关键字有什么作用?为什么要使用`const`关键字?

1 const修饰的变量将会被放到常量区,避免被意外的改动。

const修饰的常量比#define修饰的有更多的优势,比如可以调试,类型检查等

2 const修饰的参数可做输入型参数

对于const指针类型,可以避免修改,而如果是const引用类型可以省去临时对象的构造和析构过程,提高效率

3 const修饰返回值

如果你不希望返回值被修改,可以用const修饰返回值

4 const修饰成员函数

对于类中不会修改成员变量的成员函数,可以声明为const成员函数

2. C++语言中的类有什么作用?

类体现了C++面向对象的特点。

类的基本思想在于抽象和封装。

数据抽象是一种依赖于接口和实现分离的技术。类的实现包括类的数据成员,负责接口实现的函数体以及定义类所需的各种私有函数。

数据抽象之和我们就可以就行复用。进而实现继承、多态

而封装则是实现了类的接口和实现的分离,隐藏实现细节。

我可以举个操作系统的例子:

操作系统对下管理软硬件资源,而对上为用户、程序员提供良好的服务。而对下管理硬件的时候,看似不同的硬件实际上都有读写文件的方法。结合Linux系统一切皆文件的思想下,我们只需实现出struct file类,再实现多态,就能封装成不同的硬件了。在struct file这一层,所有外设就没有硬件的差别了。

3. C++语言中类的继承有什么作用?在什么场景下应该使用类的继承?

继承允许我们以基类的方式来实现派生类。

继承的使用一般会和组合一起讨论。组合是一种复用关系。组合之间的依赖关系不强,耦合度低;而继承是一种耦合度高的方案,继承一定程度上破坏了封装。

我们推荐多使用组合,但是当多种子类拥有共同的特征时,我们还是

可以使用继承,而且,如果要实现多态,必须使用继承

4. 全局变量的定义是否可以放在.h文件里?

全局变量的定义不能放到头文件里,如果头文件被多个.c/.cpp文件包含,就会生成多份,最后导致多重定义的错误

5. 什么是编译?什么是链接?

在ANSIC中我们的程序会经历会通过翻译环境、运行环境两种

其中翻译环境就有两个步骤:编译、链接

编译阶段分又为三个阶段:预处理,编译,汇编

预处理主要做4个事:去注释,宏替换,头文件展开,条件编译。然后我们的 .c/.cpp文件会变成 .i文件

编译会进行语法分析、词法分析、语义汇总、符号汇总等。我们的代码就转成了汇编代码,然后我们的 .i文件会变成 .s文件

汇编阶段会将上一步的汇编代码转成二进制代码。并生成符号表。然后我们的 .s文件会变成格式为elf的 .o文件

链接阶段主要进行合并段表和符号表的合并和重定位

.o文件是elf格式的,会分为很多段,合并段表就是把相同的段合并到一起

6. 你最近在读哪些(技术有关)书?或你最近在研究哪些和技术有关的内容?

我最近在看两本书,一本是《Effective C++》,这本书为C++程序员提供了一系列实用的建议和技巧,帮助他们在编写高效、健壮和易于维护的代码时避免常见的陷阱和错误;

另一本是《STL源码剖析》,侯捷老师的讲解生动、细致、全面,对我理解STL的底层非常有帮助。

注意:

  1.  允许合理使用搜索引擎,允许查阅书籍与网络上的公开资料。
  2.  题目内容要求独立完成,不允许由他人代答,不允许使用AI生成回答。
  3.  本题目限时1小时。

(挂了竟然,没想到)

相关推荐

  1. 科海 C++初级研发工程师笔试题目

    2024-07-10 10:16:03       37 阅读
  2. 初级通信工程师-职业道德

    2024-07-10 10:16:03       54 阅读
  3. C语言期末】题目+笔记

    2024-07-10 10:16:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 10:16:03       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 10:16:03       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 10:16:03       90 阅读
  4. Python语言-面向对象

    2024-07-10 10:16:03       98 阅读

热门阅读

  1. vue3的常用 Composition API有哪些?

    2024-07-10 10:16:03       26 阅读
  2. Linux系统基础命令行指令——Ubuntu

    2024-07-10 10:16:03       35 阅读
  3. 【Android高级UI】计算不规则图形面积

    2024-07-10 10:16:03       33 阅读
  4. Python库 - PyMC3

    2024-07-10 10:16:03       27 阅读
  5. C语言中关键字

    2024-07-10 10:16:03       36 阅读
  6. ios CCPlistFileWritter.m

    2024-07-10 10:16:03       30 阅读
  7. C#实现Winform程序右下角弹窗消息提示

    2024-07-10 10:16:03       28 阅读
  8. 【PyTorch单点知识】自动求导机制的原理与实践

    2024-07-10 10:16:03       30 阅读
  9. 大数据平台之Hive Metastore

    2024-07-10 10:16:03       27 阅读
  10. 《框架封装 · Redis 事件监听》

    2024-07-10 10:16:03       29 阅读