面经汇总 一
面经汇总(一)
1 GET 与POST的区别:(***)
作用:
GET是用来获取资源的,POST是用来传输实体主体的。
参数:
GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。
安全性:
GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。
安全的方法除了 GET 之外还有**:HEAD、OPTIONS**。
不安全的方法除了 POST 之外还有 PUT、DELETE。
幂等性:
幂等的 HTTP 方法,同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。所有的安全方法也都是幂等的。
GET /pageX HTTP/1.1 是幂等的,连续调用多次,客户端接收到的结果都是一样的
POST /add_row HTTP/1.1 不是幂等的,如果调用多次,就会增加多行记录
可缓存性:
请求报文的 HTTP 方法本身是可缓存的,包括 GET 和 HEAD,但是 PUT 和 DELETE 不可缓存,POST 在多数情况下不可缓存的。
响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501
XMLHttpRequest:
在使用 XMLHttpRequest 的 POST 方法时,浏览器会先发送 Header 再发送 Data。但并不是所有浏览器会这么做,例如火狐就不会。
而 GET 方法 Header 和 Data 会一起发送。
2 什么是进程和线程,有什么区别 (*)
进程是具有一定功能的一个程序关于某一个数据集进行的一次运行活动,是系统进行资源分配和调度的基本单位。线程是进程的一个实体,是CPU进行调度和分配的基本单位。一个进程里面可以拥有很多个线程,线程不拥有系统资源,但是线程会有一些运行不可缺少的资源,比如程序计数器,寄存器以及堆栈,以此同时,同一进程中的线程共享进程中的资源。进程的创建和销毁,系统的开销非常大,但是,线程的创建和销毁的开销比较小。
3 进程如何进行通信(*)
进程同步与进程通信很容易混淆,它们的区别在于:
进程同步:控制多个进程按一定顺序执行;
进程通信:进程间传输信息。
进程通信是一种手段,而进程同步是一种目的。也可以说,为了能够达到进程同步的目的,需要让进程进行通信,传输一些进程同步所需要的信息。
1 管道 :
管道是通过调用 pipe 函数创建的,fd[0] 用于读,fd[1] 用于写。
#include <unistd.h>
int pipe(int fd[2]