1.传指针和传引用
在 C 语言中,传引用和传指针是两种不同的方式来传递变量的地址。
传引用是指在函数中使用变量的别名,来访问和修改变量的值。在 C 语言中,可以使用 & 符号来传递变量的地
址。例如:
void foo(int &x) {
x = x + 1;
}
int main() {
int a = 10;
foo(a);
// a 的值现在是 11
return 0;
}
传指针是指在函数中使用指针变量,来访问和修改变量的值。在 C 语言中,可以使用 * 符号来声明指针变量,
并使用 & 符号来获取变量的地址。例如:
void foo(int *p) {
*p = *p + 1;
}
int main() {
int a = 10;
foo(&a);
// a 的值现在是 11
return 0;
}
在这两种情况下,都可以使用函数来修改变量的值。但是,传引用的方式比传指针的方式更简单,因为不需要使用指针运算符来访问变量的值。二者的区别是,指针可以重新指向另一个地址,但是引用不能重新指向另一个变量,他只能被初始化一次。
2.动态库和静态库的区别
静态库:在编译的时候就将所有目标库全部整合进代码中。这样的优点是,执行过程中不
需要额外添加库。缺点是当代码中某个库需要更新则需要重新编译一遍。
动态库:当程序调用某个库的函数时才将所需库加载到代码中。这样的优点是,库的更新
不需要重新编译。缺点是,程序运行环境中必须包含程序所需所有函数库。
3.SPI是什么,有几根线,有几个模式
SPI是一种高速的,全双工,同步通讯方式。一共有四根线。SPI总线有四种工作方式,通过行同步时钟极性和相位可以进行组合配置。
CPOL | CPHA | 工作方式 |
---|---|---|
0 | 0 | 数据发送高电平有效,采样是在第一个跳变沿,发送数据是在第二个跳变沿 |
0 | 1 | 数据发送高电平有效,采样是在第二个跳变沿,发送数据是在第一个跳变沿 |
1 | 0 | 数据发送低电平有效,采样是在第一个跳变沿,发送数据是在第二个跳变沿 |
1 | 1 | 数据发送低电平有效,采样是在第二个跳变沿,发送数据是在第一个跳变沿 |
4.逻辑地址、虚拟地址、物理地址、总线地址的区别?
逻辑地址:是内存分段管理方式中的段内偏移地址。
虚拟地址:由MMU映射出来的地址。
物理地址:将虚拟地址通过MMU进行抵制转换后的地址就是物理地址
总线地址:总线地址是用于在总线上识别设备的唯一标识符。。在计算机系统中,总线地址通常用于识别从总线连接的设备
5.用户空间与内核空间有哪些通信方式?
1.系统调用:用户空间的程序可以通过系统调用来请求内核空间的服务。系统调用是一种
特殊的函数,允许用户空间的程序访问内核空间的功能。
2.信号:用户空间的程序可以通过向内核发送信号来请求某些特殊操作。内核可以通过向
用户空间发送信号来通知用户空间的程序有关特定事件的发生。
3.共享内存:用户空间的程序和内核空间的程序可以通过共享内存进行通信。共享内存是
一块在内核空间和用户空间之间共享的内存区域。
6.Linux系统的挂起、待机、休眠?
挂起:CPU,内存继续工作,显示器等外设停止工作。
待机:CPU等外设停止工作。内存正常运行。
休眠:CPU,内存等外设停止工作,并且将内存中的数据保存在硬盘中。
7.简述TCP三次握手的过程
1.发送方发送SYN报文段:发送方发送一个SYN报文段,表示它希望建立一个新的连
接。SYN报文段还包含发送方的初始序列号。
2.接收方接收SYN报文段并回复SYN+ACK报文段:接收方收到SYN报文段后,会回
复一个SYN+ACK报文段。SYN+ACK报文段包含接收方的初始序列号和确认号。确认号
表示接收方已收到了发送方的SYN报文段。
3.发送方接收SYN+ACK报文段并回复ACK报文段:发送方收到SYN+ACK报文段后会
回复一个ACK报文段。ACK报文段包含发送方的确认号,表示它已收到了接收SYN+ACK
报文段。
8.简述TCP四次挥手的过程。
1.发送方发送FIN报文段:发送方发送一个FIN报文段,表示它希望关闭连接。
2.接收方接收FIN报文段并回复ACK报文段:接收方收到FIN报文段后,会回复一个AC
K报文段,表示它已经收到了FIN报文段。
3.接收方发送FIN报文段:接收方也希望关闭连接,因此它会发送一个FIN报文段。
4.发送方接收FIN报文段并回复ACK报文段:发送方收到FIN报文段后,会回复一个AC
K报文段,表示它已经收到了FIN报文段。
9.为什么建立连接只需要三次握手,而断开连接需要四次挥手呢?
建立连接时,服务器处于listen状态,此时可立即建立连接,把ACK和SYN放在一个报文
里发送给客户端。
断开连接时,服务器可能还有数据暂时未给客户端发送完毕,此时不能立即断开连接,因
此此时ACK(应答信号)和SYN(释放连接)需要分开发送,故比三次握手多一个环节。