本文目录一览:
- 1、python面试必备题目有哪些
- 2、最全的pandas面试基础100题目
- 3、Python 面试高频问题:cls到底是什么
- 4、心得分享!Python面试都要做哪些准备?
- 5、python运维开发工程师面试常见问题有哪些
- 6、python面试题总结1-内存管理机制
python面试必备题目有哪些
给你一份千锋python的面试题吧
1、多线程使用Python是个好主意吗?列出一些方法可以让一些Python代码以并行方式运行。
答:Python不允许真正意义上的多线程。它有一个多线程包,但如果你想使用多线程来加速你的代码,那么使用它通常不是一个好主意。Python有一个名为全局解释器锁(Global
Interpreter
Lock(GIL))的结构。GIL确保每次只能执行一个“线程”。一个线程获取GIL,做一点工作,然后将GIL传递到下一个线程。这种情况发生的很快,因此对于人眼看来,你的线程似乎是并行运行的,但它们实际上只是轮流使用相同的CPU核心。所有这些GIL传递都增加了运行的内存。这意味着如果你想让代码运行得更快,那么使用线程包通常不是一个好主意。
使用Python的线程包也是有原因的。如果你想同时运行一些东西,并且效率不是一个问题,那么它就完全没问题了。或者,如果你正在运行需要等待某些事情的代码(例如某些IO),那么它可能会很有意义。但是线程库不会让你使用额外的CPU核心。
多线程可以外包到操作系统(通过多处理),一些调用Python代码的外部应用程序(例如,Spark或Hadoop),或者Python代码调用的一些代码例如:你可以使用你的Python代码调用一个C函数来完成昂贵的多线程事务。
2、这段代码输出了什么:
def f(x,l=[]):for i in range(x):l.append(i*i)print(l) f(2)f(3,[3,2,1])f(3)
答:[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]
3、如何在Python中管理内存?
Python中的内存管理由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆。Python解释器负责处理这个问题。Python对象的堆空间分配由Python的内存管理器完成。核心API提供了一些程序员编写代码的工具Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存,并使其可用于堆空间。
4、range&xrange有什么区别?
在大多数情况下,xrange和range在功能方面完全相同。它们都提供了一种生成整数列表的方法,唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。
这就表示xrange实际上在运行时并不是生成静态列表。它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。因此如果你有一个非常巨大的列表,那么就要考虑xrange。
5、Python中help()和dir()函数的用法是什么?
Help()和dir()这两个函数都可以从Python解释器直接访问,并用于查看内置函数的合并转储。
help()函数:help()函数用于显示文档字符串,还可以查看与模块,关键字,属性等相关的使用信息。
dir()函数:dir()函数用于显示定义的符号。
6、NumPy中有哪些操作Python列表的函数?
Python的列表是高效的通用容器。它们支持(相当)有效的插入,删除,追加和连接,Python的列表推导使它们易于构造和操作。
它们有一定的局限性:它们不支持像素化加法和乘法等“向量化”操作,并且它们可以包含不同类型的对象这一事实意味着Python必须存储每个元素的类型信息,并且必须执行类型调度代码在对每个元素进行操作时。
NumPy不仅效率更高; 它也更方便。你可以免费获得大量的向量和矩阵运算,这有时可以避免不必要的工作。它们也得到有效实施。
NumPy数组更快,你可以使用NumPy,FFT,卷积,快速搜索,基本统计,线性代数,直方图等内置。
这些内容还是比较重要的,如果有帮到你,麻烦采纳谢谢
最全的pandas面试基础100题目
在进行下面的题目操作时,一定要先导入上面的两个数据分析包 pandas、numpy
1. 如何用Python的列表创建一个series?
输出:
一个series是一个一维的标记数组,可以容纳任何数据类型(整数、字符串、浮点数、Python对象等)。必须记住,与Python列表不同,一个series总是包含相同类型的数据。
2.如何使用列表创建一个DataFrame?
输出:
3.如何使用Series 字典对象生成 DataFrame?
输出:
4.如何在pandas中创建一个空的DataFrame?
要创建一个完全空的pandas dataframe,我们使用以下操作:
输出:
已知有这样的数据,如何进行查看
输出:
2.如何查看尾部数据?
3.如何快速查看数据的统计摘要?
4.如何查询索引和列名?
1.简述Pandas Index
在panda中建立索引意味着简单地从DataFrame中选择特定的数据行和列。
pandas支持四种类型的多轴索引,它们是:
它们统称为索引器。这些是迄今为止索引数据最常见的方法。这四个函数有助于从DataFrame获取元素、行和列。
2.Pandas 定义重新索引(Reindexing)
重新索引会更改DataFrame的行标签和列标签。重新索引意味着使数据符合特定轴上给定的一组标签。
多个操作可以通过像这样的索引来完成:
输出:
3.如何设置索引?
panda set_index() 是一种将列表、序列或dataframe设置为dataframe索引的方法。
语法:
DataFrame.set_index(keys, inplace=False)
参数:
改变索引列
在本例中,名称列被用作DataFrame的索引列
输出:
如输出图像所示,以前索引列是一系列数字
Before Operation –
After Operation
4.如何重置索引?
Pandas Series.reset_index()
函数的作用是:生成一个新的DataFrame或带有重置索引的Series。
例1: 使用 Series.reset_index() 函数重置给定Series对象的索引
输出:
现在,我们将使用Series.reset_index()函数来重置给定的series对象的索引
输出 :
从输出中可以看到,该 Series.reset_index() 函数已将给定Series对象的索引重置为默认值。它保留了索引,并将其转换为列。
1.1先创建数据:
1.2选择单列,产生 Series
详见 按标签选择 。
2.1用标签提取一行数据:
详见 按位置选择 。
3.1用整数位置选择:
4.1用单列的值选择数据:
5.1用索引自动对齐新增列的数据:
1.如何得到一个数列的最小值、第25百分位、中值、第75位和最大值?
输出:
Pandas dataframe.mean(axis=None) 函数返回所请求轴(axis=0代表对列进行求平均值,axis=1代表对行进行求平均值)的值的平均值。
示例: 使用 mean() 函数查找索引轴上所有观测值的平均值。
输出:
让我们使用datafame .mean()函数来查找索引轴上的平均值。
3.如何将函数应用到DataFrame中的每个数据元素?
可以使用 apply() 函数以便将函数应用于给定dataframe中的每一行。让我们来看看我们完成这项任务的方式。
实例:
输出:
4.如何在panda中获得一个DataFrame的行数和列数?
输出:
获取df的行和列计数
输出:
5.如何在panda DataFrame中获得列值的总和?
Pandas dataframe.sum() 函数返回所请求轴的值的和
语法: DataFrame.sum(axis=None, skipna=None, )
参数:
示例1: 使用 sum() 函数查找索引轴上所有值的总和
现在求出沿索引轴的所有值的和。我们将跳过计算和时的NaN值。
输出:
如何将新行追加到pandas DataFrame?
Pandas dataframe.append() 函数的作用是:将其他dataframe的行追加到给定的dataframe的末尾,返回一个新的dataframe对象。
语法:
DataFrame.append( ignore_index=False,)
参数:
示例1: 创建两个数据框,然后将第二个附加到第一个。
现在将df2附加到df1的末尾
输出:
请注意,第二个DataFrame的索引值保留在附加的DataFrame中。如果我们不希望发生这种情况,则可以设置ignore_index = True。
输出 :
“group by” 指的是涵盖下列一项或多项步骤的处理流程:
详见 分组 。
输出:
1.先分组,再用 sum() 函数计算每组的汇总数据:
输出:
2.多列分组后,生成多层索引,也可以应用 sum 函数:
输出:
如何将numpy数组转换为给定形状的DataFrame?
输出:
输出:
透视表是一种可以对数据动态排布并且分类汇总的表格格式,在pandas中它被称作pivot_table。
pivot_table(data, values=None, index=None, columns=None)
参数:
详见: 数据透视表
打印输出:
用上述数据生成数据透视表非常简单:
返回结果:
1.如何将列添加到pandas DataFrame?
源数据:
输出:
输出:
2.如何向panda DataFrame添加索引、行或列?
向DataFrame添加索引
如果您创建了一个DataFrame, panda允许将输入添加到索引参数中。它将确保您拥有所需的索引。否则,在默认情况下,DataFrame包含一个数值索引,该索引从0开始,在DataFrame的最后一行结束。
向DataFrame添加行、列
我们可以使用.loc、iloc和ix将行、列插入到DataFrame中。
添加具有特定索引名的行:
输出:
3.如何在panda DataFrame上进行迭代?
您可以通过结合使用for循环和对DataFrame的iterrows()调用来遍历DataFrame的行。
输出:
4.我们如何排序DataFrame?
我们可以通过以下几种有效地在DataFrame中执行排序:
(1)按标签
可以使用sort_index()方法对数据dataframe进行排序。可以通过传递axis参数和排序顺序来实现。默认情况下,按升序对行标签进行排序。
Python 面试高频问题:cls到底是什么
上一篇文章介绍了什么是python 中的self,详情请参考:
Python面试高频问题:self到底是什么
简单的说self是类(Class)实例化的对象。
面试中还有一个问题经常被提及,那就是——什么是cls呢?
cls 是类(或子类)本身,取决于调用的是哪个类。
看下面的实例
输出:
我们也可以通过实例的方法调用class method,例如:
同样输出
输出:
使用cls 作为方法参数时,通常该方法需要由@classmethod 修饰,@classmethod修饰的方法表示的是类方法。这里需要注意cls就是一个标识,你可以把他写成abc,bcd都是可以的,只是出于习惯写成了cls。
既然cls是一个类,那么我们就可以使用他来进行实例化,具体代码如下:
输出:
可以看到通过obj1=cls()和obj2=cls(),成功创建了两个实例,分别是0x000000690A1E0C08和0x000000690A1E0C48,而这两个实例的类型都是MyClass3'
另外cls 还可以在python类中的方法 __new__里实现,通常定义为:
最后我们可以简单地总结一下self 和 cls:简单的说self是类(Class)实例化的对象。
cls 是类(或子类)本身。我们也可以方便地理解self表示实例的,cls则表示类的!
心得分享!Python面试都要做哪些准备?
首先,准备好简历。找工作,最开始竞争的是什么?最开始竞争的是简历。你到任何一家公司应聘,第一件要做的事情就是投简历,简历是应聘公司了解你的第一窗口,也是应聘公司了解你的第一途径。一份好的简历可以让你在众多的简历中脱颖而出,给招聘者留下深刻印象,然后决定给你面试通知,它是帮助你成功面试的敲门砖。
其次,对于Python常见面试问题要有了解。在面试前我们一定要通过各种渠道了解Python面试中常见的面试问题,做到心中有数。在Python的面试中,一些Python基本常识问题,有些面试官还是会考察的,如果你连基本的常识问题都回答不上来,那么你后面的面试可能无法进行下去,如果能勉强进行下去,最后面试的成功率也会降低。
最后,在面试前准备一套大方得体的服装。穿着得体表现的是对面试的尊重。穿着得体,会给面试官一种愉悦的心情。相反,如果你穿着比较邋遢,当面试官看到你的时候,会觉得你不注意细节,有的面试官甚至会怀疑你的工作能力,这样会给面试官留下非常不好的印象,也可能最后导致面试的失败。
如果在面试前你做好充足的准备,面试官会觉得你是一个对于工作认真、态度真诚的一个人,会增加心里认同感,也会增加面试的成功率。
关于心得分享!Python面试都要做哪些准备,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。
python运维开发工程师面试常见问题有哪些
面试python运维开发工程师每家公司对专业知识的考察侧重点是不一样的,下面给你整理了一些,希望能帮助到你!
python
1、python是强类型还是弱类型的语言
2、python的动态性体现在哪
3、python的namespace:四种;len()等函数的命名空间
4、range和xrange的区别,谈到了迭代器
5、于是问怎么实现迭代器,然后又问了生成器,yield语句
6、将list的中的一万条字符串合成一条字符串的方法
7、python多线程(g il)
8、python的三目运算符有吗? 怎么用一行代码实现三目运算
linux
1、问linux命令
2、top和ps在进程占有资源率的统计方式有什么不同
3、然后扯到了页表,内存管理,TLB
5、linux文件系统:inode,inode存储了哪些东西,目录名,文件名存在哪里
python面试题总结1-内存管理机制
(1).引用计数
(2). 垃圾回收
(3). 内存池机制
在python中每创建一个对象,对应的会有一个引用计数,当发生赋值操作如a=b,对应的b的引用计数会自动加1,当引用的对象被清除或者函数结束时,引用计数会自动减1。
在python中使用引用计数,标记清楚,分代回收三种方式进行垃圾回收。
其中,引用计数当对象的引用计数归0时,对象会自动被清除。标记清除机制是首先遍历所有对象,如果对象可达,就说明有变量引用它,则标记其为可达的。如果不可达,则对其进行清除。分代回收是当对象创建时被标记为第0代,经过一次垃圾回收之后,余下的对象被标记为第1代,最高为第2代。其原理是,对象的生存期越长,月可能不是垃越。
ython语言虽然提供了对内存的垃圾收集机制,但实际上它将不用的内存放到内存池而不是返回给操作系统,所以就有了以下:
1 Pymalloc机制;这个主要是为了加速Python的执行效率,Python引入了一个内存池机制,用于管理,为了对小块内存的申请和释放。
2 Python中所有小于256个字节的对象都是依靠pymalloc分配器来实现的,而稍大的对象用的则是系统的malloc。
3 对于Python对象,比如整数、浮点数和List这些,都有自己独立的内存池,对象间并不共享他们的内存池。换句话说就是,假设你分配并且释放了大量的整数,那么用于缓存这些整数的内存就不能再分配给浮点数。