嵌入式笔试刷题
1. static 有什么用途?至少说明两种
答案:
- 限制变量作用域:用于局部变量时,使变量具有静态存储周期,即只初始化一次,但作用域仍限于函数内部。
- 限制函数可见性:用于函数或全局变量时,使其只在当前文件内可见,防止外部文件访问。
2. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
答案:有区别:
- 全局变量:存放在数据段(.data 或 .bss),在程序整个生命周期内存在。
- 局部变量:存放在**栈(stack)**中,随着函数的调用创建,退出后销毁。
3. 头文件中的 #ifndef/#define/#endif
是干什么用的?
答案:用于防止头文件被重复包含(多次包含同一头文件会导致重复定义错误)。
4. sizeof 计算题(32位系统)
复制代码
1 2 3 |
|
- (1)
sizeof(str)
= 27(包括结尾的 '\0') - (2)
sizeof(p)
= 4(指针大小) - (3)
sizeof(n)
= 4 - (4)
sizeof(str)
invoid Foo(char str[100])
= 4(退化为指针) - (5)
void *p = malloc(100); sizeof(p)
= 4
5. 表达式:
复制代码
1 2 |
|
答案:k = 3 × (10 + 10) = 60
6. 程序输出分析
复制代码
1 2 3 4 5 6 7 8 9 |
|
答案:输出 hello
说明:
get_memory
正确地用指针的指针分配了内存;strcpy
正确;printf(str)
建议写为printf("%s", str);
7. 程序输出分析
复制代码
1 2 3 4 5 6 7 8 9 |
|
答案:运行时错误或不可预期的值
说明:
- 返回的是局部数组
p
的地址,在函数返回后释放; - 导致
str
指向非法内存,访问未定义。
8. TCP 建立连接的过程(3 次握手)
答案:
- 客户端发送 SYN;
- 服务器响应 SYN+ACK;
- 客户端发送 ACK; 三次握手完成后,连接建立。
9. Linux 驱动大致分为哪几类?字符设备驱动由哪部分组成?
驱动类型:
- 字符设备驱动
- 块设备驱动
- 网络设备驱动
字符设备驱动组成:
- file_operations 操作集
- register_chrdev 进行注册
- open/read/write/ioctl 等接口函数实现
10. 实现 strcat 函数
复制代码
1 2 3 4 5 6 7 8 9 10 11 |
|
说明:
- 遍历到 strDest 末尾;
- 将 strSrc 的字符逐一复制过去;
- 添加末尾结束符。
更多内容全在下方专栏
全网最受欢迎的嵌入式笔试专栏
笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学
3000+订阅还会涨价,提前订阅提前享受,持续更新中。
专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
#面试问题记录##满分简历要如何准备?##嵌入式笔面经分享#