面试题

1:#Python有哪些特点和优点?
作为一门编程入门语言,Python主要有以下特点和优点:

可解释

具有动态特性

面向对象

简明简单

开源

具有强大的社区支持

2:#深拷贝和浅拷贝之间的区别是什么?
深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy,如下所示:

##>>> import copy
##>>> b=copy.deepcopy(a)
而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝,使用如下所示:
##>>> b=copy.copy(a)

3:# 请写一个Python逻辑,计算一个文件中的大写字母数量
##>>> import os
##>>> os.chdir(‘C:\Users\lifei\Desktop’)
##>>> with open(‘Today.txt’) as today:
count=0
for i in today.read():
if i.isupper():
count+=1
print(count)

4:#怎么移除一个字符串中的前导空格?
字符串中的前导空格就是出现在字符串中第一个非空格字符前的空格。我们使用方法Istrip()可以将它从字符串中移除。

##>>> ’ Ayushi '.lstrip()
结果:

‘Ayushi ’
可以看到,该字符串既有前导字符,也有后缀字符,调用Istrip()去除了前导空格。如果我们想去除后缀空格,就用rstrip()方法。

##>>> ’ Ayushi '.rstrip()
结果:

‘ Ayushi’

5:# 解释一下Python中的继承
当一个类继承自另一个类,它就被称为一个子类/派生类,继承自父类/基类/超类。它会继承/获取所有类成员(属性和方法)。
继承能让我们重新使用代码,也能更容易的创建和维护应用。Python支持如下种类的继承:
单继承:一个类继承自单个基类
多继承:一个类继承自多个基类
多级继承:一个类继承自单个基类,后者则继承自另一个基类
分层继承:多个类继承自单个基类
混合继承:两种或多种类型继承的混合 更多关于继承的内容,参见:
https://data-flair.training/blogs/python-inheritance/

6:#什么是Flask?
Flask是Python编写的一款轻量级Web应用框架。其 WSGI 工具箱采用 Werkzeug(路由模块) ,模板引擎则使用 Jinja2。Flask使用 BSD 授权。其中两个环境依赖是Werkzeug和jinja2,这意味着它不需要依赖外部库。正因如此,我们将其称为轻量级框架。
Flask会话使用签名cookie让用户查看和修改会话内容。它会记录从一个请求到另一个请求的信息。不过,要想修改会话,用户必须有密钥Flask.secret_key。

7#在Python中是如何管理内存的?
解释一:Python有一个私有堆空间来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释器在管理它。但是有了核心API后,我们可以访问一些工具。Python内存管理器控制内存分配。
另外,内置垃圾回收器会回收使用所有的未使用内存,所以使其适用于堆空间。

解释二:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制

	一、对象的引用计数机制
	
	Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。
	
	引用计数增加的情况:
	
	1,一个对象分配一个新名称
	
	2,将其放入一个容器中(如列表、元组或字典)
	
	引用计数减少的情况:
	
	1,使用del语句对对象别名显示的销毁
	
	2,引用超出作用域或被重新赋值
	
	sys.getrefcount( )函数可以获得对象的当前引用计数
	
	多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。
	
	二、垃圾回收
	
	1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
	
	2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。
	
	三、内存池机制
	
	Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。
	
	1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。
	
	2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。
	
	3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

8:#单引号,双引号,三引号的区别?

答:单引号和双引号是等效的,如果要换行,需要符号(),三引号则可以直接换行,并且可以包含注释

如果要表示Let’s go 这个字符串

单引号:s4 = ‘Let\’s go’

双引号:s5 = “Let’s go”

s6 = ‘I realy like“python”!’

这就是单引号和双引号都可以表示字符串的原因了

#快速排序,递归算法 O(nlogn)

9:#递归快速排序
def quicksort(list):
if len(list)<2:
return list #基线条件,为空或者只包含一个元素的数组是有序的
midpivot = list[0]#递归条件
lessbeforemidpivot = [i for i in list[1:] if i<=midpivot]#小于基准值的元素组成的子数组
biggeraftermidpivot = [i for i in list[1:] if i > midpivot]#大于基准值的元素组成的子数组
finallylist = quicksort(lessbeforemidpivot)+[midpivot]+quicksort(biggeraftermidpivot)
return finallylist

print(quicksort([2,4,6,7,1,2,5]))

10:# 输入某年某月某日,判断这一天是这一年的第几天?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章