中科海讯 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小时。

(挂了竟然,没想到)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java集合面试题

Java集合框架 1、List、Set、Map的区别2、ArrayList、LinkedList、Vector区别3、为什么数组索引从0开始,而不是从1开始?4、ArrayList底层的实现原理5、红黑树、散列表6、HashMap的底层原理7、HashMap的put方法具体流程8、HashMap的扩容机制9、HashMap是怎…

南方科技大学马永胜教授给年轻人使用AI工具上的建议

摘要 - 1. AI的未来,是机器人和机器人之间的合作; 2. 行业的发展方向是需求决定的,不要做同质化的发展,要做专/精/特/新; 3. 新质生产力 ( 科学技术革命性突破 生产要素创新型配置 产业深度转型升级&…

java通过poi-tl导出word实战详细步骤

文章目录 与其他模版引擎对比1.引入maven依赖包2.新建Word文档exportWprd.docx模版3.编写导出word接口代码4.导出成果 poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让…

贪心算法-以高校教材管理系统为例

1.贪心算法介绍 1.算法思路 贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一 步都要确保能获得局部最优解。每一步只考虑一 个数据,其选取应该满足局部优化的条件。若下 一个数据和部分最优解连在一起…

Pix4Dmapper:无人机测绘的革命性工具

在现代测绘和地理信息系统(GIS)领域,Pix4Dmapper无疑是一款革命性的工具。作为一名长期使用这款软件的用户,我深深感受到它在工作中的重要性和便利性。Pix4Dmapper不仅仅是一款软件,更是测绘工作者的得力助手&#xff…

285个地级市出口产品质量及技术复杂度(2011-2021年)

出口产品质量与技术复杂度:衡量国家竞争力的关键指标 出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规,而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一…

新一代信息技术及应用

关于云计算的描述不正确的是( )。 A 云计算可以通过网络连接,用户通过网络接入“云”中并获得有关的服务,“云”内节点之间也通过内部的网络相连 B 云计算可以快速、按需、弹性服务,用户可以按照实际需求迅速获取或释放…

[Python学习篇] Python面向对象——类

面向对象是什么? 面向对象(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。OOP的核心概念包括类(Class)、对象(Object&#xff09…

批量下载手机中APP程序中文件

需求 利用 adb pull 下载手机中app的某目录 adb pull 命令本身不支持直接下载整个目录(文件夹)及其所有子目录和文件作为一个单一的操作。但是,可以通过一些方法来间接实现这一目的。 方法 1. 首先将要下载的目录进行 tar 打包 # 在 And…

Python面试题:Python 中的 `property` 函数有什么用?

在 Python 中,property 函数用于创建和管理类中的属性。它允许你将方法转换为属性,这样你可以像访问变量一样访问这些方法。这对于控制属性的访问和修改非常有用,因为它允许你在属性访问时执行额外的逻辑(如验证或计算&#xff09…

光通信领域常见的会议和期刊总结

在高速光通信小组待了一年,对我们领域主要的会议和期刊也有了一定的了解,所以总结一下我们可以投的期刊或会议有哪些。会议一般有OFC、ECOC、CLEO、OECC、ACP等,期刊则有OE、OL、PTL、JLT、PJ、AO、JOSA等,下面简单介绍一下。 先…

【atcoder】习题——位元枚举

题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…

算法学习笔记(8.1)-动态规划入门

目录 问题特性: 最优子结构: 代码示例:(动态规划最优子结构) 上述最小代价爬楼梯的运行过程: 代码示例: 无后效性: 解析: 具体过程图示如下: 具体的…

如何为IP申请SSL证书

目录 以下是如何轻松为IP地址申请SSL证书的详细步骤: 申请IP证书的基本条件: 申请IP SSL证书的方式: 确保网络通信安全的核心要素之一,是有效利用SSL证书来加密数据传输,特别是对于那些直接通过IP地址访问的资源。I…

使用 Azure DevOps Pipelines 生成 .NET Core WebJob 控制台应用 CI/CD

Web 应用程序通常需要作为后台任务运行的进程,并在特定时间间隔进行计划或在事件中触发。它们不需要花哨的 IO 接口,因为重点是过程而不是输出。Azure WebJobs 提供了出色的支持,通常在云环境中通过 Web 控制台应用程序来实现此目的。WebJob …

企业数字化转型中的低代码开发平台应用:释放创新潜能

随着信息技术的飞速发展,企业数字化转型已成为行业趋势。在这场转型浪潮中,低代码开发平台以其独特的优势,成为众多企业实现快速迭代、高效创新的得力助手。本文将深入探讨低代码开发平台在企业数字化转型中的应用,以及如何帮助企…

Mac平台虚拟机 Parallels Desktop v19.4.1,支持M1/M2/M3芯片组

Parallels Desktop for Mac是功能强大灵活度高的虚拟化方案,无需重启即可在同一台电脑上随时访问Windows和Mac两个系统上的众多应用程序。从仅限于PC的游戏到生产力软件,Parallels Desktop都能帮您实现便捷使用。Parallels Desktop 是一款专业的Mac虚拟机…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门

参考文章 【Docker安装部署KafkaZookeeper详细教程】_linux arm docker安装kafka-CSDN博客 Docker搭建kafkazookeeper 打开我们的docker的镜像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

vue父子组件通信实现模糊搜索功能

我遇到的问题: 我的搜索框在父页面,静态数据都在子页面。怎么实现模糊查询数据? 昨天的尝试:先把搜索的内容数据存到session里,然后从session里拿, 结果:存是存进去了,却拿不到。应…

Django学习收尾

启动项目命令 python manage.py runserver 文件上传功能实现 title "Form上传"if request.method "GET":form UpForm()return render(request, upload_form.html, {"form": form, "title": title})form UpForm(datarequest.POS…