Python面试题大全总结

简介: Python面试题大全总结

一、前言


有很多时候,你可能python使用的很熟练,但在面试的时候可能就过不了,

毕竟常说的面试造火箭,入职拧螺丝的情况是真实存在的。所以背八股文也是极其重要的!

这里分享一些常见和高频的面试题(300道)给大家:



54d39b5f4c0a4827aadc38bc48252e44.png

二、试题分享


一. Python基础


1)字典推导式


d = {key:value for (key,value) in iterable}


2)反转字符串 "aStr"


print("aStr"[::-1])


3)将字符串 “k:1 |k1:2|k2:3|k3:4”,处理成字典 {k:1,k1:2,…}


完整试题
公众号:python砖家
回复:11
str1 = "k:1|k1:2|k2:3|k3:4" 
def str2dict(str1): 
  dict1 = {} 
  for iterms in str1.split('|'): 
    key,value = iterms.split(':') 
    dict1[key] = value 
  return dict1 
#字典推导式 
d = {k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}


4)下面代码的输出结果将是什么


list = ['a','b','c','d','e'] 
print(list[10:])


代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某

个列表的成员。例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切

片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶

心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。


5)给定两个列表,怎么找出他们相同的元素和不同的元素

list1 = [1,2,3]
list2 = [3,4,5]
set1 = set(list1)
set2 = set(list2)
print(set1 & set2)
print(set1 ^ set2)


二. 企业面试题

6)python新式类和经典类的区别


在python里凡是继承了object的类,都是新式类

Python3里只有新式类

Python2里面继承object的是新式类,没有写父类的是经典类

经典类目前在Python里基本没有应用

保持class与type的统一对新式类的实例执行a.class与type(a)的结果是一致的,对于旧式类来说就不一样了。

对于多重继承的属性搜索顺序不一样新式类是采用广度优先搜索,旧式类采用深度优先搜索。

7)python中内置的数据结构有几种


整型 int、 长整型 long、浮点型 float、 复数 complex

字符串 str、 列表 list、 元祖 tuple

字典 dict 、 集合 set

Python3 中没有 long,只有无限精度的 int

8)python如何实现单例模式?请写出两种实现方式


8.1 第一种方法:使用装饰器


def singleton(cls):
    instances = {}
    def wrapper(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]
    return wrapper
@singleton
class Foo(object):
    pass
foo1 = Foo()
foo2 = Foo()
print(foo1 is foo2) # True

8.2 第二种方法:使用基类

New 是真正创建实例对象的方法,所以重写基类的new 方法,以此保证创建对象的时候只生成一个实

完整试题
公众号:python砖家
回复:11
class Singleton(object):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        return cls._instance
class Foo(Singleton):
    pass
foo1 = Foo()
foo2 = Foo()
print(foo1 is foo2)  # True

三. Python高级


9)Python中类方法、类实例方法、静态方法有何区别?


类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,

类对象和实例对象都可调用

类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;

静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法

实际上跟该类没有太大关系


10)python函数重载机制


函数重载主要是为了解决两个问题。


可变参数类型。

可变参数个数。

另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同

的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字

不同的函数。

好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处

理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中

很可能是相同的代码,没有必要做成两个不同函数。

那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参

数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数

终归是需要用的。

好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。


<<300道完整试题点我获取


11)对缺省参数的理解


缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时,所

传入的参数会替代默认参数。

*args是不定长参数,它可以表示输入参数是不确定的,可以是任意多个。

**kwargs是关键字参数,赋值的时候是以键值对的方式,参数可以是任意多对在定义函数的时候

不确定会有多少参数会传入时,就可以使用两个参数


12)生成器,迭代器的区别


迭代器

是遵循迭代协议的对象。用户可以使用 iter() 以从任何序列得到迭代器(如 list, tuple,

dictionary, set 等)。另一个方法则是创建一个另一种形式的迭代器 —— generator 。要获取下一个元

素,则使用成员函数 next()(Python 2)或函数 next() function (Python 3) 。当没有元素时,则引

发 StopIteration 此例外。若要实现自己的迭代器,则只要实现 next()(Python 2)或 next ()


生成器(Generator)

只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返

回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)


区别

生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简

洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序

状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。


三、总结


大家拿到资料后一定得看啊,不是拿到资料就会了!

目录
相关文章
|
30天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
1月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
100 3
|
4月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
4月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
4月前
|
算法 Java Linux
python中的面试常考知识点
python中的面试常考知识点
|
6月前
|
存储 数据可视化 算法
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
|
6月前
|
数据采集 Java 数据挖掘
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
|
6月前
|
数据采集 算法 网络协议
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
最新Python 面试常见问题(1),2024年最新面试官必问的10个问题
下一篇
无影云桌面