面试(一)
一、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缓存中的时候,请求被满足;
否则将会请求原始服务器,然后缓存到服务器,接着满足请求;
静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面;
动态缓存:是在新内容发布以后,并不预先生成相应的静态页面,直到对相应内容发出请求时,
如果前台缓存服务器找不到相应缓存,就向后台内容管理服务器发出请求,
后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点,但是以后就是直接访问缓存了

浙公网安备 33010602011771号