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

6. 指出下面程序的错误

void prinf_base16(unsigned long num) {
    char *buf;
    unsigned long temp;
    int i = 0;

    while(num > 0) {
        temp = num % 16;
        num /= 16;
        if(temp > 9)
            buf[i++] = temp - 9 + 'A';
        else
            buf[i++] = temp;
    }

    while(i) {
        putchar(buf[i]);
        i--;
    }
}


✅ 错误分析:

  1. buf 未分配内存,使用未初始化指针,会段错误;
  2. temp 是整数,但没有加 '0' 转换为字符;
  3. buf[i] 输出应为 buf[--i] 否则数组越界。

✅ 正确写法:

void prinf_base16(unsigned long num) {
    char buf[32];
    unsigned long temp;
    int i = 0;

    while(num > 0) {
        temp = num % 16;
        num /= 16;
        if(temp > 9)
            buf[i++] = temp - 10 + 'A';
        else
            buf[i++] = temp + '0';
    }

    while(i) {
        putchar(buf[--i]);
    }
}


7. 网络编程中并发服务器:多进程 vs 多线程 有什么区别?

✅ 答案:

内存空间

各进程独立

线程共享内存

创建/销毁开销

较大(

fork()

较小(

pthread_create

数据共享

需使用 IPC 机制

可直接共享全局变量

稳定性

单个子进程崩溃不影响其他

一个线程崩溃可能影响整个进程

编程难度

程序结构清晰、调试简单

编程复杂,注意线程安全

使用场景

Apache(多进程)

Nginx、游戏服务器(多线程)

8. 解释 IP 协议的定义及其作用,位于哪个层?TCP 和 UDP 呢?

✅ 答案:

  • IP 协议所在层级:网络层作用:提供主机寻址与路由功能,标识设备之间的通信路径使用逻辑地址(IP 地址)
  • TCP 协议所在层级:传输层特点:面向连接、可靠传输(顺序、重传、拥塞控制)应用场景:HTTP、FTP、SSH
  • UDP 协议所在层级:传输层特点:无连接、不保证可靠传输,速度快应用场景:音视频、DNS、游戏

9. #include <file.h> 与 #include "file.h" 的区别?

✅ 答案:

  • #include <file.h>:编译器从系统目录(如 /usr/include)查找头文件。
  • #include "file.h":编译器先在当前目录查找,找不到再去系统目录查找。

10. 用预处理指令 #define 声明一个常数,用以表示 1 年中有多少秒(忽略闰年)

✅ 答案:

#define SECONDS_PER_YEAR (365 * 24 * 60 * 60)  // 31536000

更多内容全在下方专栏

全网最受欢迎的嵌入式笔试专栏

笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学

3000+订阅还会涨价,提前订阅提前享受,持续更新中。

专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

#满分简历要如何准备?##嵌入式笔面经分享##嵌入式测试,嵌入式开发#
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务