嵌入式笔试刷题(第17天)

*1. char tmp = "123"; 这个字符串分配在堆还是栈上?什么时候释放?

✅ 解析:

"123" 是一个 字符串常量,存储在 只读数据段(.rodata) 中,而不是堆也不是栈。

tmp 是一个局部指针变量,保存在栈上,但它指向的内容 "123" 是编译期分配的静态存储区。

✅ 内存释放:

字符串常量的内存不会被释放,它在程序运行期间一直存在。

*2. 在32位系统下,char [5][6] 占多少字节?

✅ 解析:

char *[5][6] 表示一个 5×6 的指针数组,共有 30 个 char* 指针。

在 32 位系统中,每个指针占 4 字节。

总内存 = 5 × 6 × 4 = 120 字节

3. 简要描述 TCP/IP 协议架构层次及主要功能

✅ 协议分层:

应用层

HTTP、FTP 等

提供网络应用服务

传输层

TCP、UDP

端到端数据传输,保证可靠性等

网络层

IP、ICMP

路由与寻址

网络接口/链路层

Ethernet 等

数据帧传输,硬件接口驱动

4. 路由器和以太网交换机的区别及工作层级

协议层级

网络层(第三层)

数据链路层(第二层)

作用

实现跨网段通信、路由选择

实现局域网内设备转发

转发依据

IP 地址

MAC 地址

功能复杂度

高(支持NAT、防火墙等)

低(基于 MAC 表转发)

5. 分析以下代码运行情况

char buffer[100*1024*1024];

✅ 解析:

  • 32位系统下,函数局部变量默认分配在 栈上
  • 100MB 空间远远超过栈大小限制(通常几百 KB~几 MB);
  • 结果:栈溢出,程序运行时崩溃或异常终止

6. 分析 add 函数的问题

int add(int n, int m) {
    static int temp = 0;
    temp += m;
    temp += n;
    return temp;
}

✅ 问题分析:

  • temp 是静态变量,多次调用函数不会被重新初始化
  • 每次调用会在上次累加的基础上继续累加;
  • 如果预期是纯粹的加法运算(),这个实现会引发错误

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

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
点赞 回复 分享
发布于 04-25 21:42 山西
求问面试难吗
点赞 回复 分享
发布于 04-15 15:00 黑龙江

相关推荐

投递快手等公司10个岗位 > 晒一晒你收到的礼盒
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务