朗国电子(嵌入式)

1.[问答题]已知单片机内置10位精度的ADC,单片机工作电压1.8V,ADC基准电压1.8V,请计算ADC采样的电压最小分辨率是多少?请写出计算过程和结果;如果单片机ADC输入口电压为0.9V,则采样得到的值是多少?请写出计算过程和结果。

在这里插入图片描述

2.[问答题],写出下面的结果:

char str1[] = "abc";
char str2[] = "abc";
const char* str3 = "abc";
const char* str4 = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
char* str7 = "abc";
char* str8 = "abc";

cout << (str1 == str2) << endl; // 0 (false)
cout << (str3 == str4) << endl; // 可能是1 (true),也可能0 (false),依赖于编译器实现
cout << (str5 == str6) << endl; // 同上,可能是1 (true),也可能0 (false),依赖于编译器实现
cout << (str7 == str8) << endl; // 同上,可能是1 (true),也可能0 (false),依赖于编译器实现

在C++中,字符串字面量(如 “abc”)实际上是一个指向常量字符数组的指针。当多个相同的字符串字面量出现在同一个程序中时,编译器可能会选择将它们存储在内存中的同一位置,以节省空间。这意味着,对于这些字符串字面量,比较它们的地址可能会返回true,即使它们是在不同的地方声明的。

但是,对于使用字符数组(如 char str1[] = “abc”;)定义的字符串,每个数组都会在内存中分配独立的空间,即使它们包含相同的字符序列。因此,它们的地址总是不同的。

解释如下:
对于 str1 和 str2,尽管它们初始化了相同的字符串,但它们是两个独立的数组,因此它们的地址不同,输出为 0(即 false)。

对于 str3, str4, str5, str6, str7, 和 str8,它们都是指向字符串字面量的指针。理论上讲,这些指针可能指向同一个内存地址,特别是当它们指向相同的字符串字面量时。然而,这完全取决于编译器的具体实现。某些编译器可能会优化,使得所有指向相同字符串字面量的指针都指向同一个内存地址,而其他编译器则可能不会这样做。因此,对于这些指针的相等性检查,结果可能是 1(即 true)也可能是 0(即 false),具体要看编译器的行为。

3.根据你所学的计算机体系架构知识,请简还搭建一个嵌入式系统的硬件框图和软件程序流程图,并说明每个部分在某中的角色定位和作用。

在这里插入图片描述

4. 给出下面的答案:

typedef struct AA
{
    int b1 : 5;
    int b2 : 2;
}AA;

int main() {
    AA aa;
    char cc[100];
    strcpy(cc,"123456789abederehi jk1mmoparstuywxyz");
    memcpy(&aa,cc,sizeof(AA));

    cout << "aa.b1=" << aa.b1 << endl;
    cout << "aa.b2=" << aa.b2 << endl;

    system("pause");

    return 0;
}.

在这里插入图片描述
在这里插入图片描述

5.[问答题〕什么是野指针?产生的原因?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.[问答题]<key.value>结构是常用的数据储存结构,如<张三,19岁><李四,18岁>,请编程实现<key,value>存储程序模块,向外提供创建和增删改查接口功能,不限编程语言。

#include <iostream>
#include <unordered_map>
#include <string>

class KeyValueStore {
public:
    // 创建一个新的键值对存储
    KeyValueStore() {}

    // 增加一个键值对
    void add(const std::string& key, int value) {
        store[key] = value;
    }

    // 删除一个键值对
    bool remove(const std::string& key) {
        auto it = store.find(key);
        if (it != store.end()) {
            store.erase(it);
            return true;
        }
        return false;
    }

    // 修改一个键值对
    bool update(const std::string& key, int value) {
        auto it = store.find(key);
        if (it != store.end()) {
            it->second = value;
            return true;
        }
        return false;
    }

    // 查询一个键值对
    bool get(const std::string& key, int& value) const {
        auto it = store.find(key);
        if (it != store.end()) {
            value = it->second;
            return true;
        }
        return false;
    }

private:
    std::unordered_map<std::string, int> store;
};

int main() {
    KeyValueStore kvStore;

    // 添加键值对
    kvStore.add("张三", 19);
    kvStore.add("李四", 18);

    // 查询键值对
    int age;
    if (kvStore.get("张三", age)) {
        std::cout << "张三的年龄是: " << age << std::endl;
    } else {
        std::cout << "未找到张三" << std::endl;
    }

    // 修改键值对
    if (kvStore.update("张三", 20)) {
        std::cout << "更新张三的年龄成功" << std::endl;
    } else {
        std::cout << "未找到张三" << std::endl;
    }

    // 再次查询
    if (kvStore.get("张三", age)) {
        std::cout << "张三的年龄是: " << age << std::endl;
    } else {
        std::cout << "未找到张三" << std::endl;
    }

    // 删除键值对
    if (kvStore.remove("李四")) {
        std::cout << "删除李四成功" << std::endl;
    } else {
        std::cout << "未找到李四" << std::endl;
    }

    // 再次查询
    if (kvStore.get("李四", age)) {
        std::cout << "李四的年龄是: " << age << std::endl;
    } else {
        std::cout << "未找到李四" << std::endl;
    }

    return 0;
}

在这里插入图片描述

7.[问答题]简述进程和线程的联系和区别。

在这里插入图片描述
在这里插入图片描述

8.填空题]在Linux文件I/O操作时,当调用 open 函数打开一个现有文件或创建一个新文件时,内核会向该进程返回()。

在这里插入图片描述

9.[填空题】通用输入/输出接口,用英文大写字母缩写为(),嵌入式处理器内部一般均集成该种I/O接口。该接口一般具有三态,即()态,()态和()态。

在这里插入图片描述

10.[填空题]嵌入式系统使用的存储器有多种类型,按照其存储特性可分为易失性随机存储器()和非易失性储器();

在这里插入图片描述

11.填密题!Lnux在某目录下查找某字符串通常可以用()命令。

如果你想在某个目录下查找包含特定字符串的文件,通常可以使用 grep 命令结合 find 命令来实现。这两个命令结合起来非常强大,可以递归地搜索目录中的文件并查找指定的字符串。

12.【[道空题」不能做switch0的参数类型是()。

在这里插入图片描述

13.[填空题〕串口通讯硬件接口是按( )单位传输数据。

在这里插入图片描述

14.[多选题]下面代码是某平台中断申请的代码,关于该代码的描述,正确的是()(多选题)

//省略了变量的定义部分
test irg = gpio to irq(test _gpio);
ret = request threaded irg(test irg, NuLL,
test_irg_handler,
IRQF_TRIGGER_RISING |IROF ONESHOT, "test", NULL);
if (ret) {
gpio free(test gpio);
return ret;
}
enable irg wake(test irg);

A.该代码中通过函数request_threaded_irg申请了一个线程中断
B.题中通过函数gpio_to_irg来获取了该gpio对应的中断号
C.题中代码通过enable_irq_wake来使能了对应的中断
D.题中没有判断enable_irg_wake的返回值,是因为该函数没有返回值
在这里插入图片描述
在这里插入图片描述

15.[多选题]下面面向对象的语言有哪些_·

A.C++
B. python
C.php
D.C#

在这里插入图片描述

16.[多选题]万用表可以测是哪些物理量?

A.电压值
B.电流值
C.电阻值
D.电荷值
在这里插入图片描述

17.[单选题]以下关于通信方式的说法,错误的是()

A.按照通信息交互的过程,可以将通信方式分为单工通信、半双工通信和全双工通信三种
8.单工通信只能在一个方向上通信
C.全双工通信可以在两个方向上通信,且能同时发送和接收信息
D.半双工通信可以在两个方向上同时通信
在这里插入图片描述

18.[单选题]TCP和UDP分别是()协议。

A.可靠传输,可靠传输
B.可靠传输,不可靠传输
C.不可靠传输,可靠传输
D.不可靠传输,不可靠传输
在这里插入图片描述

19.[单选题]对于电容下列说法正确的是()

A.电容容抗为1/jwC
B.电容两端电流不会发生实变
C电容具有“通交流,阻直流”的作用
D.电容的电压领先电流90度
在这里插入图片描述

20.单选题电路的抗干扰能力强,不易受外界干扰;()电路能够在大电流高电压下工作。

A. 数字,模拟
B.数字,数字
C.模拟,数字
D.模拟,模拟
在这里插入图片描述

21.[单选题]在两输入端的门电路中,当输入为1和0时,输出为1的门电路是()

A.与门
B.或非门
C.同或门
D.异或门
在这里插入图片描述
在这里插入图片描述

22.[单选题]extern关键字的作用是什么?()

A.声明外部函数或变量
B.声明外部头文件引用
C.声明使用扩展C++语句
D.声明外部成员函数、成员数据
在这里插入图片描述

23.[单选题]I2C总线具有线()逻辑功能。

A.或
B.与
C.非
D.不确定
在这里插入图片描述

24.[单选题]在RAM中储存数据是以什么方式存储的?

A .二进制码
B.HEX
C.十进制致掘
D. string
在这里插入图片描述

25.[单选题]关于栈和队列的说法正确的是().

A.都是先进先出
B.都是先进后出
C.没有共同点
D,只允许在端点处操作元素
在这里插入图片描述

26、[单选题〕在嵌入式系统中,通常使用哪种存储器来保存固件或引导加载程序?

A.RAM
B.EEPROM
C.Flash
D.HDD
在这里插入图片描述

27.[单选题]0x5F的补码是多少?

A.0xF5
B.0x5F
C.0x60
D.0xF0
在这里插入图片描述

28.[单选题)在C语言中下面哪个函数可以在控制台中输出信息?

A. printf
B.scanf
C. fprintf
D.fscanf
在这里插入图片描述
在这里插入图片描述

29.[单选題]在Linux系统中下面哪个命令可为用户新建一个目录?

A mkdir
B. touch
C.mk
D.cp
在这里插入图片描述
在这里插入图片描述

30.[单选题〕以下为Linux下的32 位C程序,请计算sizeof§的值.

char strl[] = "Hello" ;
char *p = str;
int n =10;

A.1
B.2
C.4
D.8
在这里插入图片描述

31.[单选题]在大多数Linux发行版本中,以下哪个属于块设备 (block devices)?

A串行口
B.硬盘
C.虚拟终端
D.打印机
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值