整理需要背诵的笔试题内容(1)

笔试题

1.Linux内存分区

image


2.什么是空指针和什么是野指针

空指针是宏定义NULL,#define NULL(void*)0,指将整数0强制转换成地址,指向内存分区中的保留区的起始地址,保留区中程序无访问权限,应将指针初值指向始地址NULL,避免出现野指针。
野指针是指定义了指针却无初始化,若定义在局部变量中,又栈空间分配,栈空间内存不会自动初始化,而会出现随机数,可能会导致程序出现错误


3.出现段错误的原因

Segment fault是段错误,是代码运行过程中出现的常见报错,常出现的场景有内存越界,内存访问了没有访问权限的地方


4.全局变量和局部变量的区别

内存布局:
1)(栈空间)无static和const修饰的普通局部变量。
2)(数据段)全局变量,被static和const修饰的局部变量。
作用域:
1)全局变量在整个文件可用,但全局变量和局部变量定义同名变量,会导致全局变量不可用。
2)全局变量不初始化都存0,局部变量不初始化都存随机数。
生命周期:
1)全局变量是在程序开始运行之前的初始化就存在,到整个程序结束退出的时候才消失
2)局部变量在进入局部变量所在的代码块时存在,在该代码块退出的时候消失


5.程序编译四个过程

  1. -E 预处理(处理c程序中所有#开头的语句) -> .i文件
  2. -S 编译(把.i文件编译成.s的汇编文件) -> .s文件
  3. -c 汇编(形成可重定位的文件) -> .o文件
  4. 链接(库文件,.o文件)
  5. 可执行程序
    image

6.外部链接和内部链接的区别

外部链接:普通的全局变量,定义它的.c文件和其他.c文件都能使用的函数
内部链接:用static修饰的静态局部变量,只能在定义的.c文件中使用


7.头文件“ ” 和 < >的区别

" "通常用于自定义的头文件,先在当前路径寻找再去系统环境变量中查找。
< >通常用于系统提供的头文件,从系统环境变量查找。


8.RAM动态储存单位

RAM动态储存单位是利用MOS管栅极电容可以存储电荷的原理制成的


9.tar压缩解压

image


10.冒泡排序

image


11.请简述Linux内核的作用

Linux内核的四大作用:内存管理,文件系统管理,进程管理,网络管理
image
image


12.请简述Linux系统启动过程

上电 -> 执行启动引导程序bootloader -> 加载Linux内核 -> 挂载rootfs根文件系统 -> 安装驱动程序并执行脚本文件 ->提供字符终端,执行应用程序
image


13.标准IO和系统IO的区别

1)标准IO可以看成是在系统IO的基础上封装了缓冲机制(减低输入输出的次数)。
2)管理方式:标准IO的内核管理方式是链表管理,系统IO的内核管理方式是顺序表管理。
3)返回值:标准IO返回指针,系统IO返回下标。


14.以空间换时间的案例

1)(计算机结构体类型的大小)考虑计算机字节对齐
2)循环队列(空出最后一个空间不使用)
3)刷新缓冲区(输入输出)
4)申请堆内存作为缓冲区,以一块字符读取
5)设置字节对齐,恢复字节对齐#pragma pack(1)
6)32bit系统下读取图片m每行不足四的倍数进行行字节对齐


15.以时间换空间的案例

1)取消字节对齐#pragma pack()
2)一个个字符读取然后写入文件

16.开发板传输文件

开发板的Linux系统不具备程序的编辑能力和程序的编译能力,只具有程序的运行能力。需要在电脑的Linux系统中去完成程序的编辑和程序的编译,然后把生成的可执行文件传输到开发板,在开发板中运行。
image


17.判断当前机器是大端还是小端,必须使用联合体来进行判断

image


18.jpg解码流程

image

posted @ 2024-05-10 20:38  luxiaolim  阅读(9)  评论(0编辑  收藏  举报