本文向大家分享10条关于python的基础知识,经常出现在面试题中,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起学习学习吧!
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操作,访问速度相对慢。
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服务器超负载或停机维护
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 不同源——端口不同
只要不满足其中任意一个要求,就不符合同源策略,就会出现“跨域”
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的优势。
9、python中copy和deepcopy区别?
1、复制不可变数据类型
不管copy还是deepcopy,都是同一个地址当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的id值与浅复制原来的值相同。
2、复制的值是可变对象(列表和字典)
浅拷贝copy有两种情况:
第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
第二种情况:复制的对象中有 复杂 子对象 (例如列表中的一个子元素是一个列表), 改变原来的值 中的复杂子对象的值 ,会影响浅复制的值。
深拷贝deepcopy:完全复制独立,包括内层列表和字典。
10、Python字典和json字符串相互转化方法?
json.dumps()字典转json字符串,json.loads()json转字典
觉得文章还不错的话不妨收藏起来慢慢看,有任何建议或看法欢迎大家在评论区分享讨论!
我是一名python开发工程师,整理了一套python的学习资料,如果你想提升自己,对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!希望对你能有所帮助!