海康威视软件开发工程师-应用 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 等)
软件复用的优势,不正确的是()
能够提升软件的性能
加速软件开发进度
增加系统的可靠性
降低软件开发过程不确定性
解释:
软件复用的主要好处是提高开发效率和可靠性,而不直接是提升性能。性能优化通常需要针对特定应用进行特定的设计和调整。
下列序列,经过层序遍历是1、2、3、4、5、6、7,前序遍历是().
4、5、2、6、7、3、1
1、2、3、4、5、6、7
1、2、3、5、4、7、6
1、2、4、5、3、6、7
解释:
通过二叉树,画出二叉树图
关于静态库和动态库的描述,错误的是()
静态链接库是在编译时编译到源码中的,在运行时刻和静态库就没有任何关系。
不同应用程序如果调用相同的动态库,那么内存里只有一份该动态库的实例。相比静态库,使用动态库更能节省空间和资源。
多个进程加载使用同一个动态链接库时,该动态链接库的堆栈空间是被多个进程共享的。
静态库对函数库的链接是在编译时完成的,而动态库是在程序运行期间进行的链接。
解释:
在操作系统中,虽然动态链接库的代码段(代码实现)是可以被多个进程共享的,但每个进程的堆栈空间是私有的。堆栈用于存储函数调用的本地变量、返回地址等,是线程或进程独立拥有的,不被共享。
以下关于JSON和XML格式描述正确的是哪个
相同平台架构下一般XML格式数据解析更快
相同平台架构下JSON格式数据一般解析更快
XML格式数据更易读
其余三项都不对
解释:
JSON格式较为轻便和简洁,它的结构比XML简单很多,没有那么多的闭合标签,因此一般来说,在相同的平台架构下,JSON格式的数据解析速度会更快。
cpu从用户态进入到内核态的途径是
修改进程状态字
进程调度
系统调用
中断屏蔽
解释:
系统调用是用户程序主动请求操作系统的服务,如文件操作、网络通信等。当程序执行系统调用时,会从用户态切换到内核态,以便内核可以执行具有安全需求的操作。这是一种常见且标准的从用户态进入内核态的途径。
下列属于linux内存堆栈特性不正确的是():
堆栈的使用均会产生内存碎片
32位linux系统中堆大小可以远远大于栈大小
栈由高地址向低地址增长
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++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。