多线程 执行到一半 no session_10条python知识分享,mysql和redis区别?多线程、多进程?...

本文向大家分享10条关于python的基础知识,经常出现在面试题中,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起学习学习吧!

b0e7a143ef3878fa9f39396efc189706.png

1、Python内建数据类型有哪些?

整型--int

布尔型--bool

字符串--str

列表--list

元组--tuple

字典--dict

2.提高Python运行效率的方法?

1、使用生成器,因为可以节约大量内存;

2、循环代码优化,避免过多重复代码的执行;

3、核心模块用Cython PyPy等,提高效率;

4、多进程、多线程、协程;

5、多个if elif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率。

3、mysql和redis区别?

redis: 内存型非关系数据库,数据保存在内存中,速度快。

mysql:关系型数据库,数据保存在磁盘中,检索的话,会有一定的Io操作,访问速度相对慢。

3d500f48a850bed3e90b5b0409cf48f1.png

4、常见的状态码和意义?

200 OK请求正常处理完毕204 No Content请求成功处理,没有实体的主体返回206 Partial ContentGET范围请求已成功处理301 Moved Permanently永久重定向,资源已永久分配新URI302 Found临时重定向,资源已临时分配新URI303 See Other临时重定向,期望使用GET定向获取304 Not Modified发送的附带条件请求未满足307 Temporary Redirect临时重定向,POST不会变成GET400 Bad Request请求报文语法错误或参数错误401 Unauthorized需要通过HTTP认证,或认证失败403 Forbidden请求资源被拒绝404 Not Found无法找到请求资源(服务器无理由拒绝)500 Internal Server Error服务器故障或Web应用故障503 Service Unavailable服务器超负载或停机维护
2300a832cf922ed6b097059a1fc68910.png

5、常见MYSQL数据存储引擎?

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

6、简述同源策略?

同源策略需要同时满足以下三点要求:

1)协议相同

2)域名相同

3)端口相同

http:www.test.com与https:www.test.com 不同源——协议不同

http:www.test.com与http:www.admin.com 不同源——域名不同

http:www.test.com与http:www.test.com:8081 不同源——端口不同

只要不满足其中任意一个要求,就不符合同源策略,就会出现“跨域”

bc2e30881c96d414ba9a3104291888c0.png

7、简述cookie和session的区别?

1,session 在服务器端,cookie 在客户端(浏览器)。

2、session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效,存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置。

3、cookie安全性比session差。

8、简述多线程、多进程?

进程:

1、操作系统进行资源分配和调度的基本单位,多个进程之间相互独立。

2、稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制。

线程:

1、CPU进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源。

2、如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃,都会造成进程的崩溃。

应用:

IO密集的用多线程,在用户输入,sleep 时候,可以切换到其他线程执行,减少等待的时间。

CPU密集的用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释器锁,当前运行的线程会霸占GIL,其他线程没有GIL,就不能充分利用多核CPU的优势。

870c658e39f03ab7dbef5d3e0f5ff4d2.png

9、python中copy和deepcopy区别?

1、复制不可变数据类型

不管copy还是deepcopy,都是同一个地址当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的id值与浅复制原来的值相同。

c1cd8af8a1f259f4dce1231773c60639.png

2、复制的值是可变对象(列表和字典)

浅拷贝copy有两种情况:

第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。

第二种情况:复制的对象中有 复杂 子对象 (例如列表中的一个子元素是一个列表), 改变原来的值 中的复杂子对象的值 ,会影响浅复制的值。

深拷贝deepcopy:完全复制独立,包括内层列表和字典。

503a75872b8200a2bd74bac53f2c30ff.png
11cea38b838d07d6d342e6d8b3c4d16f.png

10、Python字典和json字符串相互转化方法?

json.dumps()字典转json字符串,json.loads()json转字典

36aefb367bba43d745bd6dc970b47933.png

觉得文章还不错的话不妨收藏起来慢慢看,有任何建议或看法欢迎大家在评论区分享讨论!

我是一名python开发工程师,整理了一套python的学习资料,如果你想提升自己,对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!希望对你能有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值