当前位置: 首页 > 编程日记 > 正文

21年最新Python面试题及答案汇总详解(上)

错过三月找工作的机会,还要错过四月的好时期吗?Python面试你做准备了吗?下面小编整理了一套2021年最新Python常见面试题目,及Python面试题目答案汇总。希望能够帮助到大家。

面试

21年最新Python面试题及答案汇总详解(上)

1、列表(list)和元组(tuple)有什么区别?

在我每一次应聘Python数据科学家的面试中,这个问题都会被问到。所以对这个问题的答案,我可以说是了如指掌。

列表是可变的。创建后可以对其进行修改。

元组是不可变的。元组一旦创建,就不能对其进行更改。

列表表示的是顺序。它们是有序序列,通常是同一类型的对象。比如说按创建日期排序的所有用户名,如["Seth","Ema","Eli"]。

元组表示的是结构。可以用来存储不同数据类型的元素。比如内存中的数据库记录,如(2,"Ema","2020–04–16")(#id,名称,创建日期)。

2、如何进行字符串插值?

在不导入Template类的情况下,有3种方法进行字符串插值。

name=Chris#

1、fstringsprint(fHello{name})#

2、%operatorprint(Hey%s%s%(name,name))#

3、formatprint("Mynameis{}"、format((name)))

3、“is”和“==”有什么区别?

在我的Python职业生涯的早期,我认为它们是相同的,因而制造了一些bug。所以请大家听好了,“is”用来检查对象的标识(id),而“==”用来检查两个对象是否相等。我们将通过一个例子说明。创建一些列表并将其分配给不同的名字。请注意,下面的b指向与a相同的对象。

a=[1,2,3]b=ac=[1,2,3]

下面来检查是否相等,你会注意到结果显示它们都是相等的。

print(a==b)print(a==c)#=>;True#=>;True

但是它们具有相同的标识(id)吗?答案是不。

print(aisb)print(aisc)#=>;True#=>;False

我们可以通过打印他们的对象标识(id)来验证这一点。

print(id(a))print(id(b))print(id(c))#=>;

4369567560#=>;

4369567560#=>;

4369567624

你可以看到:c和a和b具有不同的标识(id)。

4、什么是装饰器(decorator)?

这是每次面试我都会被问到的另一个问题。它本身就值得写一篇文章。如果你能自己用它编写一个例子,那么说明你已经做好了准备。

装饰器允许通过将现有函数传递给装饰器,从而向现有函数添加一些额外的功能,该装饰器将执行现有函数的功能和添加的额外功能。

我们将编写一个装饰器,该装饰器会在调用另一个函数时记录日志。

编写装饰器函数logging。它接受一个函数func作为参数。它还定义了一个名为log_function_called的函数,它先执行打印出一些“函数func被调用”的信息(print(f{func}called、)),然后调用函数func()。最后返回定义的函数。

deflogging(func):deflog_function_called():print(f{

func

}

called、

)

func()returnlog_function_called

让我们编写其他两个函数,我们最终会将装饰器添加到其中(但还没有)。

defmy_name():print(chris)deffriends_name():print(naruto)my_name()friends_name()#=>;chris#=>;naruto

现在将装饰器添加到上面编写的两个函数之中。

@loggingdefmy_name():print(chris)@loggingdeffriends_name():print(naruto)my_name()friends_name()#=>;<;functionmy_nameat0x10fca5a60>;called、#=>;chris#=>;<;functionfriends_nameat0x10fca5f28>;called、#=>;naruto

现在,你了解了如何仅仅通过在其上面添加@logging(装饰器),就能够轻松地将日志添加到我们编写的任何函数中。

5、解释Range函数

Range函数可以用来创建一个整数列表,一般用在for循环中。它有3种使用方法。

Range函数可以接受1到3个参数,参数必须是整数。

请注意:我已经将range的每种用法包装在一个递推式构造列表(listcomprehension)中,以便我们可以看到生成的值。

用法1-range(stop):生成从0到参数“stop”之间的整数。

[iforiinrange(10)]#=>;[0,1,2,3,4,5,6,7,8,9]

用法2-range(start,stop):生成从参数“start”到“stop”之间的整数

[iforiinrange(2,10)]#=>;[2,3,4,5,6,7,8,9]

用法3-range(start,stop,step):以参数“step”为步长,生成从“start”到“stop”之间的整数。

[iforiinrange(2,10,2)]#=>;[2,4,6,8]

6、定义一个名为car的类,它有两个属性:“color”和“speed”。然后创建一个实例并返回“speed”。

classCar:def__init__(self,color,speed):self、color=colorself、speed=speedcar=Car(red,100mph)car、speed#=>;100mph

7、Python中的实例方法、静态方法和类方法有什么区别?

实例方法:接受self参数,并且与类的特定实例相关。

静态方法:使用装饰器@staticmethod,与特定实例无关,并且是自包含的(不能修改类或实例的属性)。

类方法:接受cls参数,并且可以修改类本身。我们将通过一个虚构的CoffeeShop类来说明它们之间的区别。

classCoffeeShop:specialty=espressodef__init__(self,coffee_price):self、coffee_price=coffee_price#instancemethoddefmake_coffee(self):print(fMaking{self、specialty}for${self、coffee_price})#staticmethod@staticmethoddefcheck_weather():print(Itssunny)#classmethod@classmethoddefchange_specialty(cls,specialty):cls、specialty=specialtyprint(fSpecialtychangedto{specialty})

CoffeeShop类有一个属性specialty,默认值设为“espresso”。CoffeeShop类的每个实例初始化时都使用了coffee_price这个属性。同时,它还有3个方法,一个实例方法,一个静态方法和一个类方法。

让我们将coffee_price的值设为5,来初始化CoffeeShop的一个实例。然后调用实例方法make_coffee。

coffee_shop=CoffeeShop(5)coffee_shop、make_coffee()#=>;Makingespressofor$5

现在我们来调用静态方法。静态方法无法修改类或实例状态,因此通常用于工具函数,例如,把2个数字相加。我们这里用它来检查天气。天气晴朗。太好了!

coffee_shop、check_weather()#=>;Itssunny

现在让我们使用类方法修改CoffeeShop的属性specialty,然后调用make_coffee()方法来制作咖啡。

coffee_shop、change_specialty(dripcoffee)#=>;Specialtychangedtodripcoffeecoffee_shop、make_coffee()#=>;Makingdripcoffeefor$5

注意,make_coffee过去是用来做意式浓缩咖啡(espresso)的,但现在用来做滴滤咖啡(dripcoffee)了!

8、“func”和“func()”有什么区别?

这个问题的目的是想看看你是否理解所有函数也是Python中的对象。

deffunc():print(Imafunction)func#=>;function__main__、func>;func()#=>;Imafunction

func是表示函数的对象,它可以被分配给变量或传递给另一个函数。带圆括号的func()调用该函数并返回其输出。

9、解释map函数的工作原理。

Map函数返回一个列表,该列表由对序列中的每个元素应用一个函数时返回的值组成。

defadd_three(x):returnx+3li=[1,2,3][iforiinmap(add_three,li)]#=>;[4,5,6]

上面,我对列表中的每个元素的值加了3。

10、解释reduce函数的工作原理。

这个问题很棘手,在你使用过它几次之前,你得努力尝试自己能够理解它。reduce接受一个函数和一个序列,然后对序列进行迭代。在每次迭代中,当前元素和前一个元素的输出都传递给函数。最后,返回一个值。

fromfunctoolsimportreducedefadd_three(x,y):returnx+yli=[1,2,3,5]reduce(add_three,li)#=>;11

返回11,它是1+2+3+5的总和。

11、解释filter函数的工作原理

Filter函数顾名思义,是用来按顺序过滤元素。

每个元素都被传递给一个函数,如果函数返回True,则在输出序列中返回该元素;如果函数返回False,则将其丢弃。

defadd_three(x):ifx%2==0:returnTrueelse:returnFalseli=[1,2,3,4,5,6,7,8][iforiinfilter(add_three,li)]#=>;[2,4,6,8]

注意上面所有不能被2整除的元素如何被删除的。

12、Python是按引用调用还是按值调用?

如果你在谷歌上搜索这个问题并阅读前几页,你就要准备好进入语义的迷宫了。你最好只是了解它的工作原理。

不可变对象(如字符串、数字和元组等)是按值调用的。请注意下面的例子,当在函数内部修改时,name的值在函数外部不会发生变化。name的值已分配给内存中该函数作用域的新块。

name=chrdefadd_chars(s):s+=isprint(s)add_chars(name)print(name)#=>;chris#=>;chr

可变对象(如列表等)是通过引用调用的。注意下面的例子中,函数外部定义的列表在函数内部的修改是如何影响到函数外部的。函数中的参数指向内存中存储li值的原始块。

li=[1,2]defadd_element(seq):seq、append(3)print(seq)add_element(li)print(li)#=>;[1,2,3]#=>;[1,2,3]

13、如何使用reverse函数反转一个列表?

下面的代码对一个列表调用reverse()函数,对其进行修改。该方法没有返回值,但是会对列表的元素进行反向排序。

li=[a,b,c]print(li)li、reverse()print(li)#=>;[a,b,c]#=>;[c,b,a]

14、字符串乘法是如何工作的?

让我们看看将字符串"cat"乘以3的结果。

cat*3#=>;catcatcat

该字符串将自身连接3次。

15、列表乘法是如何工作的?

我们来看看将列表[1,2,3]乘以2的结果。

[1,2,3]*2#=>;[1,2,3,1,2,3]

输出的列表包含了重复两次的列表[1,2,3]的内容。

相关文章:

sina微博api源码阅读之函数

1. array_map将类的静态成员函数作为回调函数用在指定的单元上&#xff0c;可以递归调用 public static function urlencode_rfc3986($input) { if (is_array($input)) { return array_map(array(OAuthUtil, urlencode_rfc3986), $input); } else …

LeetCode实战:将有序数组转换为二叉搜索树

题目英文 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by mo…

Spring、Spring Boot和TestNG测试指南 - @ActiveProfiles

Github地址 ActiveProfiles可以用来在测试的时候启用某些Profile的Bean。本章节的测试代码使用了下面的这个配置&#xff1a; Configuration public class Config {BeanProfile("dev")public Foo fooDev() {return new Foo("dev");}BeanProfile("prod…

python语言中如何使用注释

每一种计算机语言都有自己的注释方式&#xff0c;我们知道注释的作用是解释这些代码&#xff0c;方便程序员以后的检查和修改。而且注释的一部分在运行程序的过程中不起作用&#xff0c;也不会显示出来。下面我们将为大家介绍&#xff0c;在python语言中如何使用注释? 在pytho…

RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程(转)

RHEL5(CentOS)下nginxphpmysqltomcatmemchached配置全过程 一、准备工作&#xff1a; SSH,telnet终端中文显示乱码解决办法 vi /etc/sysconfig/i18n将内容改为 LANG"zh_CN.GB18030" LANGUAGE"zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED"zh_CN.GB18…

LeetCode实战:搜索二维矩阵

题目英文 Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right.The first integer of each row is greater than the last integer of the previou…

windows指令

为什么80%的码农都做不了架构师&#xff1f;>>> C:\Windows\System32\drivers\etc nbtstat -a 1.7.2.2s 检查该IP的主机名称 WExNmU5Z windows启动配置界面 在“运行”中输入“msconfig mstsc -admin 远程 虚拟机的判断&#xff1a;如果有vmtoolsd.exe进程就是虚拟…

Java培训好不好?零基础可以学吗?

5g时代的来临&#xff0c;越来越多的人开启智能时代&#xff0c;互联网行业的发展速度越来越快&#xff0c;高薪行业一直受到很多人的关注&#xff0c;尤其是java这一块&#xff0c;很多人都想学习&#xff0c;那么参加Java培训好不好?零基础可以学吗? Java培训好不好?零基础…

顺水行舟,逆水行舟

水&#xff0c;或温柔&#xff0c;或猛烈 万物皆可比喻为水 顺水行舟&#xff0c;逆水行舟&#xff0c;皆为操船者智慧之体现 翻船者。。。把船搞翻了几回还执意而为&#xff0c;SB也。。。转载于:https://www.cnblogs.com/Zetazzz/archive/2011/01/30/1948082.html

LeetCode实战:二叉树的最大深度

题目英文 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. Note: A leaf is a node with no children. Example: Given binary tree [3,9,20,null,n…

jfinal整合shiro回顾

2019独角兽企业重金招聘Python工程师标准>>> 目前jfinal使用shiro进行身份验证和授权的后台实现已完成&#xff0c;现在我再来总结下学习过程及代码实现过程。最近半年多项目开发都用.net&#xff0c;但又不甘心用了一年多的java&#xff0c;jfinal就这样被废弃&…

零基础学习Java培训有什么攻略

零基础学习Java培训有什么攻略?java是主流编程语言之一&#xff0c;我们在学习Java的时候需要制定Java学习路线图&#xff0c;Java涉及到的知识点非常的多&#xff0c;我们该从何学起呢?怎么系统的学习呢?来看看下面的详细介绍。 一、Java学习阶段 将Java学习过程分为3个阶段…

php去掉字符串的最后一个字符 substr()的用法

今天项目中用到&#xff0c;去掉字符串中的最后一个字符原字符串1,2,3,4,5,6,去掉最后一个字符","&#xff0c;最终结果为1,2,3,4,5,6代码如下&#xff1a;$str "1,2,3,4,5,6,"; $newstr substr($str,0,strlen($str)-1);echo $newstr;系统自带的函数也可…

如何加入LSGO软件技术团队?

背景 马上就要放暑假了&#xff01; LSGO软件技术团队 也要开始招新了&#xff01; 本次招入的同学&#xff0c;我会亲自来带&#xff0c;和你一起学习&#xff0c;共同成长。 我们的主要研究方向是机器学习&#xff0c;再详细一些就是视觉、自然语言处理和量化金融。 以下是…

《MySQL技术内幕:InnoDB存储引擎》读书笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.InnoDB中每一页的大小默认为16kb&#xff0c;但是其也支持压缩页的功能&#xff0c;即将原本16kb的页压缩为1kb、2kb、4kb和8kb。当需要从缓存池中申请4kb大小的页时&#xff0c;MySQL的申请步骤如下&#xff1a; 检查…

UI设计要做什么,UI设计培训都要学什么

UI设计要做什么&#xff0c;UI设计培训都要学什么?相信有很多人都对这个问题比较感兴趣&#xff0c;近几年&#xff0c;UI设计被越来越多的人关注&#xff0c;行业薪资水平也是一路飙升&#xff0c;很多人都在准备学习UI设计&#xff0c;那么具体的内容&#xff0c;下面我们来…

[置顶] 如何搭建一个 Data Guard 环境

在Blog里零零散散的讲了一些DB 维护的东西&#xff0c;比较杂&#xff0c;也比较散。 这里就Oracle Data Guard 这块做一个小结。 主要是流程上的东西。 做个参考&#xff0c;以后装DG&#xff0c;照这个流程走就ok了。 一. 服务器设置1.1 硬盘的规划根据自己的业务量来规划硬…

技术图文:如何进行代码的重构?以封装 BigOne API 为例

背景 自从把“量化交易”作为自己精进的技术方向之后&#xff0c;我做了一些准备工作。 比如&#xff1a; 1. 爬取交易所的公告&#xff0c;根据公告的信息来研判数字货币的短期走势。 这里面有一个“流动性溢价”的概念&#xff0c;等后面我会结合一些例子跟大家聊聊这块的…

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.7.5 使用StAX写出XML文档

3.7.5 使用StAX写出XML文档 在前一节中&#xff0c;你看到了如何通过写出DOM树的方法来产生XML文件。如果这个DOM树没有其他任何用途&#xff0c;那么这种方式就不是很高效。StAX API使我们可以直接将XML树写出&#xff0c;这需要从某个OutputStream中构建一个XMLStreamWriter…

大数据就业前景怎么样?需要学会哪些技术?

智能时代的来临&#xff0c;我们日常生活中的很多技术都可以用大数据来实现&#xff0c;大数据开发行业做为IT行业中的一类更是前景无限。所以很多人想转行做大数据开发。那么现在大数据就业前景怎么样?需要学会哪些技术? 大数据就业前景怎么样?需要学会哪些技术?大数据行业…

技术图文:如何利用 C# 实现 误差反向传播 学习规则?

背景 我们在 如何利用 C# 对神经网络模型进行抽象&#xff1f; 中完成了神经网络的抽象结构&#xff1a; 三个接口&#xff1a;激活函数、有监督学习、无监督学习 三个抽象类&#xff1a;神经元、网络层、网络拓扑 我们在 如何利用 C# 实现神经网络的感知器模型&#xff1f; …

SQL注入漏洞全接触--入门篇

随着B/S模式应用开发的发展&#xff0c;使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高&#xff0c;程序员的水平及经验也参差不齐&#xff0c;相当大一部分程序员在编写代码的时候&#xff0c;没有对用户输入数据的合法性进行判断&#xff0c;使…

WannaCry 不相信眼泪 它需要你的安全防御与响应能力

在过去的几天里&#xff0c;WannaCry恶意软件及其变体影响了全球数百家组织与机构。 尽管每个组织都会因各种各样的原因没能及时对存在漏洞的系统做更新保护&#xff0c;或者担心更新实时系统的风险&#xff0c;两个月对于任何组织来用于采取措施保证系统安全也并不算太短的时间…

小白阶段如何学习Web前端知识

学会了UI设计技术&#xff0c;接下来的计划就是要找工作了&#xff0c;UI设计在面试环节的自我介绍很重要&#xff0c;有时候一分钟的自我介绍已经足够让HR判断出你适不适合他们公司&#xff0c;那做为一名UI设计师面试时如何自我介绍呢?来看看下面的详细介绍。 UI设计师面试时…

康泰瑞影推高性能3D/4D超声可视化方案

本文讲的是康泰瑞影推高性能3D/4D超声可视化方案,康泰瑞影(ContextVision)推出的业界首款超声实时3D立体图像增强产品已经配备全新的影像可视化功能。所推出的产品REALiCE?将提供逼真的3D超声影像&#xff0c;提高了诊断质量。 REALiCE软件将GOPiCE?自适应3D/4D立体图像增强产…

New Video Game Controlled By Kissing

unassimilatible writes "Artist Hye Yeon Nam has put her video game where her mouth is — literally — with the creation of a new bowling game thats controlled only by passionate (and awkward) French kissing. The Kiss Controller, as its called, has two…

资料分享:数学建模资料分享 -- 图论部分

背景 今天上午&#xff0c;在教六第一阶梯教室为数学建模俱乐部的同学们分享了有关图论的基本知识和应用。 课后&#xff0c;为同学们留了一个算法实现的小练习&#xff0c;大家可以先做一下。在本图文的末尾处&#xff0c;我把上课的资料以及代码分享出来&#xff0c;供大家…

免费学习编程的10个好工具

互联网时代的快速发展&#xff0c;很多人都在学习编程技术&#xff0c;小编今天为大家推荐的就是学习编程技术会用到的一些编程工具&#xff0c;免费学习编程的10个好工具!希望能够帮助到正在学习的小伙伴们。 免费学习编程的10个好工具&#xff1a; 1. Code/Racer Code/Racer是…

【ZT】我家宝宝不会哭----分享在美国养孩子的妈妈经(必看)

我在美国生了两个孩子&#xff0c;生育前后都有培训班&#xff0c;家庭医生每次洗脑让我受益匪浅&#xff0c;我的两个宝宝在婴儿时期乖巧得好像家里没有小婴儿&#xff0c;我甚至疑心她们会不会哭&#xff1f;如今外婆常拿这句傻话笑我。回国后看到朋友或邻居们被小祖宗折磨得…

资料分享:数学建模资料分享 -- 神经网络部分

背景 周日的时候&#xff0c;为数学建模俱乐部的同学们进行了一场有关人工神经网络方面的分享。虽然在这个方面有一些积累&#xff0c;但过于零散&#xff0c;所以拿了一堆文件拼凑成整体的内容。 幸亏自己有分享的习惯&#xff0c;学会一些知识就写下来&#xff0c;这次就是…