面试(一)

、unittest的工作原理

Test case:一个完整的测试单元,体现在Setup(测试环境的准备)、run(测试执行)、teardown(测试环境的还原)。
Test suite(集合或套件):多个测试用例的集合,测试套件或测试计划
Test Loader:用来加载 testcase 到 testsuite 中的。
Test runner:执行测试用例,测试结果会保存到TextTestResult实例中。
Test fixture:一个测试用例环境的搭建和销毁,主要是setUp() 和 setDown()方法。

二、装饰器的原理

Python中的变量名和对象是分离的,变量名可以指向任意一个对象。
从本质上,装饰器起到的就是这样一个重新指向变量名的作用,让同一个变量名指向一个新返回的可调用对象,从而达到修改可调用对象的目的

三、值传递、引用传递

# 值传递(不可变对象作为函数参数,相当于C语言的值传递)
def zhi(c):
    print("调用中", id(c))  # 2072954816   一开始传递进来的是对不可变数据类型a(数字类型)的引用
    c += 2  # 数字改变后有一个新的指针指向3所在内存空间,但原来指向2的指针a(内存地址空间依旧存在)未改变
    print("被修改后", id(c))  # 2072954848   故c的内存地址改变
    return c


# 引用传递(列表是可变数据类型,作为参数传递实则是传递对列表的引用,修改更新列表值后依旧引用不变)
def yinyong(l):
    print("调用中", id(l))  # 21694696
    l[1] = 30
    print("被修改后", id(l))  # 21694696
    return l


if __name__ == "__main__":
    a = 2
    print('调用前', id(a))  # 2072954816
    n = zhi(a)
    print(n, id(n))  # 4   2072954848
    print(a, id(a))  # 2   2072954816

    list1 = ["loleina", 25, 'female']
    print('调用前', id(list1))  # 21694696
    list2 = yinyong(list1)

    print(list1, id(list1))  # ['loleina', 30, 'female']  21694696
    print(list2, id(list2))  # ['loleina', 30, 'female']  21694696

四、linux常用命令

 之前的文章 https://www.cnblogs.com/yinwenbin/p/11874351.html

 昨天有问到的:

1、查看服务netstat命令,常用: netstat  -natp

2、查看进程ps命令,常用:ps  -ef 或者  ps aux

五、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全

六、cookies、session、、token的区别

HTTP请求是无状态
1、session id
为了把每个人区分开,每人发一个会话标识(session id)
由于每个人只需要保存自己的session id,而服务器要保存所有人的session id,给服务器造成压力;

2、token
用户信息+秘钥+加密算法做成签名,即token
登录时候服务器生成签名,token服务器不保存,用户把这个token 发给服务器,
服务器再用同样的HMAC-SHA256 算法和同样的密钥,对数据再计算一次签名, 和token中的签名做个比较,如果相同,则认证通过;
token无状态、支持跨域

3、Cookie
是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
不可以跨域;

七、缓存

web缓存也叫作代理服务器。(过期机制)
                 它是一种在不向原始服务器发送请求的情形下满足HTTP请求的技术。
                 当对象在web缓存中的时候,请求被满足;
                 否则将会请求原始服务器,然后缓存到服务器,接着满足请求;

静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面;
动态缓存:是在新内容发布以后,并不预先生成相应的静态页面,直到对相应内容发出请求时,
                  如果前台缓存服务器找不到相应缓存,就向后台内容管理服务器发出请求,
                  后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点,但是以后就是直接访问缓存了

posted @ 2021-03-15 22:59  whitewall  阅读(129)  评论(0)    收藏  举报