嵌入式工程师面试题 - 2024/11/19

news2024/11/24 7:29:19

欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导

转载请注明来源


1.以下叙述中正确的是()

A 程序必须包含所有三种基本结构才能成为一种算法

B 我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令

C 如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达

D 只有简单算法才能在有限的操作步骤之后结束

解析:

正确的叙述是:

A. 错误。算法不一定需要包含所有三种基本结构(顺序、选择、循环)才能成为一种算法。算法可以只使用其中一种或两种结构。

B. 正确。C语言编写的源代码经过编译器编译后,最终会转换成二进制的机器指令,这些指令可以被计算机硬件直接执行。

C. 错误。算法的复杂性与是否需要使用三种基本结构之外的语句结构没有必然联系。即使是非常复杂的算法,也可以使用顺序、选择、循环这三种基本结构来表达。

D. 错误。算法的简单性与是否能在有限的操作步骤之后结束没有必然联系。即使是复杂算法,只要设计得当,也能在有限的操作步骤之后结束。相反,一些看似简单的算法(如无限循环),也可能无法在有限的操作步骤之后结束。

2.a->b的等效写法是()

A (*a).b

B a.(*b)

C a.b

D 都不是

解析:

这题考察的是C语言中结构体指针访问成员的问题。

现在来分析每个选项:

A. (*a).b
这是正确的写法。*a是对指针a进行解引用,得到它所指向的结构体。然后.b是访问该结构体的成员b。所以(*a).b是有效的,并且与a->b等效。

B. a.(*b)
这是错误的写法。在C语言中,->运算符是专门用于结构体指针来访问其成员的。.(*b)这种写法在C语言中是不合法的。

C. a.b
这也是错误的写法。a.b用于直接访问结构体的成员,但在这里a是一个指针,不是结构体本身。所以我们应该使用*a来得到结构体,然后再访问成员b,或者使用a->b这种简化写法。

D. 都不是
由于A选项是正确的,所以这个选项自然就是错误的。

3.C 语言中,假设变量说明为:int k=1; 则语句运算完后,k的值是?

k--|| k, k++;

解析:

这题考察的是C语言操作符,它们的优先级和结合性会影响表达式的求值顺序。

  1. -- 和 ++ 是后缀递减和递增操作符。当它们作为后缀使用时,表达式的值是在变量改变之前的值。

  2. || 是逻辑或操作符,它会在其左侧表达式为真时立即返回真,而不计算右侧表达式(这称为短路求值)。

  3. , 是逗号操作符,它会顺序地计算其左右两侧的表达式,并丢弃左侧表达式的值,整个表达式的值是右侧表达式的值。

现在,让我们分析表达式 k--||k, k++

  1. 初始时,k 的值是 1。

  2. 表达式 k--||k 被计算。首先计算 k--,这是一个后缀递减操作,所以它会返回 k 递减之前的值(即 1),然后将 k 减 1。此时,k 变成了 0,但表达式 k-- 的结果是 1(递减之前的值)。

  3. 接下来计算逻辑或 ||。由于 k-- 的结果是 1(真),逻辑或操作符会短路,即不再计算其右侧的表达式(这里的右侧表达式是 k,但此时不会被计算)。

  4. 逗号操作符 , 然后被计算。它顺序地计算其左右两侧的表达式,但只返回右侧表达式的值。在这里,左侧表达式 k--||k 已经计算完毕,其值为 1(但这个值被丢弃了),然后计算右侧表达式 k++

  5. 计算 k++,这是一个后缀递增操作。它会返回 k 递增之前的值(即 0),然后将 k 加 1。所以,k++ 的结果是 0,并且这个值是整个表达式 k--||k, k++ 的结果。

  6. 最终,k 的值被递增到了 1(但由于逗号操作符的特性,这个递增后的值不会被用作表达式的最终结果)。

综上所述,表达式 k--||k, k++ 计算完毕后,整个表达式的值是 0(这是由逗号操作符右侧的 k++ 表达式决定的),而变量 k 的最终值是 1(因为它在表达式中被递减然后又递增了)。所以,问题是询问 k 的值,答案是 1。

4.有如下一段程序:以下语句合法的是()

int f1(float);int f2(char);void f3(float);int (*pf)(float);

A int (*p)(float)=&f1;

B pf=&f2;

C pf=&f3;

D pf=f3;

解析:

这是一道关于C语言中函数指针的问题。首先,我们需要理解函数指针的声明和赋值规则。

  1. int f1(float); 声明了一个接受float类型参数并返回int类型结果的函数f1

  2. int f2(char); 声明了一个接受char类型参数并返回int类型结果的函数f2

  3. void f3(float); 声明了一个接受float类型参数但不返回任何结果的函数f3

  4. int (*pf)(float); 声明了一个函数指针pf,它可以指向一个接受float类型参数并返回int类型结果的函数。

接下来,我们逐一分析选项:

A. int (*p)(float)=&f1;
这是正确的。这里声明了一个函数指针p,它指向一个接受float类型参数并返回int类型结果的函数,然后将f1的地址赋给了p。这与pf的声明和赋值是兼容的。

B. pf=&f2;
这是错误的。f2是一个接受char类型参数的函数,而pf是一个指向接受float类型参数的函数的指针。类型不匹配,因此不能赋值。

C. pf=&f3;
这也是错误的。f3是一个不返回任何结果的函数(返回类型为void),而pf是一个指向返回int类型结果的函数的指针。同样,类型不匹配,因此不能赋值。

D. pf=f3;
这同样是错误的。这里尝试将函数f3的地址直接赋给函数指针pf,但由于f3的返回类型与pf所指向的函数返回类型不匹配(void vs int),因此这是不合法的。

综上所述,只有选项A是合法的语句。它正确地声明了一个与f1兼容的函数指针,并将f1的地址赋给了该函数指针。所以正确答案是A。


未完待续,持续更新!

以防后边找不到可以点赞收藏下!

欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导

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

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

相关文章

【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解

vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的,在大版本v3中彻底重写了这部分,使用了proxy这个数据代理的方式,来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为&#xff0…

掌上单片机实验室 – RT-Thread + ROS2 初探(25)

在初步尝试RT-Thread之后,一直在琢磨如何进一步感受它的优点,因为前面只是用了它的内核,感觉和FreeRTOS、uCOS等RTOS差别不大,至于它们性能、可靠性上的差异,在这种学习性的程序中,很难有所察觉。 RT-Threa…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归,逻辑回归(线性回归sigmoid),神经网络 linear regression , logistic regression , neutral network 里面的偏导的相量有几百万维,这就是neutral network的不同,他是…

ThingsBoard规则链节点:AWS SQS 节点详解

引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,AWS SQS 节点用于将消息发送到 Amazon Simp…

在Windows 11上启用远程桌面及其故障排查

在Windows 11上启用远程桌面 这将允许其它设备远程连接到你的电脑,并像坐在你的电脑前一样操纵你的电脑桌面。 启用方法很简单,先在设置中找到远程桌面。 点击进入后,点击右侧的滑钮启用远程桌面即可。 勾选启用网络级别验证使得登录者在能…

【H2O2|全栈】JS进阶知识(八)ES6(4)

目录 前言 开篇语 准备工作 浅拷贝和深拷贝 浅拷贝 概念 常见方法 弊端 案例 深拷贝 概念 常见方法 弊端 逐层拷贝 原型 构造函数 概念 形式 成员 弊端 显式原型和隐式原型 概念 形式 constructor 概念 形式 原型链 概念 形式 结束语 前言 开篇语…

RabbitMQ3:Java客户端快速入门

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

zotero7 插件使用

zotero style 1、下载地址 Zotero 插件商店 | Zotero 中文社区 2、配置 在工具插件里 3、配置 style 进入高级→设置编辑器 查找 easy 设置完即可显示, 注1:easyscholar的密钥要自行申请注册,注册地址:easySchol…

uniapp+vue3+ts H5端使用Quill富文本插件以及解决上传图片反显的问题

uniappvue3ts H5端使用Quill富文本插件以及解决上传图片反显的问题 1.在项目中安装Quill npm i quill1.3.72.需要显示富文本的页面完整代码 <template><view><div ref"quillEditor" style"height: 65vh"></div></view> &…

关于pip install 包 时出现This is an issue with the package mentioned above,not pip的问题

关于This is an issue with the package mentioned above,not pip 今天在用pip下载gensim包的时候&#xff0c;出现了上图中的问题&#xff0c;提示信息是&#xff1a;This is an issue with the package mentioned above,not pip 那说明是包的问题&#xff0c;而不是在使用 pi…

rust中解决DPI-1047: Cannot locate a 64-bit Oracle Client library问题

我们在使用rust-oracle crate连接oracle进行测试的过程中&#xff0c;会发现无法连接oracle&#xff0c;测试运行过程中抛出“DPI-1047: Cannot locate a 64-bit Oracle Client library”错误。该问题是由于rust-oracle需要用到oracle的动态连接库&#xff0c;我们通过安装orac…

软件测试面试之常规问题

1.描述一下测试过程 类似题目:测试的生命周期 思路:这是一个“范围”很大的题目&#xff0c;而且回答时间一般在3分钟之内&#xff0c;不可能非常详细的描述整个过程&#xff0c;因此答题的思路要从整体结构入手&#xff0c;不要过细。为了保证答案的准确性&#xff0c;可以引…

D77【 python 接口自动化学习】- python基础之HTTP

day77 postman接口请求 学习日期&#xff1a;20241123 学习目标&#xff1a;http 定义及实战&#xfe63;&#xfe63;postman接口请求 学习笔记&#xff1a; get请求 post请求 总结 get请求用于查询数据post请求用于添加数据

在 Swift 中实现字符串分割问题:以字典中的单词构造句子

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 LeetCode - #140 单词拆分 II 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&…

【从零开始的LeetCode-算法】3297. 统计重新排列后包含另一个字符串的子字符串数目 I

给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新排列后&#xff0c;word2 是重排字符串的 前缀&#xff0c;那么我们称字符串 x 是 合法的 。 请你返回 word1 中 合法 子字符串的数目。 示例 1&#xff1a; 输入&#xff1a;word1 "bcca", word2 "…

.NET9 - 新功能体验(二)

书接上回&#xff0c;我们继续来聊聊.NET9和C#13带来的新变化。 01、新的泛型约束 allows ref struct 这是在 C# 13 中&#xff0c;引入的一项新的泛型约束功能&#xff0c;允许对泛型类型参数应用 ref struct 约束。 可能这样说不够直观&#xff0c;简单来说就是Span、ReadO…

Git错误:gnutls_handshake() failed: The TLS connection was non-properly terminated

最终我通过这个博客解决了问题&#xff1a;解决Git错误&#xff1a;gnutls_handshake() failed: The TLS connection was non-properly terminated 解决方案 1. 检查网络连接 首先&#xff0c;确保你的网络连接是稳定的。尝试访问其他HTTPS网站或服务&#xff0c;以排除网络问…

【C++知识总结】c++第一篇,简单了解一下命名空间是什么

一、C的由来 C语言是一种结构化和模块化的编程语言&#xff0c;它对于处理较小规模的程序非常适用。然而&#xff0c;当面临需要高度抽象和建模的复杂问题&#xff0c;以及规模较大的程序时&#xff0c;C语言就显得不那么合适了。为了应对这种挑战&#xff0c;并在解决软件危机…

Sickos1.1 详细靶机思路 实操笔记

Sickos1.1 详细靶机思路 实操笔记 免责声明 本博客提供的所有信息仅供学习和研究目的&#xff0c;旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动&#xff0c;您将独自承担…

【大数据学习 | Spark-Core】Spark提交及运行流程

spark的集群运行结构 我们要选择第一种使用方式 命令组成结构 spark-submit [选项] jar包 参数 standalone集群能够使用的选项。 --master MASTER_URL #集群地址 --class class_name #jar包中的类 --executor-memory MEM #executor的内存 --executor-cores NUM # executor的…