最近每天都会抽出一点时间刷python面试题, 想通过博客一点一点的记录下来,加油! 面试题以及答案是在网上看的并加上了自己一些理解, 如有不足还望指点.
1.常见的HTTP状态码有哪些?
200 请求成功
301 永久重定向
302 临时重定向
400 请求参数错误
403 没有权限
404 找不到请求页面
405 请求方式错误
500 服务器错误(代码出现bug)
502 nginx uwsgi 等服务挂了
2.解释说明赋值, 浅拷贝, 深拷贝?
赋值: 赋值只是对象简单的引用,不会创建新的对象,指向同一内存空间.简单的说赋值只是给原对象起了一个新的别名;
浅拷贝:浅拷贝不是对原对象的引用,会创建新的对象,不指向同一内存空间; 浅拷贝只拷贝了对象的第一层,对象里面的元素指向同一内存空间, 改变原对象里面的元素 拷贝的对象也会改变.
深拷贝:深拷贝会创建一个全新的对象,不指向同一内层空间,深拷贝拷贝了对象所有的元素,包括多层嵌套. so 对象里元素发生改变时 原对象元素不会发生改变.
注: 对于非容器类型没有拷贝一说;如果元组变量只包括原子类型则没有深拷贝.
import copy
一层的情况: # 浅拷贝 li1 = [1, 2, 3] li2 = li1.copy() li1.append(4) print(li1, li2) # [1, 2, 3, 4] [1, 2, 3] # 深拷贝 li1 = [1, 2, 3] li2 = copy.deepcopy(li1) li1.append(4) print(li1, li2) # [1, 2, 3, 4] [1, 2, 3]
多层的情况: import copy # 浅拷贝 li1 = [1, 2, 3, [4, 5], 6] li2 = li1.copy() li1[3].append(7) print(li1, li2) # [1, 2, 3, [4, 5, 7], 6] [1, 2, 3, [4, 5, 7], 6] # 深拷贝 li1 = [1, 2, 3, [4, 5], 6] li2 = copy.deepcopy(li1) li1[3].append(7) print(li1, li2) # [1, 2, 3, [4, 5, 7], 6] [1, 2, 3, [4, 5], 6]
3.在python中有多少种运算符?并简单说明.
1.算术运算符: + , - , * , / , // ,%, **
2.赋值运算符: =, +=, -=, *=, /=, **=, //=
3.逻辑运算符: and, or, not
4.关系运算符: =, !=, >, <, >=, <=,
5.成员运算符:in, not in
6.身份运算符:is, not is
7.位运算符:&, |, ~, ^
8.位运算符
4.python中 is 和 ==的区别?
首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
is判断的是两个对象是否为同一对象,通过id来判断 (是否指向同一内存空间)
==判断的是两个对象的值是否相等,通过value来判断
5. HTTP 和 HTTPS的区别?
1.https协议需要到ca申请证, 一般免费证书较少.
2.http是超文本传输协议, 信息是明文传输, https则是具有安全性的ssl加密传输协议.
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4.http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全.