Python中常用的7种数据类型
数字(Number): 整数, 浮点数
布尔(Boolean): True和False
字符串(String): Uniconde字符序列, 在引号内包含
列表(list): 有序的值的序列
元组(Tuple): 有序的值的序列且不可改变
字典(Dictionarie): 无序的键值对的组合
集合(Set): 无序的不含重复值的序列
-----------------------------------------------------------------------------------------
python常用的三方模块有哪些
requests 它是一个Python第三方库,处理URL资源特别方便
Pygame Python游戏设计模块
Chardet 字符编码探测器,可以自动检测文本 网页编码
-----------------------------------------------------------------------------------------
Python内置模块有哪些
random os json datetime
-----------------------------------------------------------------------------------------
什么是装饰器,原理应用场景及项目中哪些地用到
在不改变原代码的情况下给函数添加新的功能
可以在外层函数加上时间计算函数,计算函数运行时间
计算函数运行次数
可以用在框架的路由传参上
缓存,实现缓存处理
-----------------------------------------------------------------------------------------
什么是递归,哪些业务用到递归
递归,就是在运行的过程中调用自己
-----------------------------------------------------------------------------------------
说一下python中的多继承
一个类继承自多个类就是多继承,它将具有多个类的特征
-----------------------------------------------------------------------------------------
is和==的区别是什么
is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同
is 用于判断两个变量引用对象是否为同一个
== 用于判断引用变量的值是否相等
-----------------------------------------------------------------------------------------
range和xrange的区别是什么?
只有在python2中才有xrange和range,python3中没有xrange
在python2中,range得到的是一个列表,xrange得到的是一个生成器对象
在python3中,range其实是py2中的xrange,因为使用生成器可以节约内存
----------------------------------------------------------------------------------------
深浅拷贝区别
深拷贝相当于复制对象的内容
浅拷贝相当于复制对象的内存地址
----------------------------------------------------------------------------------------
说一下你对面向对象的理解
面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体
----------------------------------------------------------------------------------------
面向对象的五大原则是什么
单一职责原则 一个类,最好只做一件事,只有一个引起它的变化
开放封闭原则 软件实体应该是可扩展的,而不可修改的
里氏代换原则 所有使用基类的地方必须能够透明的使用其子类的对象
依赖倒置原则 高层模块不依赖于底层模块,都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象
接口隔离原则 使用多个小的专门的接口,而不要使用一个大的总接口
----------------------------------------------------------------------------------------
tcp和udp的区别
TCP面向连接 UDP是无连接的
TCP提供可靠的服务,UDP不可靠
UDP具有较好的实时性,工作效率比TCP高
TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
TCP对系统资源要求较多,UDP对系统资源要求较少
---------------------------------------------------------------------------------------
线程、进程、协程的区别
先有进程,然后进程可以创建线程,线程是依附在进程里面的, 线程里面可以包含多个协程
进程是操作系统资源分配的基本单位
线程是cpu调度的基本单位
协程是一种用户态的轻量级线程,协程的调度完全由用户控制
----------------------------------------------------------------------------------------
列举python中的魔法方法
__init__ 初始化方法
__str__ 打印
__new__ 类的构造器
----------------------------------------------------------------------------------------
什么是元类
实例化得到的类叫做元类
----------------------------------------------------------------------------------------
什么是反射
反射指的是运行时获取对象类型定义信息也叫做自省
----------------------------------------------------------------------------------------
什么是python的自省
运行时能够获知对象的类型
----------------------------------------------------------------------------------------
说一下python中的迭代器和生成器
在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法
生成器通过生成器函数产生,生成器函数可以通过def语句来定义,但是不用return返回,而是用yield一次返回一个结果,在每个结果之间挂起和继续它们的状态,来自动实现迭代协议
---------------------------------------------------------------------------------------
什么是元组,和列表的区别是什么
元组是一个与列表类似的集合,元组是不可变的,所以不能对元组完成排序,也不能追加和删除元素
----------------------------------------------------------------------------------------
类属性与实例属性
类属性,在类里面,函数外面定义的属性,是类对象的属性,可以被所有的实例对象共享
实例属性,在__init__函数里定义的属性,是单个实例对象特有的属性,不同的实例之间互不影响
----------------------------------------------------------------------------------------
类方法与实例方法、静态方法
类方法,使用@classmethod装饰的方法,第一个参数为当前类cls, 可以被类对象、实例对象引用
实例方法,在类中定义的普通方法,第一个参数为当前实例对象self, 可以被类对象、实例对象引用
静态方法,使用@staticmethod装饰的方法,参数不需要传cls或者self,可以自行决定传递的参数,可以被类对象、实例对象引用
----------------------------------------------------------------------------------------
什么是并行?什么是并发? Python的多线程属于哪种,为什么?
并发: 任务数大于cpu的核数,多个任务轮流执行
并行: 任务数小于或者等于cpu的核数,多个任务一起执行
python的多线程属于并发,在python解释器内部有一个GIL,所有线程必须申请到该锁才可以继续执行
----------------------------------------------------------------------------------------
python 的内存管理
1.引用计数: 赋值 计数器+1,删除-1
2.垃圾回收: 用来回收不可用的变量值所占用的内存空间
3.内存池机制: 将不用的内存放到内存池,不反还给操作系统
----------------------------------------------------------------------------------------
缓存穿透、缓存雪崩、缓存击穿
缓存穿透
概念:访问一个不存在的key,缓存不起作用
解决:将查到的空值写进缓存,设置较短过期时间
缓存雪崩
概念:大量的key设置了相同的过期时间,导致缓存在同一时刻全部失效
解决:缓存过期时间加上一个随机值
缓存击穿
概念:一个存在的key,在缓存过期的一刻,有大量请求
解决:SETNX设置一个短期key锁住当前key的访问,过期后使用单个线程重建缓存
----------------------------------------------------------------------------------------
关于Python
于 2022-07-18 20:36:27 首次发布