• 测试开发面试题总结


    1.什么是死锁,如何避免死锁?

    死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象。

    产生死锁的原因:(1)系统资源不足(2)进程运行推进的顺序不合适(3)资源分配不当

    避免方法:对资源分配要给予合理规划

    2.进程和线程的概念

    进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单元

    线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

    一个程序至少有一个进程,一个进程至少一个线程

    补充:

    进程实际上表示的就是计算机正在进行的一个任务,比如,打开一个浏览器便是启动一个浏览器进程,打开一个记事本便是启动一个记事本进程。但是,一个进程未必只能进行一件事情,比如一个Word进程,在打字的同时还会有拼写检查,这些在进程内部同时进行多个”子任务“,就称为线程。

    进程和线程的主要差别在于他们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

    3.TCP,UDP的区别

    (1)TCP是面向连接的(如打电话先拨号建立连接),应用代表如邮件传输;UDP是无连接的,即发送数据之前不需要建立连接(如实时通信)

    (2)TCP提供可靠的服务,也就是说,通过TCP连接传送的数据无差错,不丢失,不重复;UDP尽最大努力交付,即不保证可靠支付

    (3)TCP面向字节流;UDP是面向报文的

    (4)TCP首部开销大,UDP首部开销小

    (5)UDP传输数据更快

    (6)TCP保证数据正确性及顺序;UDP可能会丢包,不保证顺序

    4.Get和Post方法区别

    (1)Get方法是从指定资源请求数据,请求参数在URL中;Post方法是向指定资源提交要被处理的数据,请求参数封装在HTTP请求数据中

    (2)Get方法保留在浏览器历史记录中,Post不会保留在浏览器历史记录中

    (3)Get请求有长度限制,Post请求对数据长度没有要求

    (4)Post请求不能被收藏为书签,Get可以被收藏为书签

    5.Cookie和session的区别

    (1)cookie数据存放在客户的浏览器上,session数据放在服务器上

    (2)cookie不是很安全

    (3)session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,考虑减轻服务器性能方法,应当使用cookie

    (4)单个cookie保存的数据不能超过4K,浏览器对Cookie存放大小有限制

    6.TCP三次握手,四次挥手原理

    TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接

    (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认

    (2)第二次握手:服务器B收到SYN包,必须确认客户端A的SYN包(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

    (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

    三次握手完成后,客户端与服务器开始传送数据。

    由于TCP连接是全双工的,因此每一个方向都必须单独进行关闭,TCP协议采用四次挥手关闭连接:

    (1)客服端A发送一个FIN,用来关闭客户端A到服务器B的数据传送。

    (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号

    (3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

    (4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

  • 相关阅读:
    32、至少列举8个常用模块都有那些?
    31、如何安装第三方模块?以及用过哪些第三方模块?
    uva120 Stacks of Flapjacks (构造法)
    stringstream的基本用法
    Codeforces Round #246 (Div. 2) C. Prime Swaps(贪心,数论)
    Codeforces Round #271 (Div. 2)D(递推,前缀和)
    poj3061 Subsequence&&poj3320 Jessica's Reading Problem(尺取法)
    Codeforces Round #266 (Div. 2)B(暴力枚举)
    uva10815(set的应用)
    uva489(需要考虑周全)
  • 原文地址:https://www.cnblogs.com/graybird/p/10749225.html
Copyright © 2020-2023  润新知