python知识点

并发时退出一个线程

解决数据库延迟

元组修改挖坑

简述staticmethod 和 classmethod 的区别:

staticmethod:静态方法,类似于函数,可由类对象和实例对象来调用。

classmethod : 绑定给类对象的方法,供类对象去调用

filter、map、reduce 的作用:

filter主要作用是过滤掉序列中不符合函数条件的元素,当序列中要删、减元素时,可以使用filter函数,fliter(function,sequence)如果function是None,则返回sequence中为true的元素,如list(filter(None, [0,0,1,2,3,0,0])) =》[1,2,3] 。 filter(lambda x:x%3,allNum)

map主要作用是求一个序列或者多个序列进行函数映射之后的值,map(function,iterable1,iterable2),map(lambda x,y:(x*y)+2,x,y)

reduce是对一个序列进行压缩运算,得到一个值,reduce(function,iterable),function中必须传入两个参数,iterable可以是列表或者元组 reduce(lambda x,y:(x+y),x)

Python中函数参数有哪些类型:

位置参数:从左到右定义的顺序定义的参数

关键字参数:按照key=value定义的参数

默认参数:形参在定义时就为其赋值

可变长参数:*args和*kwargs

命名关键字参数:*后定义的参数,必须被传值,且要按照关键字实参的形式传递

With:

必须要实现两个特殊方法__enter__()和__exit__()

Ascii、Unicode、utf-8、gbk区别:


字典与json的区别:

json:是一种数据格式,json的key只能是字符串,key可以是有序、重复,字符串强制用双引号

dict是一种数据类型,dict的key可以是任何可hash的对象,例如:字符串、数字、元组等。key不可重复;dict的字符串可以用单引号、双引号

python中__new__和__init__区别:

__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法。

__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。

Python中的私有含义:

一般Python约定加了下划线 _ 的属性和方法为私有方法或属性,以提示该属性和方法不应在外部调用,"--"是为了不让子类重写该属性方法.通过类的实例化时自动转换,

1、_xxx 不能用于'from module import *' 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。

2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以

3、__xxx___ 定义的是特列方法。像__init__之类的

可变类型和不可变类型:

可变类型:list,dist,set,

不可变类型:tuple,str,number

表达式3<5>2的值:

true,3<5>2 相当于3<5 and 5>2

表达式3|5的值:

  7。 

解释:“|”是按位或运算符:只要对应的二个二进制位有一个为1时,结果位就为1。 3与5的二进制分别为0011,0101。所以3|5的二进制值为0111,转换为十进制就是7.(“&”按位与)

表达式3<<2的值:

12。"<<"左移,移动一位乘2,移动两位乘4,">>"右移,移动一位除2,移动两位除4 

is和==的区别:

is比较的是id,==比较的是值

Python2 和 Python3区别:

编码格式:Python2 默认ASCII,Python3默认utf-8

print:在Python2 是关键字,Python3中是一个函数

返回值类型:Python2 是返回list集合,效率低,Python3返回迭代器

除法:python2向下取整,python3返回浮点数

字符串序列,Python2 Unicode,Python3 是str,

字节序列,Python2是 str,Python3 是byte,

数值:python2中int是整型,long是长整型,python3中只有int

Python2 中没有协程的概念

Py2 项目如何迁移成 py3:

手动修改不兼容的部分,只要包括print和异常处理

python的垃圾回收机制:

一、引用计数:

引用计数加一的情况:

对象被创建  a=14

对象被引用  b=a

对象被作为参数,传到函数中   func(a)

对象作为一个元素,存储在容器中   List={a,”a”,”b”,2}

引用计数减一的情况:

a.当该对象的别名被显式销毁时  del a

b.当该对象的引别名被赋予新的对象,   a=26

c.一个对象离开它的作用域,例如 func函数执行完毕时,函数里面的局部变量的引用计数器就会减一(但是全局变量不会)

d.将该元素从容器中删除时,或者容器被销毁时。

优点:效率高,易实现

缺点:消耗资源,无法解决循环引用的问题

二、标记-清除:

利用有向图,第一阶段,将可达节点标记为活动对象,第二阶段,清除未被标记的对象

三、分代回收:

将内存分为了3“代”,分别为年轻代(第0代)、中年代(第1代)、老年代(第2代),他们对应的是3个链表,年轻代链表的总数达到上限时,Python垃圾收集机制就会被触发

.pyc文件

字节码文件,由python编译生成,经过python解释器最终会生成机器码运行,可以提高代码运行速度和避免暴露源码。

获取Python解释器版本的方法:

import sys

print(sys.version)

请至少列举 5 个 PEP8 规范(越多越好):

- 使用space(空格)来表示缩进,而不要用tab(制表符)

- 和语法相关的每一层缩进都要用4个空格来表示

- 每行的字符数不应超过79

- 对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别之上再加上4个空格

- 文件中函数与类之间应该用两个空行隔开

- 在同一个类中,各方法之间应该用一个空行隔开

- 函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连,例如:`lowercase_underscore`

- 类中的实例方法(instance method),应该把首个参数命名为self,以表示该对象自身

- 类方法(class method)的首个参数,应该命名为cls,以表示该类自身

- 不要通过检测长度的方法(如if len(somelist) == 0)来判断somelist是否为[]或“”等空值,而是应该采用if not somelist,它会假定:空值会自动评估为False 

and和or:

优先级:()> not > and > or 

and:从左到右计算表达式,若所有的都为真,则返回最后一个值,若存在假,返回第一个假值

or:从左到右计算表达式,遇到真值就返回那个真值,没有遇到真值,就返回最后一个假值.

三元运算:

条件成立 if 条件 else 条件不成立, a if a > b else b

字典取key,value:

遍历key值:for key in a.keys():

遍历value值:for value in a.values():

遍历字典项: for kv in a.items():

遍历字典健值: for key,value in a.items():

os模块:

os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口,多用于文件处理

sys模块:

sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

 json模块:

序列化:把数据从内存读入硬盘(以json格式),json.dump()

反序列化:把数据从硬盘读入内存(以json格式),json.load()

跨平台性质,它可以序列化dict/list/str/int/float/bool/None数据类型

pickle模块:

序列化:把数据从内存读入硬盘(以pickle格式,二进制形式,即'wb'模式),pickle.dump()

反序列化:把数据从硬盘读入内存(以pickle格式,以二进制形式,即'wb'模式),pickle.load()

无法跨平台(它只能用于Python),但是可以序列化Python的任意数据类型,包括对象

hashlib模块:

提供加密算法,主要提供 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 算法

hmac 模块:

为了防止密码被撞库,只接受二进制数据的加密,h1 = hmac.new(b'hash')

numpy数组:

合并两个numpy数组的行,numpy数组应该有相同的行,使用hstack()方法合并

合并两个numpy数组的列,numpy数组应该有相同的列,使用vstack()方法合并

pandas模块:

pandas基于Numpy,可以看成是处理文本或者表格数据,两个主要的数据结构Series和DataFrame。

matplotlib模块:

绘图库,它可以创建常用的统计图,包括条形图、箱型图、折线图、散点图、饼图和直方图

collections模块:

namedtuple:是一个函数,它用来创建一个自定义的tuple对象,Circle = namedtuple('Circle', ['x','y','r'])

deque:除了实现list的append()和pop()外,还支持appendleft()和popleft()

defaultdict:如果希望key不存在时,返回一个默认值,就可以用defaultdict

OrderedDict:OrderedDict的Key会按照插入的顺序排列,不是Key本身排序

Counter:统计字符出现的个数

并发和并行:

并发是指两个或多个事件在同一时间间隔内发生

并行是指两个或者多个事件在同一时刻发生;

进程、线程、和协程的理解:

进程:资源调度和分配的基本单位,一段可以独立执行的程序,一个进程可包含多个线程

线程:是进程的实体,cpu可调度的基本单位,依赖于进程

协程:单核交替切换执行多个任务, sleep的时候,使用await让出控制权

在Python中有多种方式可以实现协程,例如:

greenlet,是一个第三方模块,用于实现协程代码(Gevent协程就是基于greenlet实现)

yield,生成器,借助生成器的特点也可以实现协程代码。

asyncio,在Python3.4中引入的模块用于编写协程代码。

async & await,在Python3.5中引入的两个关键字,结合asyncio模块可以更方便的编写协程代码。

目前主流使用是Python官方推荐的0模块和async&await关键字的方式

GIL锁:

全局解释器锁,目的是为了一个进程同一时刻只执行一个线程,防止死锁出现

Lock和Rlock区别:

Rlock允许多次加锁,内部包含lock和counter计数器,同一个线程中要等所有的acquire都release后,其他线程才能操作共享资源,解决了递归锁带来的问题。

I/O密集型程序和计算型密集型程序:

I/O密集型程序:文件读取、磁盘读取、网络通信,适合用多线程

计算(CPU)型密集型程序:逻辑运算,适合多进程

多核下,想做并行提升效率,比较通用的方法是使用多进程,能够有效提高执行效率

Explain:

Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句

装饰器:

在不改变源代码和调用方式的基础之上给函数增加新的功能

普通函数添加装饰器后,函数名称会变成装饰器的名称,要解决这一问题,需要给装饰器添加functools.wraps,这样即使被装饰器装饰过的函数也可以保留自己的函数名和docstring

迭代器:

可直接作用于for循环的数据类型:一类是集合数据类型,list,tuple,dict,set,str等;

一类是generator,包括生成器和带yield的generator function

迭代对象 iterable:

可以用for循环的对象

迭代器对象:

obj有.__iter__和.__next__方法,可以用next()函数调用并不断返回下一个值的对象

生成器:

只要函数里有yield关键字,那么函数名()得到的结果就是生成器。

切片和数组:

切片操作符是序列名后跟一个方括号,方括号中有3个可选的数字,并用冒号分割,数是可选的,而冒号是必须的。切片操作符中的第一个数表示切片开始的位置,第二个数表示切片到哪里结束,第三个数表示切片步长。前闭后开 [::-1]倒序

go通道

http请求流程

数据库查询慢优化

es的使用原理

es分词

celery的原理

git操作

单例模式

装饰器应用场景

SQL优化

djangoORM操作。

ORM和SQL的比较

资产存入数据库

常用模块

dockerfile中的命令

链表的数据结构

二叉树

单例模式

工厂模式

普通索引和主键索引的区别

udp和tcp的区别

除了paramiko,还有那些可以连接服务器。

redis的常用命令

redid和RabitMql比较

通道的作用

如何加整站缓存

es如何做全文搜索

es搜索的两种方式

SQL考察

迭代器生成器,应用场景

python通道作用

redis集群考察

redis雪崩应用场景

数据库SQL优化

查询数据泄露

异步任务,查询出现数据延迟。

ES分词操作

SQL考察

redis的缓存的更新策略

session和token的作用

tcp和udp的区别

udp数据丢失怎么办

https的传输流程

字典强制转换成json问题

如何生成一个迭代器

迭代器与生成器的区别

字符串拼接时,+和join的区别

resful规范

resful中的方法

深浅拷贝

浅拷贝时,删除一个列表元素

查看进程id的linux命令

docker部署的文件格式

celery延迟任务的考察

Python中如何实现多线程

统计列表字符频次

sum+隐函数考察

<n的质数个数

列表嵌套字典的格式化对齐输出

对于查询慢的数据库优化

事务的隔离机制

数据库索引的种类及区别

数据库的锁机制

排他锁,共享群

数据库分库分表

前后端的一个交互过程

char 和 varchar的区别

docker镜像操作,copy和add

数据库存储引擎及区别

索引种类

数据库开启一个事务

优化应用场景

数据库中查看数据异常process list

回滚操作,数据超出容量。

装饰器中内部函数中的func fool查看被扩展函数的方法。

迭代器,生成器的实现。

>和>>的区别

集合中能放列表?

左链接

Mysql中默认的事务的隔离机制

Linux 文件拷贝

多线程的使用

二叉树的深度


namedtuple


条件成立 if 条件 else 条件不成立


一、引用计数


obj有.__iter__和.__next__方法的叫做迭代器对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容