Python面试题170道

【已完成23道】

Python 今年还是很火,不仅是编程语言排行榜前二,更成为互联网公司最火热的招聘职位之一。伴随而来的则是面试题目越来越全面和深入化。有的时候不是你不会,而是触及到你的工作边缘,并没有更多的使用,可是面试却需要了解。

所以我结合自己的面试经历以及各大厂的面试题库,准备了 170 道 2019 年最新的 Python 面试题解析,很多老旧的问题已经帮你剔除,直接看这份最新的即可。让你最短时间内掌握核心知识点,更高效的搞定 Python 面试!

点击查看标准答案

1. 语言特性

1.谈谈对 Python 和其他语言的区别
答:Python是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库,它是一门强类型可移植,可扩展,可嵌入的解释型编程语言,属于动态语言。

拿C语言和Python比较:Python的第三方库比较齐全并且使用简洁,很少代码就能实现一些功能,如果用C语言去实现相同的功能可能就比较复杂。但是对于速度来说Python的运行速度相较于C语言就比较慢,有利的同时也有弊端,毕竟我们的学习成本降低了。

2.简述解释型和编译型编程语言
答:解释型语言是在运行时才翻译,每执行一次,就翻译一次,效率较低。编译型就是直接翻译成机型可以执行的,只翻译一次,所以效率相对较高。

3.Python 的解释器种类以及相关特点?
答:

  • CPython,C语言开发,使用最广泛的解释器。
  • IPython,基于cpython之上的一个交互式计时器,交互方式增强功能和cpython一样
  • PyPy,目标是执行效率,采用JIT技术。对Python代码进行动态编译,提高执行效率
  • JPython,运行在Java上的解释器,直接把Python代码编译成Java字节码执行
  • IronPython,运行在微软.NET平台上的解释器,把Python编译成.NET的字节码

4.说说你知道的Python3 和 Python2 之间的区别?
答: 这里例举 5 条

  • print 在 Python3 中是函数必须加括号,Python2 中 print 为 class。
  • Python2 中使用 xrange,Python3 使用 range。
  • Python2 中默认的字符串类型默认是 ASCII,Python3 中默认的字符串类型是 Unicode。
  • Python2 中/的结果是整型,Python3 中是浮点类型。
  • Python2 中声明元类:metaclass = MetaClass,Python3 中声明元类:class newclass(metaclass=MetaClass):pass。

5.Python3 和 Python2 中 int 和 long 区别?
答:Python2 有 int 和 long 类型。int 类型最大值不能超过 sys.maxint,而且这个最大值是平台相关的。可以通过在数字的末尾附上一个L来定义长整型,显然,它比 int 类型表示的数字范围更大。在 Python3 里,只有一种整数类型 int,大多数情况下,和 Python2中的长整型类似。

6.xrange 和 range 的区别?
答:xrange 是在 Python2 中的用法,Python3 中只有 range xrange 用法与 range 完全相同,所不同的是生成的不是一个 list 对象,而是一个生成器。

2. 编码规范

7.什么是 PEP8?
答:PEP是Python Enhancement Proposal的缩写,通常翻译为“Python增强提案”。PEP8是Python代码格式二编订的风格指南

8.了解 Python 之禅么?
答:通过 import this语句可以获取其具体的内容。它告诉大家如何编写高效整洁的代码。

9.了解 DocString 么?
答:DocString 文档字符串是一个重要的工具,用于解释文档程序,帮助你的程序文档更加简单易懂。主要是解释代码作用的。

10.了解类型注解么?
答:PEP 484 引入了类型提示,这使得可以对 Python 代码进行静态类型检查。 在使用 Ide 的时候可以获取到参数的类型,更方便传入参数。使用格式如下:

def foo(num: int) -> None:
    print(f"接收到的数字是:{num}")

介绍下这个简单例子,我们可以在函数的参数部分使用参数名+冒号+类型,来指定参数可以接受的类型,这里的话就是 num 参数为 int 类型,然后后面->接的是返回值的类型。这里返回值为 None,然后通过 fstring 格式化字符串输出传入的数字。

11.例举你知道 Python 对象的命名规范,例如方法或者类等
答:类:总是使用首字母大写单词串,如 MyClass。内部类可以使用额外的前导下划线。
变量:小写,由下划线连接各个单词。方法名类似
常量:常量名所有字母大写 等

12.Python 中的注释有几种?
答:总体来说分为两种,单行注释和多行注释。

单行注释在行首是 #。
多行注释可以使用三个单引号或三个双引号,包括要注释的内容。

13.如何优雅的给一个函数加注释?
答:可以使用 docstring 配合类型注解

14.如何给变量加注释?
答:可以通过变量名:类型的方式如下

a: str = "this is string type"

15.Python 代码缩进中是否支持 Tab 键和空格混用。
答:不允许 tab 键和空格键混用,这种现象在使用 sublime 的时候尤为明显。
一般推荐使用 4 个空格替代 tab 键。

16.是否可以在一句 import 中导入多个库?
答:可以是可以,但是不推荐。因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。

17.在给 Py 文件命名的时候需要注意什么?
答:给文件命名的时候不要和标准库的一些模块重复,比如 abc。 另外要名字要有意义,不建议数字开头或者中文命名。

18.例举几个规范 Python 代码风格的工具
答:pylint 和 flake8

数据类型-字符串
19. 列举 Python 中的基本数据类型?
答: Python3 中有六个标准的数据类型:字符串(String)、数字(Digit)、列表(List)、元组(Tuple)、集合(Sets)、字典(Dictionary)。

20.如何区别可变数据类型和不可变数据类型
答: 从对象内存地址方向来说

可变数据类型:在内存地址不变的情况下,值可改变(列表和字典是可变类型,但是字典中的 key 值必须是不可变类型)
不可变数据类型:内存改变,值也跟着改变。(数字,字符串,布尔类型,都是不可变类型)可以通过 id() 方法进行内存地址的检测。

21.将"hello world"转换为首字母大写"Hello World"

"hello world".title()

22.如何检测字符串中只含有数字?
答:可以通过 isdigit 方法,例子如下

s1 = "12223".isdigit()
print(s1)

s2 = "12223a".isdigit()
print(s2)

23.将字符串"ilovechina"进行反转
答:

s1 = "ilovechina"[::-1]
print(s1)

待完善…

发布了112 篇原创文章 · 获赞 289 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/WeiLanooo/article/details/102452091