Python面试题10.28

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. initnew 的区别?

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 的时候,文件被删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值