海康威视软件开发工程师-应用 8-22

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

嵌入式软件笔试-23年真题汇总https://blog.nowcoder.net/zhuanlan/0oDWVm

单选题

假设二维数组初始化如下int a[2][3] = {{0, 1,2},{4,5,6}};那么下面语句执行的结果为:

int*mp;

mp = &a[0][2];

printf("First %d\n",*mp);

printf("Second %d\n",*++mp);

printf("Third %d\n",*++mp);

2,4,5

2,3,4

1,2,4

1,2,3

解释:

*++mp将mp指针向前移动到下一个整数(在内存中连续的下一个位置),此时指向a[1][0](即数字4)

以下读取速度最快的介质是()

SSD

NOR FLASH

NAND FLASH

DDR

解释:

SSD 使用NAND型Flash存储技术。它们非常快,尤其是在连续读取数据时,但与内存相比,读取速度较慢。

NOR Flash - NOR Flash常用于代码存储,允许执行内存(XIP)操作。NOR Flash的随机访问时间比NAND快,但写入和擦除操作较慢。

NAND Flash - NAND Flash通常用于数据存储,提供较高的存储密度和较低的每比特成本。它比NOR Flash擦写速度快,但在随机访问和读取时比NOR慢。

DDR内存是计算机系统中使用的一种内存类型,用于CPU直接访问的主存储。它的数据传输速率极高,因为它是设计用于高速操作的内存。

当想要查看某个连接的tcp状态及收发队列情况,可以执行下面哪个命令()

netstat

ethtool

iperf

tcpdump

解释:

netstat - 这个工具能显示网络连接、路由表、接口统计等网络相关信息。特别是使用 -a 和 -n 选项显示所有连接和非解析地址,或 -t 只显示TCP连接,可以查看每个TCP连接的状态,如 ESTABLISHED, SYN_SENT 等,以及使用 -o 选项查看计时信息。

ethtool - 这个命令主要用于查询和控制网络驱动程序和硬件设置,比如获取网卡的速度、双工模式、硬件中断等信息,不适用于查看TCP连接状态。

iperf - 主要用于网络性能测试,可以测试网络带宽、延迟、丢包率等,不提供TCP连接的详细状态信息。

tcpdump - 主要用于捕获网络上传输的数据包并输出详细信息,适用于网络问题调试,但它并不直接显示TCP连接的状态,而是展示网络数据包的实时流。

 

#define HPR_OK   0

在编译过程中,以上表达式在哪一步进行处理

编译

汇编

预处理

链接

解释:

#define 定义的宏在预处理步骤中进行处理。预处理器负责处理源代码文件开头的指令,这些指令以 # 开头,包括宏定义 (#define), 文件包含 (#include), 条件编译 (#ifdef, #ifndef, #endif 等)

软件复用的优势,不正确的是()

能够提升软件的性能

加速软件开发进度

增加系统的可靠性

降低软件开发过程不确定性

解释:

软件复用的主要好处是提高开发效率和可靠性,而不直接是提升性能。性能优化通常需要针对特定应用进行特定的设计和调整。

下列序列,经过层序遍历是1234567,前序遍历是().

4526731

1234567

1235476

1245367

解释:

通过二叉树,画出二叉树图

关于静态库和动态库的描述,错误的是()

静态链接库是在编译时编译到源码中的,在运行时刻和静态库就没有任何关系。

不同应用程序如果调用相同的动态库,那么内存里只有一份该动态库的实例。相比静态库,使用动态库更能节省空间和资源。

多个进程加载使用同一个动态链接库时,该动态链接库的堆栈空间是被多个进程共享的。

静态库对函数库的链接是在编译时完成的,而动态库是在程序运行期间进行的链接。

解释:

在操作系统中,虽然动态链接库的代码段(代码实现)是可以被多个进程共享的,但每个进程的堆栈空间是私有的。堆栈用于存储函数调用的本地变量、返回地址等,是线程或进程独立拥有的,不被共享。

以下关于JSONXML格式描述正确的是哪个

相同平台架构下一般XML格式数据解析更快

相同平台架构下JSON格式数据一般解析更快

XML格式数据更易读

其余三项都不对

解释:

JSON格式较为轻便和简洁,它的结构比XML简单很多,没有那么多的闭合标签,因此一般来说,在相同的平台架构下,JSON格式的数据解析速度会更快。

cpu从用户态进入到内核态的途径是

修改进程状态字

进程调度

系统调用

中断屏蔽

解释:

系统调用是用户程序主动请求操作系统的服务,如文件操作、网络通信等。当程序执行系统调用时,会从用户态切换到内核态,以便内核可以执行具有安全需求的操作。这是一种常见且标准的从用户态进入内核态的途径。

下列属于linux内存堆栈特性不正确的是():

堆栈的使用均会产生内存碎片

32linux系统中堆大小可以远远大于栈大小

栈由高地址向低地址增长

malloc申请堆空间内存

解释:

堆的使用会产生内存碎片,因为堆是动态分配和释放的,导致内存块之间可能出现未使用的小空间(即内存碎片)。而栈的内存碎片问题较少,因为栈有固定的增长和收缩模式(LIFO - 后进先出),且通常按照严格的顺序分配和释放。

2在Linux系统中,堆的大小受可用系统内存和虚拟内存管理策略的限制,可以动态增长到相当大的尺寸。

如下代码运行后输出内容是()

int a= 5;

void prt_func(char array[64], int a)

{

char str[]= "hello world";

char*p = str;

char vs[a];a++;

printf("size is %d %d %d %d\n", sizeof(array), strlen(str), sizeof(p), sizeof(vs));

return;

}

64,11,4,6

64,12,11,5

4,11,4,5

64,12,4,6

解释:

sizeof(ar

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

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

2 5 评论
分享
牛客网
牛客企业服务