免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3586 | 回复: 0

52道常见Python面试题,你都能答对吗?1-26 [复制链接]

论坛徽章:
0
发表于 2019-02-27 22:40 |显示全部楼层
[color=rgba(0, 0, 0, 0.75)]

52道常见Python面试题,你都能答对吗?


[color=rgba(0, 0, 0, 0.75)]

最近有很多人找小编询问python求职面试的一些情况,python岗位众多,面试官的个性也千人千面,其实是没有固定的套路的。还是一句老话,要成功拿下一个重要的面试,靠的是“台上三分钟,台下几年功”。


[color=rgba(0, 0, 0, 0.75)]

小编虽然没有套路,但是有干货呀,最近整理近一年出现概率比较高的面试题,供大家参考。


[color=rgba(0, 0, 0, 0.75)]

最近开始整理python的资料,博主建立了一个群78486745,希望给大家提供一个交流的平台 。


[color=rgba(0, 0, 0, 0.75)]Q.1. Python 的特点和优点是什么?
[color=rgba(0, 0, 0, 0.75)]

Python 可以作为编程的入门语言,因为他具备以下特质:
1.解释性
2. 动态特性
3. 面向对象
4. 语法简洁
5. 开源
6. 丰富的社区资源


[color=rgba(0, 0, 0, 0.75)]Q.2. 深拷贝和浅拷贝的区别是什么?
[color=rgba(0, 0, 0, 0.75)]

深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy函数进行深拷贝,使用方法如下:


[color=rgba(0, 0, 0, 0.75)]

深拷贝-Python 面试问题及答案
浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy函数进行浅拷贝,使用方法如下:

浅拷贝—Python 面试问题及答案


[color=rgba(0, 0, 0, 0.75)]Q.3. 列表和元祖有什么不同?
[color=rgba(0, 0, 0, 0.75)]

主要区别在于列表是可变的,元祖是不可变的。看下面的例子:

会出现以下错误提示:
TypeError: ‘tuple’ object does not support item assignment


[color=rgba(0, 0, 0, 0.75)]Q.4. 解释 Python 中的三元表达式
[color=rgba(0, 0, 0, 0.75)]

与 C++不同, 在 Python 中我们不需要使用 ? 符号,而是使用如下语法:
[on true] if [expression]else [on false]


[color=rgba(0, 0, 0, 0.75)]

如果 [expression] 为真, 则 [on true] 部分被执行。如果表示为假则 [on false] 部分被执行


[color=rgba(0, 0, 0, 0.75)]

下面是例子:

输出:2

输出:Hi


[color=rgba(0, 0, 0, 0.75)]Q.5. Python 中如何实现多线程?
[color=rgba(0, 0, 0, 0.75)]

线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。


[color=rgba(0, 0, 0, 0.75)]

GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。


[color=rgba(0, 0, 0, 0.75)]Q.6. 解释继承
[color=rgba(0, 0, 0, 0.75)]

一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法)。


[color=rgba(0, 0, 0, 0.75)]

继承使我们可以重用代码,并且还可以更方便地创建和维护代码。Python 支持以下类型的继承:


[color=rgba(0, 0, 0, 0.75)]
  • 单继承- 一个子类类继承自单个基类
  • 多重继承- 一个子类继承自多个基类
  • 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类
  • 分层继承- 多个子类继承自同一个基类
  • 混合继承- 两种或两种以上继承类型的组合

[color=rgba(0, 0, 0, 0.75)]Q.7. 什么是 Flask?
[color=rgba(0, 0, 0, 0.75)]

Flask 是一个使用 Python 编写的轻量级 Web 应用框架,使用 BSD 授权。其 WSGI 工具箱采用 Werkzeug,模板引擎则使用 Jinja2。除了 Werkzeug 和 Jinja2 以外几乎不依赖任何外部库。因为 Flask 被称为轻量级框架。


[color=rgba(0, 0, 0, 0.75)]

Flask 的会话会话使用签名 cookie 来允许用户查看和修改会话内容。它会记录从一个请求到另一个请求的信息。但如果要修改会话,则必须有密钥 Flask.secret_key。


[color=rgba(0, 0, 0, 0.75)]Q.8. 如何在 Python 中管理内存?
[color=rgba(0, 0, 0, 0.75)]

Python 用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它。由解释器来管理它。不过使用一些核心 API,我们可以访问一些 Python 内存管理工具控制内存分配。


[color=rgba(0, 0, 0, 0.75)]Q.9. 解释 Python 中的 help 函数和 dir 函数。
[color=rgba(0, 0, 0, 0.75)]

help 函数返回帮助文档和参数说明:

运行结果如下:
Help on function copy in module copy
copy(x)
Shallow copy operation on arbitrary Python objects.
See the module』s doc string for more info.
dir 函数返回对象中的所有成员 (任何类型)


[color=rgba(0, 0, 0, 0.75)]Q.10. 当退出 Python 时是否释放所有内存分配?
[color=rgba(0, 0, 0, 0.75)]

答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放.
另外不会释放 C 库保留的部分内容。


[color=rgba(0, 0, 0, 0.75)]Q.11. 什么是猴子补丁?
[color=rgba(0, 0, 0, 0.75)]

在运行时动态修改类和模块

Hi, monkey


[color=rgba(0, 0, 0, 0.75)]Q.12. 什么是 Python 字典?
[color=rgba(0, 0, 0, 0.75)]

字典是我在 C++和 Java 中没有见过的数据结构,它拥有键-值对

3
字典是可变的,我们也可以用推导式的方式创建它.


[color=rgba(0, 0, 0, 0.75)]Q.13. 能否解释一下 *args 和 **kwargs?
[color=rgba(0, 0, 0, 0.75)]

如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。

3
2
1
4
7
当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。

a.1
b.2
c.7
使用 args 和 kwargs 作为参数名只是举例,可以任意替换。
对于 Python 的基础题任何疑问,请在评论区提问。


[color=rgba(0, 0, 0, 0.75)]Q.14. 编程实现计算文件中的大写字母数
[color=rgba(0, 0, 0, 0.75)]


26


[color=rgba(0, 0, 0, 0.75)]Q.15. 什么是负索引?
[color=rgba(0, 0, 0, 0.75)]

我们先创建如下列表:

与正索引不同,负索引是从右边开始检索。

6
同样可以用于列表的切片:

[3, 4, 5, 6, 7]


[color=rgba(0, 0, 0, 0.75)]Q.16. 如何随机打乱列表中元素,要求不引用额外的内存空间?
[color=rgba(0, 0, 0, 0.75)]

我们用 random 包中的 shuffle 函数来实现。

[3, 4, 8, 0, 5, 7, 6, 2, 1]


[color=rgba(0, 0, 0, 0.75)]Q.17. 解释 Python 中的 join 和 split 函数
[color=rgba(0, 0, 0, 0.75)]

join 函数可以将指定的字符添加到字符串中。

‘1,2,3,4,5’


[color=rgba(0, 0, 0, 0.75)]

split 函数可以用指定的字符分割字符串

[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]


[color=rgba(0, 0, 0, 0.75)]Q.18. Python 区分大小写吗?
[color=rgba(0, 0, 0, 0.75)]

验证 Python 是否区分大小写的方法是测试 myname 和 Myname 在程序中是不是算同一个标识符。观察以下代码的返回结果:

Myname


[color=rgba(0, 0, 0, 0.75)]

NameError: name ‘Myname’ is not defined


[color=rgba(0, 0, 0, 0.75)]

如你所见,这里出现了 NameError,所以 Python 是区分大小的语言。


[color=rgba(0, 0, 0, 0.75)]Q.19. Python 中标识符的命名规则?
[color=rgba(0, 0, 0, 0.75)]

Python 中的标识符可以是任意长度,但必须遵循以下命名规则:


[color=rgba(0, 0, 0, 0.75)]
  • 只能以下划线或者 A-Z/a-z 中的字母开头。
  • 其余部分只能使用 A-Z/a-z/0-9。
  • Python 标识符区分大小写。
  • 关键字不能作为标识符。Python 有以下这些关键字:


[color=rgba(0, 0, 0, 0.75)]Q.20. 如何删除字符串中的前置空格
[color=rgba(0, 0, 0, 0.75)]

前置空格是第一个非空格字符前的所有空格,使用 lstrip 函数来删除.

‘Ayushi ‘
如图这个字符串既包含前置空格也包含后置空格. 调用 lstrip 函数去除了前置空格。如果想去除后置空格,使用 rstrip 函数。

‘ Ayushi’


[color=rgba(0, 0, 0, 0.75)]

Q.21. 如何将字符串转换为小写?
使用 lower 函数

‘ayushi’
转换为大写用 upper 函数


[color=rgba(0, 0, 0, 0.75)]

‘AYUSHI’


[color=rgba(0, 0, 0, 0.75)]

要检查字符串是否为全大写或全小写,使用 isupper 和 islower 函数

像 @ 和$这样的字符即满足大写也满足小写。


[color=rgba(0, 0, 0, 0.75)]

istitle 可以检查字符串是否是标题格式。

True


[color=rgba(0, 0, 0, 0.75)]Q.22. Python 中的 pass 语句有什么作用?
[color=rgba(0, 0, 0, 0.75)]

我们在写代码时,有时可能只写了函数声明而没想好函数怎么写,但为了保证语法检查的正确必须输入一些东西。在这种情况下,我们使用 pass 语句。

类似的 break 语句可以跳出循环。

0
1
2
continue 语句可以跳到下一轮循环。

0
1
2
4
5
6


[color=rgba(0, 0, 0, 0.75)]Q.23. 请解释 Python 中的闭包?
[color=rgba(0, 0, 0, 0.75)]

如果在一个内部函数里。对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。

7


[color=rgba(0, 0, 0, 0.75)]Q.24. 解释 Python 中的//,%和**运算符
[color=rgba(0, 0, 0, 0.75)]

//运算符执行地板除法,返回结果的整数部分 (向下取整)。

3
用/符号除法结果为 3.5。
符号表示取幂. ab 返回 a 的 b 次方

% 是取模符号。返回除法后的余数。

6

0.5
对于 Python 进阶面试问题和答案有任何疑问请在评论区提问。


[color=rgba(0, 0, 0, 0.75)]Q.25. Python 中有多少种运算符,解释算术运算符。
[color=rgba(0, 0, 0, 0.75)]

这类面试问题可以判断你的 Python 功底,可以举一些实例来回答这类问题。


[color=rgba(0, 0, 0, 0.75)]

在 Python 中我们有 7 中运算符:算术运算符、关系 (比较) 运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。


[color=rgba(0, 0, 0, 0.75)]
  • 加号 (+) 将两个对象的值相加。

    15
  • 减号 (-) 将第一个对象的值减去第二个对象的值。

    -1
  • 乘号 (*) 将两个对象的值相乘。

    56
  • 除号 (/) 将第一个对象的值除以第二个对象的值。


    1.0
    关于地板除法、取模和取幂,请参考上一个问题。

[color=rgba(0, 0, 0, 0.75)]Q.26. 解释 Python 中的关系运算符。
[color=rgba(0, 0, 0, 0.75)]

关系运算符用来比较两个对象。
1.判断小于 (<):如果符号左边的值比右边小则返回 True。

False


[color=rgba(0, 0, 0, 0.75)]

2.判断大于 (>):如果符号左边的值比右边大则返回 True。

True


[color=rgba(0, 0, 0, 0.75)]

出现上面的错误结果是因为 Python 的浮点运算存在一些 Bug。


[color=rgba(0, 0, 0, 0.75)]

3.判断小于等于 (<=):如果符号左边的值小于或等于右边则返回 True。

True


[color=rgba(0, 0, 0, 0.75)]

4.大判断于等于 (>=):如果符号左边的值大于或等于右边则返回 True。

True


[color=rgba(0, 0, 0, 0.75)]

5.判断等于 (==) 如果符号两边的值相等则返回 True。

True


[color=rgba(0, 0, 0, 0.75)]

6.判断不等于 (!=) 如果符号两边的值不等则返回 True。

True

True


[color=rgba(0, 0, 0, 0.75)]

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP