9:计算机基础面试题

一:进程和线程的区别

     1:基本意义

    进程是资源分配的最小单元,线程是运算调度的最小单元

     2:包含关系  

    进程包含一个线程或多个线程,引入线程是为了提高系统的并发性

  3:拥有资源(cpu,内存等)

    进程是拥有资源,线程不拥有资源,向进程申请资源使用,同一进程中的线程共享进程的资源

 4:系统开销

    进程创建和撤销,切换系统开销大。线程之间切换的开销小,因为不需要切换地址空间

· 5:相互影响

    进程之间不会相互影响,线程之间影响大,一个进程挂了对另一个进程没有影响,一个线程挂了,可能数据会出错,整个进程可能也会挂掉

 

 

二:Http请求的过程与原理(http交互过程和从浏览器地址输入url到显示主页的过程)

  一种:

    缓存解析:浏览器获取URL后,先去缓存中查找资源,从浏览器缓存-系统缓存-路由器缓存中查看;

         如果有就从缓存中显示界面,不再发送请求; 如果没有,则发送HTTP请求。

    域名解析:发现缓存中没有资源,发送HTTP请求; 在发送HTTP请求之前,需要进行DNS解析(域名解析);

           DNS解析(递归和迭代查询):域名到IP地址的转换过程,域名的解析工作由DNS服务器完成,解析后可以获取域名相应的IP地址。

    TCP连接:三次握手在域名解析后,浏览器向服务器发起了HTTP请求,

         TCP连接;因为TCP协议时面向连接的,所以在传输数据前必须建立连接,即三次握手;TCP连接建立后,浏览器开始向服务器发送HTTP请求报文。

    收到请求:服务器收到浏览器发送的请求信息,返回响应。

    页面渲染:浏览器收到服务器发送的响应,显示页面内容。

 

 

2:tcp三次握手

 1:基础:TCP报文是由首部和数据载荷两部分组成,它的功能由首部各字段的作用体现,TCP首部格式由固定首部(20个字节)和扩展首部(最大40个字节),也就是首部长度到20-60

 2:固定首部的字段有

  源端口

  目的端口

  序号:seq(数据载荷的第一个字节的序号)

  确认号:(比如ack确认号为n,说明已接受序号n-1为止的所有数据,期望下次接受序号为n的数据,当确认标识位ACK=1时确认号字段有效,ACK=0时确认号无效),

  数据偏移:(以4字节为单位):TCP报文的起始到数据载荷起始的长度,也就是首部长度(20-60字节之间),它的范围在二进制0101(对应十进制5)-1111(对应十进制15)

  保留字段:以后使用,现在设置为0

  窗口字段:流量控制(接受和拥塞窗口取最小值)

  校验和:检查传输过程中是否出现误码,在TCP报文段加上伪首部

  紧急指针:当URG=1有效,紧急数据直接上交应用进程,不需要在接受缓存中排队

  同步标志位SYN:SYN=1是TCP连接的同步序号

  确认标志位ACK:ACK=1确认报文

  终止标志位FIN:TCP释放连接

  复位标识位RST:释放连接在建立连接

    3:三次握手流程

  1:客户端同步请求(SYN=1,seq=x初始序号)

      2:服务端同步确认(SYN=1,ACK=1)

           seq=y   ack=x+1(确认已接受了序号为x的数据)

      3:客户端确认(Ack=1)普通确认段

          seq =x+1(以前发送的是x,现在是x+1)

         ack =y+1(已接受服务器端序号为y的数据)

    4:四次挥手

        1:客户端确认终止连接(Fin=1,Ack=1)

          seq=u(之前客户端发送的数据序号+1)     ack=v(已接到服务器V—1序号的数据)

        2:服务器确认连接(Ack=1)

          seq=v(客户端已接受了v-1的数据) ack=u+1

        3:服务器确认终止连接(F in=1,Ack=1)

          seq=w(不是v+1,在半关闭状态下,服务端可能已发送部分数据)

          ack=u+1(是对之前客户端数据的在次确认) 

        4:客户端确认连接(Ack=1)

       seq=u+1(第一次客户端确认终止发送的数据序号是u)

           ack=w+1(服务器确认终止发送的数据序号是w)

          在等待2MSL关闭

  

3:get和post区别

  1:编码格式----GET请求只能进行url编码(十六进制的ascii码),而POST支持多种编码方式

  2:请求参数----GET请求参数放在url里面,POST参数放在请求体里面。get也可以放请求体但是会被浏览器过滤掉

  3:长度限制----GET请求的长度根据当前浏览器规格设定,一般限制2048字符,POST没有

  4:GET请求可以被浏览器缓存,POST请求不可以缓存

  5:安全性---GET请求的参数放在url里面不太安全,Post参数放在请求体里面相对安全

  6:访问方式---GET请求可以直接通过浏览器访问,支持刷新和后退,POST不能直接用浏览器访问,刷新后数据重新发送

  7:数据包数量---get传输一个TCP数据包,post传输两个TCP数据包 ,对于post,先发送头部信息,服务器响应100 continue,在发送数据,服务器响应200返回数据 ,也就是第一次确认服务器和网络没异常,才会第二次真正的提交数据

  

4:Session和Cookie的区别

  Cookie:就是请求信息的临时文件,服务器响应有set-cookie字段内容保留在客户端,当客户端请求同类资源时,会把cookie一起携带发送到服务器

  Session:就是比如用户登录,请求会把用户名和密码表单信息发送给服务器,服务器会生成session并创建一个session id 的cookie,它的值映射了服务器的session,客户端收到cookie后,会把session id保存在cookie中,

       之后请求会把cookie带上,服务器会提取cookie中的session id读取用户信息

  区别:

    1:cookie存在客户端,但不能跨浏览器,容易被窃取,session存在服务器端,相对安全

    2:生命周期不一样,cookie是累计的,创建时就开始记时,比如创建30分钟后就失效,session是间隔的,比如30分钟内没有在次访问session就失效

    3:存储大小,但个cookie不超过4k,session没有限制,但存在太多会消耗服务器资源,需要设置删除机制

    4:存储类型,Cookie只能存字符串类型,Session没有限制

5:TCP和UDP的区别

  1:TCP只支持单播(一对一),UDP单播,多播,广播(一对一,一对多,一对全)

  2:TCP是面向字节流,UDP是面向应用报文

  3:TCP是提供可靠传输(比如文件传输) UDP是提供不可靠传输(比如ip电话,视频会议等实时场景)

  4:TCP报文首部字节在20--60之间,UDP报文首部字节只有8个

  5:TCP有流量和拥塞控制,UDP没有

6:HTTP和HTTPS的区别

  1:端口 ----HTTP是80端口    HTTPS是443端口

  2:安全-----HTTP是明文传输,HTTPS使用SSL协议加密

  3:速度-----HTTP协议相对简单,通讯速度快   ,HTTPS由于需要加解密,消耗更多cpu和内存资源,通讯速度相对较慢

     4:经济性----HTTP协议是免费使用的,而 HTTPS 协议需要到CA机构缴费申请证书

 7:网络七层模型

  应用层---表示层--会话层--传输层--网络层--数据链路层--物理层

    应用层---传输层(tcp udp)--网络层(ip,路由器)--数据链路层(交换机)--物理层

 

posted @ 2025-04-28 23:22  观呼吸  阅读(7)  评论(0)    收藏  举报