python基础面试题整理---从零开始 每天十题(01)
最近在弄flask的东西,好久没写博客的,感觉少了点什么,感觉被别人落下好多,可能渐渐的养成了写博客的习惯吧。也是自己想学的东西太多了(说白了就是基础太差了,只是know how,不能做到konw why)。
不说那些毒鸡汤了,我们来说说我们今天的python基础面试题吧。
一,Q:python的优缺点有什么?
A:优点:
1,基础语法简单易学,对于初学者来说,语法还是相对简单的,比较容易学习,网上的学习资料也很多。
2,面向对象,在python里继承和封装较多,而python的多态还是相对较少的(起个不一样的名字不就可以吗....对java的多态表示无奈),从而减少了大量代码的输出。
3,语言简洁,相对java比,语法要比java简单很多(我只会java和python,会一点点Node.js和前端的VUE)
4,开源,python语言开源便于我们自行去维护和更深入的了解源码。
5,丰富的社区资源,具有超级丰富的三方库。
缺点:
1,运行速度慢,由于python是解释性语言,对比其它语言要相对慢一些。
2,python2和python3不兼容(python2在2020年1月就不在维护)
3,代码安全性较弱,我们发布项目,其实就是发布我们的源码,安全性差。
MA:个人认为python的优点在于他是一种面向对象的动态类型语言,从自动化运维到web开发再到人工智能,python都有着良好的表现,
个人觉得还是python有着丰富的三方类库,给予了python很大的发展,例如NumPy,pandas在自然语言处理内都是很常用,而且是很好用的
三方库,缺点就是运行速度稍慢一些,就是因为python是解释性语言,需要在CPU上一行行翻译成机器可以读懂的机器码,这个翻译的过程比较耗时,所有运行会慢一些,
再就是部署时候就是直接源码部署,安全性差,python2和python3不兼容的问题,我觉得不是问题,python2将要不再维护了,python2也就逐渐推出我们的程序。
注:开放性题,想了解更多,你可以去自行百度,组织成自己的语言就可以啦。A即为比较官方的说法(只摘取部分),MA为我自己组织的一段话,大家可以参考。
二,Q:说一说你对深拷贝和浅拷贝的理解,他们有什么不同。
A:假设我们复制了一份A,复制出来的叫做B,如果我们修改A,发现B也随着变化了,说明这个是浅拷贝,也就是说明了,我们的浅拷贝,只是增加了一个指针指向了同一个内存地址,当我们修改A,也就是修改原有的内存地址的值,B一定随之变化;如果我们修改了A,发现B没有变化,说明这个是深拷贝,也看得出来,深拷贝就是我们拿到A的内存的值,开辟了一个新的内存空间和创建了一个新的指针,指向了B,就是说,深拷贝就是将内存也复制成了两份,而浅拷贝并没有。浅拷贝:shallowCopy();深拷贝:deepCope()。
三,Q:python里的基本数据类型都有什么?
A:数字-number-数字;布尔型-bool-(True,False);字符串-str-'a'或者"a";列表-list-[];元祖-tuple-();字典-dict-{}。其中列表list,字典dict是可变的,其余数字number,字符串str,元祖tuple是不可变的
四,Q:简单说一下python中如何实现多线程
A:线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。
GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。
注意:GIL后期会出一个专门的博客来说一说,刚才查了一下,要说的东西还是比较多的。
五,Q:什么是Flask,和Django对比有什么不同
A:Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask是一个轻量级框架,相当于一个步枪,而 Django是一个个重量级框架,相当于一个重机枪,但是Flask的三方库也是相当强大的,Django能做到的 Flask也都可以(个人表示只用过Flask)。
Flask的优势:
Flask自由、灵活,可扩展性强,入门简单,适用于中小型网站的开发,非常试用web服务的API开发,性能方面均优于或高于Django,Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库,Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
Django的优势:(三方摘录)
Django的自带ORM非常优秀,综合评价略高于SQLAlchemy,Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja,Django自带的数据库管理app好评如潮,Django目前支持Jinja等非官方模板引擎。
六,Q:如何在python中管理内存
A:python的内存管理是由私有的堆空间管理的,所有的python对象和数据结构都在一个专有的堆,程序员没有访问该堆的权限,只有解释器才能对他进行操作。可用 is 判断两个对象的内存地址是否一样,用 == 判断两个对象的值是否一样。None值也有内存地址,用print(id(None))可以打印其内存地址。
备注:这个写的感觉听不错哒,可以参考。https://www.cnblogs.com/wangyuhangboke/p/7802253.html
七,Q:刚刚说完了内存管理,现在我们来说说垃圾回收吧
A:python提供了对内存的垃圾收集机制,但是他将不用的内存放到内存池而不是反回给操作系统。python内部使用引用计数,来保持追踪内存中的对象,python内部记录了对象有多少个引用,就是引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要的时候,这个对象的引用计数为0时,他被垃圾回收。当对象被创建被、作为参数传递给函数或作为容器对象的一个元素引用计数增加,相反,一个本地引用离开他的作用域、对象的别名被显式的销毁、对象的一个别名被赋值给其他对象或窗口对象本身被销毁引用计数会减少。
八,Q:能否解释一下 *args 和 **kwargs?
A:当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值。*args可以当作可容纳多个变量组成的list或tuple。直观一点来点代码吧。
#!/usr/bin/env python
# -*- coding: utf-8 -*- def parseArgs(*args, **kwargs):
print(type(args))
print(args)
print(type(kwargs))
print(kwargs) if __name__ == '__main__':
parseArgs("test","",'',hello="hello",name='tom')
九,Q:解释 Python 中的 join() 和 split() 函数
A:join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串,例如
#!/usr/bin/env python
# -*- coding: utf-8 -*- str = "-"
seq = ("a", "b", "c") # 字符串序列
print(str.join(seq)) li = ['d', 'e', 'f'] # 字符串序列
print(str.join(li))
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。语法 str.split(str="", num=string.count(str)).
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。默认为 -1, 即分隔所有。例如
#!/usr/bin/env python
# -*- coding: utf-8 -*- str = "my name is xc"
print(str.split()) # 以空格为分隔符,包含 \n
print(str.split(' ', 2)) # 以空格为分隔符,分隔成2+1个
十,Q:Python 区分大小写吗?
A:python是区分大小写的,最后一个题我自身觉得挺无聊的,但是仔细想想,还有点懵,自己试了一遍才知道,真的区分,别让别人的问题问懵了。
最近忙着弄Flask的源码,写博客的时间不多,过几天整理好了,把基础的工具类,权限,OSS登陆写好以后,我会开源在码云上。觉得是可以拆分部署的,不知道真实项目可不可以使用,还在补全注释和代码优化。
python基础面试题整理---从零开始 每天十题(01)的更多相关文章
- python基础面试题整理---从零开始 每天十题(02)
书接上回,我们继续来说说python的面试题,我在各个网站搜集了一些,我给予你们一个推荐的答案,你们可以组织成自己的语言来说出来,让我们更好的做到面向工资编程 一.Q:说说你对zen of pytho ...
- python基础面试题整理---从零开始 每天十题(04)
一.Q:如何用Python来进行查询和替换一个文本字符串? A:可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0]) re ...
- python基础面试题整理---从零开始 每天十题(03)
一.Q:用Python输出一个Fibonacci数列?(斐波那契额数列) A:我们先来看下代码 #!/usr/bin/env python # -*- coding: utf-8 -*- def fi ...
- Python基础面试题整理
基础 Python中lambda是什么意思 Python中的pass是什么意思 作为解释型语言,Python如何运行 什么是Python的单元测试 在Python中unittest是什么 如何将数字转 ...
- Python基础面试题库
Python基础面试题库 Python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,Python迎来了新一轮的高潮.目前,国内知乎.网易(游戏).腾讯(某些网站).搜狐(邮箱).金山. ...
- python基础全部知识点整理,超级全(20万字+)
目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...
- python基础面试题(全网最全!)
目录 1.为什么学习Python? 2.通过什么途径学习的Python? 3.Python和Java.PHP.C.C#.C++等其他语言的对比? 4.简述解释型和编译型编程语言? 5.Python解释 ...
- python测试工程师高端基础面试题整理
面试总括篇 技术技能 开发语言:python 数据库:mysql 操作系统;linux 网络协议基础 测试技能:自动化(UIselenium+接口)+性能 业务知识 测试工程师执业规划 初级--> ...
- python基础===flask使用整理(转)
flask 使用的一些整理 资源 Flask 文档|英文| expore flask| 快速教材| flask-admin| Flask-DebugToolbar| Flask-Login| Flas ...
随机推荐
- angular6 render2 & viewContentRef实践
angular 渲染层 angular一个跨平台的框架不仅仅针对的浏览器这一个平台 ElementRef 与 TemplateRef 简单的理解: ElemnetRef : 例如一个<span& ...
- 51nod1181【素数筛】
思路: 直接就是筛出素数,然后我很撒比的从那个地方往后for找一个位置也是质数的输出: #include <bits/stdc++.h> using namespace std; type ...
- Spring Cloud:使用Ribbon实现负载均衡详解(下)
在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...
- CAS单点登录之服务端部署
一.CAS服务端搭建 1.1 CAS支持Http登录配置 CAS默认是要https的链接才能登录的,不过学习的话是可以先去掉https限制,本博客介绍的是基于Cas4.2.7的,之前改过4.0的,详情 ...
- 部署spark 1.3.1 standalong模式
之前已经写过很多次部署spark 的博客,但是之前部署都是照瓢画葫芦,不得其中的细节,并且以前都是部署spark on yarn 部署环境 scala 2.10.2,jdk 1.6,spark 版本1 ...
- HDU-1029-Ignatius aned the Princess IV
链接:https://vjudge.net/problem/HDU-1029#author=0 题意: 给你n个数字,请你找出出现至少(n+1)/2次的数字. 思路: dp,hash超时了,不知道是不 ...
- python之模块random,time,os,sys,序列化模块(json,pickle),collection
引入:什么是模块: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类型. 1.使用python编写的代码(.py ...
- python入门之实例-商品选择
需求: 显示一系列商品,根据序号选择商品 li = ["手机","电脑","电视"] #函数enumerate在for循环遍历的时候,会默认 ...
- 转 Linux SendMail发送邮件失败诊断案例(四)
http://www.cnblogs.com/kerrycode/p/7826036.html
- # bug 查找 (一) 快速记录 IE8 下三个问题
bug 查找 (一) 快速记录 IE8 下三个问题 昨天 pc 端网站上灰度,发现多个在 IE8 下的问题,描述和解决方案如下: 第一个问题是 css 文件过大 现象 把项目所有的 css 打包成单个 ...