python 面试题 博客园_常见的python面试问题1
雷锋网按:本文为 AI 研习社编译的技术博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team。
翻译 | 于志鹏 整理 | 凡江
1. Python面试问题及答案
作为一个 Python 新手,你必须熟悉基础知识。在本文中我们将讨论一些 Python 面试的基础问题和高级问题以及答案,以帮助你完成面试。包括 Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。让我们来深入研究这些问题
Python 面试问题
Q.1. Python的特点和优点是什么?
Python 可以作为编程的入门语言,因为他具备以下特质:
1. 解释性
2. 动态特性
3. 面向对象
4. 语法简洁
5. 开源
6. 丰富的社区资源
实际上 Python 的优点远不止这些,更详细的介绍可以阅读 Introduction to Python( https://data-flair.training/blogs/python-tutorial/)
Q.2.深拷贝和浅拷贝的区别是什么?
深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy()函数进行深拷贝,使用方法如下:
深拷贝-Python 面试问题及答案
浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy()函数进行浅拷贝,使用方法如下:
浅拷贝—Python 面试问题及答案
Q.3.列表和元祖有什么不同?
主要区别在于列表是可变的,元祖是不可变的。看下面的例子:
会出现以下错误提示:
TypeError: ‘tuple’ object does not support item assignment
关于列表和元祖的更多内容参考 Tuples vs Lists( https://data-flair.training/blogs/python-tuples-vs-lists/)
2. Python面试基础题
Q.4 到 Q.20 是新手经常会被问到的一些 Python 基础题,有经验的人也可以参考这些问题来复习这些概念。
Q.4.解释Python中的三元表达式
与 C++不同, 在 Python 中我们不需要使用 ? 符号,而是使用如下语法:
[on true] if [expression]else [on false]
如果 [expression] 为真, 则 [on true] 部分被执行。如果表示为假则 [on false] 部分被执行
下面是例子:
2
Hi
Q.5. Python中如何实现多线程?
线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。
GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。
Q.6.解释继承
一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法)。
继承使我们可以重用代码,并且还可以更方便地创建和维护代码。Python 支持以下类型的继承:
1. 单继承- 一个子类类继承自单个基类
2. 多重继承- 一个子类继承自多个基类
3. 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类
4. 分层继承- 多个子类继承自同一个基类
5. 混合继承- 两种或两种以上继承类型的组合
关于继承的更多内容参考 Python Inheritance( https://data-flair.training/blogs/python-inheritance/)
Q.7.什么是Flask?
Flask 是一个使用 Python 编写的轻量级 Web 应用框架,使用 BSD 授权。其 WSGI 工具箱采用 Werkzeug,模板引擎则使用 Jinja2。除了 Werkzeug 和 Jinja2 以外几乎不依赖任何外部库。因为 Flask 被称为轻量级框架。
Flask 的会话会话使用签名 cookie 来允许用户查看和修改会话内容。它会记录从一个请求到另一个请求的信息。但如果要修改会话,则必须有密钥 Flask.secret_key。
我们将在后续的课程中进一步讨论 Flask。
Q.8.如何在Python中管理内存?
Python 用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它。由解释器来管理它。不过使用一些核心 API,我们可以访问一些 Python 内存管理工具控制内存分配。
Q.9.解释Python中的help()函数和dir()函数。
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() 函数返回对象中的所有成员 (任何类型)
Q.10.当退出Python时是否释放所有内存分配?
答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放
另外不会释放 C 库保留的部分内容。
Q.11.什么是猴子补丁?
在运行时动态修改类和模块
Hi, monkey
Q.12.什么是Python字典?
字典是我在 C++和 Java 中没有见过的数据结构,它拥有键-值对
3
字典是可变的,我们也可以用推导式的方式创建它.
{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}
要了解更多字典的内容请点击 Python Dictionaries( https://data-flair.training/blogs/python-dictionaries/)
Q.13.能否解释一下*args和**kwargs?
如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。
3
2
1
4
7
当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。
a.1
b.2
c.7
使用 args 和 kwargs 作为参数名只是举例,可以任意替换。
对于 Python 的基础题任何疑问,请在评论区提问。
Q.14.编程实现计算文件中的大写字母数
26
Q.15.什么是负索引?
我们先创建如下列表:
与正索引不同,负索引是从右边开始检索。
6
同样可以用于列表的切片:
[3, 4, 5, 6, 7]
Q.16.如何随机打乱列表中元素,要求不引用额外的内存空间?
我们用 random 包中的 shuffle() 函数来实现。
[3, 4, 8, 0, 5, 7, 6, 2, 1]
Q.17.解释Python中的join()和split()函数
join() 函数可以将指定的字符添加到字符串中。
‘1,2,3,4,5’
split() 函数可以用指定的字符分割字符串
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
Q.18. Python区分大小写吗?
验证 Python 是否区分大小写的方法是测试 myname 和 Myname 在程序中是不是算同一个标识符。观察以下代码的返回结果:
Myname
NameError: name ‘Myname’ is not defined
如你所见,这里出现了 NameError,所以 Python 是区分大小的语言。
Q.19. Python中标识符的命名规则?
Python 中的标识符可以是任意长度,但必须遵循以下命名规则:
1. 只能以下划线或者 A-Z/a-z 中的字母开头。
2. 其余部分只能使用 A-Z/a-z/0-9。
3. Python 标识符区分大小写。
4. 关键字不能作为标识符。Python 有以下这些关键字:
Q.20.如何删除字符串中的前置空格
前置空格是第一个非空格字符前的所有空格,使用 lstrip() 函数来删除.
‘Ayushi ‘
如图这个字符串既包含前置空格也包含后置空格. 调用 lstrip() 函数去除了前置空格。如果想去除后置空格,使用 rstrip() 函数。
‘ Ayushi’
以上是面向 Python 新手的基础题部分。
3. Python面试进阶题
Q. 21 至 Q. 35 是针对有经验者的一些 Python 面试问题及其答案和示例。
Q.21.如何将字符串转换为小写?
使用 lower() 函数
‘ayushi’
转换为大写用 upper() 函数
‘AYUSHI’
要检查字符串是否为全大写或全小写,使用 isupper() 和 islower() 函数
像 @ 和$这样的字符即满足大写也满足小写。
istitle() 可以检查字符串是否是标题格式。
True
Q.22. Python中的pass语句有什么作用?
我们在写代码时,有时可能只写了函数声明而没想好函数怎么写,但为了保证语法检查的正确必须输入一些东西。在这种情况下,我们使用 pass 语句。
类似的 break 语句可以跳出循环。
0
1
2
continue 语句可以跳到下一轮循环。
0
1
2
4
5
6
Q.23.请解释Python中的闭包?
如果在一个内部函数里。对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。
7
闭包的详细解释请点击 Closures in Python。(https://data-flair.training/blogs/python-closure/)
Q.24.解释Python中的//,%和**运算符
//运算符执行地板除法,返回结果的整数部分 (向下取整)。
3
用/符号除法结果为 3.5。
**符号表示取幂. a**b 返回 a 的 b 次方
1024
% 是取模符号。返回除法后的余数。
6
0.5
对于 Python 进阶面试问题和答案有任何疑问请在评论区提问。
Q.24. Python中有多少种运算符,解释算术运算符。
这类面试问题可以判断你的 Python 功底,可以举一些实例来回答这类问题。
在 Python 中我们有 7 中运算符:算术运算符、关系 (比较) 运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
1. 加号 (+) 将两个对象的值相加。
15
2. 减号 (-) 将第一个对象的值减去第二个对象的值。
-1
3. 乘号 (*) 将两个对象的值相乘。
56
4. 除号 (/) 将第一个对象的值除以第二个对象的值。
0.875
1.0
关于地板除法、取模和取幂,请参考上一个问题。
Q.25.解释Python中的关系运算符。
关系运算符用来比较两个对象。
1. 判断小于 (
False
2. 判断大于 (>):如果符号左边的值比右边大则返回 True。
True
出现上面的错误结果是因为 Python 的浮点运算存在一些 Bug。
3. 判断小于等于 (<=):如果符号左边的值小于或等于右边则返回 True。
True
4. 大判断于等于 (>=):如果符号左边的值大于或等于右边则返回 True。
True
5. 判断等于 (==) 如果符号两边的值相等则返回 True。
True
6. 判断不等于 (!=) 如果符号两边的值不等则返回 True。
True
True
Q.26.解释Python中的赋值和算数运算符?
这是面试中的常见题目。我们将算数运算符和赋值符号放在一起介绍。
Q.27.解释Python中的逻辑运算符
Python 中有三个逻辑运算符:and、or、not
Q.28.解释Python中的成员运算符
使用 in 和 not in 运算符我们可以判断某个值是否在成员中。
Q.29.解释Python中的身份运算符
这是非常常见的 Python 面试题,用下面的示例来回答.
is 和 not is 运算符可以判断两个对象是否相同
Q.30.解释Python中的位运算符
此运算符按二进制位对值进行操作。
1. 与 (&) 返回按位与结果
2
2. 或 (|) 返回按位或结果
3
3. 异或 (^) 返回按位异或结果
1
4. 取反 (~) 返回按位取反结果
-3
5. 左移位 (<
4
1 的二级制 001 左移 2 位变成 100 也即十进制的 4
6. 右移位 (>>)
1
想了解关于位运算符的更多内容请点击 Operators in Python(https://data-flair.training/blogs/python-operators/)
Q.31.如何在Python使用多进制数字?
除十进制以外,在 Python 中还可以使用二进制、八进制、十六进制。
1. 二进制数有 0 和 1 组成,我们使用 0b 或 0B 前缀表示二进制数
10
使用 bin() 函数可以将数字转换为二进制
‘0b1111’
2. 八进制数由数字 0-7 组成,使用前缀 0o 或 0O 表示 8 进制数
‘0o10’
3. 十六进数由数字 0-15 组成,使用前缀 0x 或者 0X 表示 16 进制数
‘0x10’
‘0xf’
Q.32.如何获取字典中的所有键?
使用 keys() 来获取字典中的所有键
Q.33.问什么标识符不建议使用下划线开头?
因为在 Python 中以下划线开头的变量为私有变量,如果你不想让变量私有,就不要使用下划线开头。
Q.34.如何声明多个变量并赋值?
有两种方式:
Q.35.什么是元组的解封装?
首先我们来介绍元组封装:
(3, 4, 5)
将 3,4,5 封装到元组 mytuple 中。
现在我们要将这些值解封装到变量 x,y,z 中
12
以上是 Python 高级面试问题和答案,新手也可以参考这些问题以获得进阶的 Python 知识。
python 面试题 博客园_常见的python面试问题1相关推荐
- python 面试题 博客园_python面试题
1.一行代码实现1-100的和 print(sum(range(1,101))) #range中的参数是1<=i<101 #sum是计算参数的和 2.在函数内部改变全局变量 a = 5 d ...
- java数据结构博客园_常见数据结构的Java实现
单链表的Java实现 首先参考wiki上的单链表说明,单链表每个节点包含数据和指向链表中下一个节点的指针或引用.然后看代码 import java.lang.*; public class Singl ...
- python基础教程博客园_博客园 首页 新随笔 联系 订阅 管理 Python操作M|python基础教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ 1.简介 MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(NoSQL,Not Onl ...
- python博客园_用Python向博客园发布新文章
最近在开发一个博客系统,经常把写的东西放在自己网站的博客上(之前写在Onenote),然后我在博客园也申请了一个博客,就有了同样一篇文章,我需要复制粘贴排版分别提交两次的情况.于是我就想能不能在我的网 ...
- Java集合和泛型练习及面试题——博客园:师妹开讲啦
给定一段JAVA代码如下:要打印出list中存储的内容,以下语句正确的是( B ) ArrayList list = new ArrayList( ) list.add("a") ...
- 用python自动登录博客园
from selenium import webdriver import timea=webdriver.Chrome()a.get("http:\\www.baidu.com" ...
- python flask实现博客系统_基于Flask的博客网站设计与实现
涂远杰 郑剑 摘要:该博客系统是一款分享型博客,注重个人的学习心得.生活等方面的记录.后台基于Python中的Flask框架开发,还涉及爬虫,数据库使用的是轻型的SQLite,同时,前端页面的实现涉及 ...
- 用python搭建个人博客过程_技术分享|利用Python Django一步步搭建个人博客(四)...
您好,欢迎来到本期"利用Python Django一步步搭建个人博客"系列的第四部分.在上一篇教程中,我们学习了如何编写URL并将其映射到页面.在我们继续之前,我们需要做的一件事是 ...
- python博客访问量_史诗级干货-python爬虫之增加CSDN访问量
AI 人工智能 史诗级干货-python爬虫之增加CSDN访问量 史诗级干货-python爬虫之增加CSDN访问量 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法. ...
最新文章
- mac ox 10.9 安装eclipse cpp launch failed binary not found
- [YTU]_2353 ( 长方柱类【C++ 类定义】)
- gif android. 耗资源,Android MP4转GIF
- BugKuCTF 加密 散乱的密文
- WINDOWS SERVER 2003 DHCP服务器全攻略
- 基本算法研究1-冒泡排序算法测试
- vip地址能ping不通_电脑高手必备ping和netstat命令
- Zemax 全新 22.1 版本产品现已发布
- Oracle 数据库认证考试
- VUE项目中打印/转换图片打印
- Ps 钢笔工具的使用
- 关于pycharm提取
- 数字签名标准(DSS)
- 整数平方根的计算(一)
- 怎么把电脑设为服务器共享文档,共享电脑设置 服务器
- centos7 scp远程备份文件夹
- 理解数据异构、数据聚合以及数据闭环
- 分享个妖精的尾巴辅助脚本,力量觉醒挂机快速升级提升战力
- ADSL宽带经常掉线断网故障处理方法
- java古龙群侠传单机_古龙群侠传
热门文章
- Netty私有协议栈 读书笔记
- 路缘石滑模机施工赶作业原理和相应模具管理
- 雅思作文模板.html,2015雅思小作文模板「万能」
- 一款仿 macOS 的开源操作系统
- uniapp小程序跳转第三方直播网络页面的实现方式
- STM32H743+CubeIDE-将变量定义到指定的内存
- 【亲测】后期特效合成软件:Nuke 13 Mac版(支持m1)
- 【Java】数据交换
- centos安装mysql以及mysql-devel
- android向DDR读写数据,透过数据看本质 - 被“吹爆”的LPDDR5内存究竟有多强大?...