Python面试知识点(二)

1、格式化字符串format和%的区别

基本语法:<模板字符串>.format(<逗号分隔的参数>)

例:要格式化的子字符串用{}表示,如下

MYSQL_URL ='mysql+pymysql://{}:{}@{}:3306/{}'.format(username, password, hostname, database)

优点

format无需关注数据类型,在%方法中'%s'只能替代字符串类型.

填充方式十分灵活,如单个参数可以多次输出,参数顺序可以不相同

2、单例模式实现

核心思想:python内建函数__new__主要是用来生成对象实例的,所以我们重写该类方法。判断类用没有实例属性,即判断有没有类实例,有的话直接返回,没有的话调用父类object的方法创建实例。注意需要传入类名

class SingleInstance(object):

        def __new__(cls, *args, **kwargs):

            if not hasattr(cls, 'instance'):

                    cls.instance =super(SingleInstance, cls).__new__(cls)

            return cls.instance

Python面试知识点(二)_第1张图片

其他方式:

方式2:使用模块,将唯一的实例写到一个模块中,供其他模块调用

方式3:使用装饰器,维护一个字典,key值是类名cls,value值是类的实例。调用类创建类实例的时候判断维护的字典中是否有实例,有的话直接返回。没有创建后返回

3、工厂模式实现

4、元类详解

元类可以控制类的创建过程

拦截类的创建

修改类的定义

返回修改后的类

5、tcp-ip协议和http协议

HTTP协议:超文本传输协议。应用层协议

TCP/IP协议:传输层协议,主要解决数据如何在网络中进行传输

6、斐波那契数列实现

方式1:通过迭代器实现,迭代返回数列中的每个数字

Python面试知识点(二)_第2张图片

方式2:直接返回一个列表,列表元素构成斐波那契数列

Python面试知识点(二)_第3张图片

7、方法重载和方法重写

方法重写通常指的是子类重新实现继承的父类的方法,此时子类对象调用 的是子类的方法,与父类无关

方法重载指的是一个类定义了多个方法,每个方法的方法名字相同,但是参数不同。方法内可能实现不同、返回值不同。

8、常用正则【re模块】

贪婪匹配    <.*>

非贪婪匹配  <.*?>   

re模块中的match从待匹配的字符串中第一个字母开始匹配

re模块中的reserch在待匹配的字符串中搜索匹配项

9、列表去重

方法一:使用set函数 

方法2:列表推导式 

L2 = [1,2,3,5,4,6,1,2,3,8,9,10]

L1 = []

[L1.append(i)for iin L2if inot in L1]

10、python内置函数

map

filter

reduce

你可能感兴趣的:(Python面试知识点(二))