社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python工程师需要掌握的面试题

马哥Linux运维 • 4 年前 • 359 次点击  

1、Python有哪些特点和优点?

答:作为一门编程入门语言,Python主要有以下特点和优点:可解释具有动态特性面向对象简明简单开源具有强大的社区支持

2、深拷贝和浅拷贝之间的区别是什么?

答:深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy,如下所示:>>> import copy>>> b=copy.deepcopy(a)
而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝,使用如下所示:>>> b=copy.copy(a)

3. 列表和元组之间的区别是?

答:二者的主要区别是列表是可变的,而元组是不可变的。举个例子,如下所示:>>> mylist=[1,3,3]>>> mylist[1]=2>>> mytuple=(1,3,3)>>> mytuple[1]=2Traceback (most recent call last):File "", line 1, in mytuple[1]=2会出现以下报错:TypeError: ‘tuple’ object does not support item assignment

4、在Python中如何实现多线程?

答:一个线程就是一个轻量级进程,多线程能让我们一次执行多个线程。我们都知道,Python是多线程语言,其内置有多线程工具包。Python中的GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下个线程之前执行一些操作,这会让我们产生并行运行的错觉。但实际上,只是线程在CPU上轮流运行,当然,所有的传递会增加程序执行的内存压力。

5、解释一下Python中的继承

答:当一个类继承自另一个类,它就被称为一个子类/派生类,继承自父类/基类/超类。它会继承/获取所有类成员(属性和方法)。继承能让我们重新使用代码,也能更容易的创建和维护应用。Python支持如下种类的继承:单继承:一个类继承自单个基类多继承:一个类继承自多个基类多级继承:一个类继承自单个基类,后者则继承自另一个基类分层继承:多个类继承自单个基类混合继承:两种或多种类型继承的混合

6、什么是猴子补丁?

在运行期间动态修改一个类或模块。>>> class A:    def func(self):            print("Hi")>>> def monkey(self):        print "Hi, monkey"
>>> m.A.func = monkey>>> a = m.A()>>> a.func()
运行结果为:Hi, Monkey

7、请解释使用*args和**kwargs的含义

在python中,*args和**kwargs通常使用在函数定义里。*args 和 **kwargs 都允许你给函数传不定数量的参数,即使在定义函数的时候不知道调用者会传递几个参数。ps: *args和**kwargs只是一个大家都遵守的习惯,名字可以任意写的 。1. *args例子*args能够接收不定量的非关键字参数,会把位置参数转化为tuple(非键值对的参数组),例子如下面代码所示:def func(*args):    for i in args:        print(i)func(1,2,3,4)运行结果:1234
2.**kwargs 例子**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了,它会把关键字参数转化为dict(键值对参数组),例子如下面代码所示:def func(**kwargs): for i in kwargs: print(i,kwargs[i])func(a=1,b=2,c=3,d=4)
运行结果:a 1b 2c 3d 4

8、python中new和init的区别是什么? 

 __new__是一个静态方法,而__init__是一个实例方法.  __new__方法会返回一个创建的实例,而__init__什么都不返回.  只有在__new__返回一个cls的实例时后面的__init__才能被调用.  当创建一个新实例时调用__new__,初始化一个实例时用__init__.

9、解释一下Python中的三元运算


不像C++,我们在Python中没有?:,但我们有这个:[on true] if [expression] else [on false]如果表达式为True,就执行[on true]中的语句。否则,就执行[on false]中的语句。下面是使用它的方法:>>> a,b=2,3>>> min=a if a>>> min运行结果:2>>> print("Hi") if a运行结果:Hi

10、在Python中是如何管理内存的?

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56304
 
359 次点击