1. print 在 Python 中调用了底层什么语法?
答:Print 方法默认调用了 sys.stdout.write 方法来对控制台进行打印输出。
2. 如何不用中间变量交换 x 与 y 的值?
方法一:
x=x+y y=x-y x=x-y
方法二:
x,y = y,x
3. 谈谈你对 input() 函数的理解?
Python2 中有 raw_input() 和 input(), raw_input() 和 Python3 中的 input() 作用是一样的,input() 输入的是什么数据类型的,获取到的就是什么数据类型的.
Python3 中,input() 获取用户输入,不论用户输入的是什么,获取到的都是字符串类型的。
4. 谈谈 range 和 xrange 的区别?
Python2 中两者用法相同,不同的是 range 返回的结果是一个列表,而 xrange 的结果是一个生成器,前者是直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间,所以当列表很长时,使用 xrange 性能要比 range 好。
Python3 中取消了 xrange,直接使用 range,其作用效果和 xrange 一样,当然,Python3 中也可以直接使用 xrange,但此举属于多此一举。
5. 以下 python 程序的输出是什么?
for i in range(6,0,-1):
print(i)
答:6,4,3,2,1
6. 2G 的内存怎么读取一个 8G 的文件?
方法一:可以采用生成器进行多次读取,每次读取少量的数据,分多次读取。
方法二:可以使用 Linux 里面的 split 命令切割成小文件,对数据进行处理,此方法效率较高,具体怎么实现大家可以进行百度。
7. 现在考虑有一个 SQL 格式的文件 data.sql 大小约为 10M,如何进行读取操作
代码实现:
from Multiprocess import Process
def get_lines():
l = []
with open(‘data.sql’,’rb’) as f:
data = f.readlines(60000)
l.append(data)
yield l
yield l
内存只有 4G 无法一次性读入 10G 的文件,需要分批读入。分批读入数据要记录每次读入数据的位置。分批每次读入数据的大小,太小就会在读取操作上花费过多时间。
8. read(n)、readline() 和 readlines() 的区别?
read:从当前位置读取 n 个字节,若无参数 n,则表示读取至文件结束为止
readline:每次读取一行内容,占用空间小,适合大文件,采用生成器的方法
readlines:读取整个文件所在行,保存在一个列表中,不适合读大文件,比较耗内存
9. 异常处理 except 中 return 后还还会不会执行 finally 中的代码?
会执行 finally 中的代码。
10. 常用的 Python 标准库有哪些?
os 操作系统、time 时间、random 随机、pymysql 连接数据库、threading 线程、multiprocessing、进程、queue 队列
第三方库:Django 和 Flask 也是第三方库,requests、virtualenv、Selenium、Scrapy、xadmin、Celery、re、hashlib md5
科学计算库:Numpy、Pandas
11. 对象赋值,深拷贝和浅拷贝的区别(重点)?
对象赋值:不会开辟新的空间,只复制新对象的引用
浅拷贝:会创建新的对象空间,内容会引用原对象
深拷贝:会拷贝对象所有的内容元素,包括嵌套元素
12. init 和 new 的区别?
init 在对象创建后对对象进行初始化
new 在对象创建之前创建一个对象并将该对象传递给 init
13. Python 里如何生成随机数?
Python 中用于生成随机数的模块是 random,在使用前需要 import random,可以生成随机浮点数,制定浮点数和整数及随机的元素(字符串、列表、元组)。
14. 输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)
import datetime
def dayofyear():
year = input(“请输入年份:”)
month = input(“请输入月份:”)
day = input(“请输入天:”)
date1 = datetime.date(year=int(year),month=int(month),day=int(day))
date2 = datetime.date(year=int(year),month=1,day=1)
return (date1 - date2 + 1).days
15. 说一下 os.path 和 sys.path 区别是什么?
os.path 主要是用于对系统路径文件的操作(系统相关)
sys.path 主要是对 Python 程序的系统环境的操作(程序相关)
16. Python 中的 os 模块常见方法?
os.remove():删除文件
os.rename():重命名文件
os.walk():生成目录树下的所有文件名
os.mkdir/makedirs:创建目录/多层目录
os.rmdir/removedirs:删除目录/多层目录
os.listdir():列出指定目录的文件
os.getcwd():取得当前工作目录
os.chmod():改变目录权限
os.path.basename():去掉目录路径,返回文件名
os.path.dirname():去掉文件名,返回目录路径
os.path.join():将分离的各部分组合成一个路径名
os.path.split():返回 (dirname(), basename()) 元组
os.path.splitext():返回 (filename, extension) 元组
os.path.getatime\ctime\mtime:分别返回最近访问、创建、修改时间
os.path.getsize():返回文件大小
os.path.exists():是否存在
os.path.isabs():是否为绝对路径
os.path.isdir():是否为目录
os.path.isfile():是否为文件
17. Python 的 sys 模块常用方法?
sys.argv 命令行参数 List,第一个元素是程序本身路径
sys.modules.keys() 返回所有已经导入的模块列表
sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback 当前处理的异常详细信息
sys.exit(n) 退出程序,正常退出时 exit(0)
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
18. unittest 是什么?
unittest 是 Python 中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等的功能。
19. 模块和包的区别?
Python 中,模块是比包更高层的的概念。每一个 Python 代码文件都是一个模块,并可以引用其他的模块,比如对象和属性。一个包含许多 Python 代码的文件夹是一个包。一个包可以包含模块和子文件夹。
20. 谈谈 Python 中的日志模块?
Python 自带 logging 模块,调用 logging.basicConfig() 方法,配置需要的日志等级和相应的参数,Python 解释器会按照配置的参数生成相应的日志。
21. 说说 Python 如何进行类型转换?
内建函数封装了各种转换函数,可以使用目标类型关键字强制类型转换。
例如:
tuple(x):将序列 x 转换为一个元组
list(x):将序列 x 转换为一个列表
str(x):将对象 x 转换为一个字符串
22. 有什么手段能提升 Python 运行性能?
1、对需要 CPU 计算的使用多进程,充分利用机器的多核性能 2、对于性能影响较大的部分代码,可以使用 C 或 C++ 编写 3、对于 IO 阻塞造成的性能影响,可以使用线程和协程来解决 4、尽量使用 Python 的内建函数 5、尽量使用局部变量
23. Python 变量的作用域?
Python 变量的作用域由在代码中被赋值的地方所决定。搜索顺序为:本地作用域(Local)—> 当前作用域被嵌入的本地作用域 (Enclosing locals)—> 全局/模块作用域(Global)—> 内置作用域(Built-in)。
24. 什么是 Python 自省?
由于 Python 中一切皆对象,所以自省是指 Python 在运行的过程中指导所运行对象的类型。
25. 关于 Python 的命名空间?
Python 中所有的名字都存在于一个空间容器中,它们在该空间中存在和操作,就像一个容器,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该容器里面寻找相应的对象。
26. Python 开发中常用的 Linux 的基本命令?
见链接,总结得比较详细:
https://www.cnblogs.com/yjdhycfspace/p/7730690.html
27. Linux 中如何查看日志?
Linux 中应用日志以文本存储在 /var/log/ 目录下,日志后缀名为. log。
28. Ubuntu 和 CentOS系统如何设置开机自启动一个程序?
Ubuntu 系统修改 /etc/rc0.d~/etc/rc6.d 和 /etc/rcS.d 文件夹的内容,添加需启动的程序,S 开头的表示启动,K 开头的表示不启动。
CentOS 系统修改 rc.local 文件添加开机启动命令。
29. Linux 中 find 和 grep 的区别
grep 是查找匹配条件的行,find 是搜索匹配条件的文件。
30. Linux 重定向命令 > 和 >> 的区别?
- 是将内容重定向到一个文件,是全量的,如果文件不存在则创建
- 是将内容追加到文件,是增量的,如果文件不存在则创建
31. Linux 中软连接和硬链接的区别?
软连接相当于快捷方式,当删除源文件时,后面的内容就找不到前面的 内容了。硬链接相当于源文件的一个别名,多个别名所代表的是同一个文件。当删除一个文件的时候,依旧可以找到该内容,但是硬链接数会减 1,当硬链接数为 0 的时候,文件被删除。