Python常见问题

1.类的方法分别怎么调用,项目中在哪里可以用到

类方法分为实例方法、静态方法和类方法,后两者实际上没有区别,只不过类方法的第一个参数是代表类的对象,而静态方法没有这个参数,实例方法要用对象调用(发给对象的消息),静态方法和类方法用类就可以调用。

2.装饰器和中间件的区别

装饰器和中间件本质也是一致的,Django1.8以后官方推荐的写法中间件跟装饰器的写法是一致的,只不过中间件可以对web的请求和响应进行过滤,web的中间件更应该称为拦截过滤器

3.celery怎么写

app = celery.Celery('模块名', broker = '消息服务器的URL', backend = '存储服务的URL')

4.七牛云怎么用的 CDN是干什么的

七牛云可以用来存储静态资源,CDN可以加速对静态资源的访问

5.数据库索引

普通索引、主键索引、全文索引、唯一索引

6.中间件的种类

处理请求、处理响应、处理异常、处理视图、处理模板

7.富文本编辑器是怎么做到图片上传的,又是怎么关联到文章的(相当于就是一篇文章 (字 图片1 字 图片2)怎么让图片和文章进行关联)

富文本一般都带了支持文件上传的,只要给一个支持文件上传的url地址就可以了,图片里面加一个文章的id作为外键就可以了图片和文章就关联起来了,在存储的时候就给图片编一个号或者按照时间先后顺序生成一个时间戳就可以区分顺序了

8.缓存穿透和缓存雪崩怎么解决

缓存穿透:指查询一个数据库不存在的数据。
解决:
1.使用互斥锁排队:
        业界比价普遍的一种做法,即根据key获取value值为空时,锁上,从数据库中load数据后再释放锁。若其它线程获取锁失败,则等待一段时间后重试。这里要注意,分布式环境中要使用分布式锁,单机的话用普通的锁(synchronized、Lock)就够了。这样做思路比较清晰,也从一定程度上减轻数据库压力,但是锁机制使得逻辑的复杂度增加,吞吐量也降低了,有点治标不治本。
2.接口限流与熔断、降级:
        重要的接口一定要做好限流策略,防止用户恶意刷接口,同时要降级准备,当接口中的某些服务不可用时候,进行熔断,失败快速返回机制。
3.布隆过滤器:
        bloomfilter就类似于一个hash set,用于快速判某个元素是否存在于集合中,其典型的应用场景就是快速判断一个key是否存在于某容器,不存在就直接返回。布隆过滤器的关键就在于hash算法和容器大小。

缓存雪崩:缓存在同一时间内大量键过期(失效),接着来的一大波请求瞬间都落在了数据库中导致连接异常。严重可能导致数据库宕机。
解决:
1.也可加锁排队机制。
2.建立备份缓存,缓存A和缓存B,A设置超时时间,B不设置超时时间,先从A读缓存,A没有读B,,并且更新A缓存和B缓存。
3.设置缓存超时时间的时候加上一个随机的时间长度,比如这个缓存key的超时时间是固定的5分钟加上随机的2分钟,这样可从一定程度上避免雪崩问题

注:redis是单线程+异步IO的工作模式

9.接口怎么做限流

接口限流是配置throttle_classes

10.数据库事务

一个是事务的ACID特性,一个是事务隔离级别,对应到底层的锁机制

事务的ACID特性:
1. 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行
2. 一致性(consistent),事务的执行结果,必须是从一个一致状态,变成另一个新的一致状态。事务的原子性保证其一致性
3. 隔离性(insulation),主要在并发时,各个事务之间互不影响。并发事务所作的修改必须与任何其它并发事务所作的修改隔离。
4. 持久性(Duration),事务一旦提交,数据就永久的保存在数据库,它对于系统的影响是永久性的。

事务隔离级别:
1. Serializable 串行化
2. Repeatable Read 可重复读
3. Read Commited 可读已提交
4. Read Uncommited 可读未提交
 
锁的机制
1) 共享锁
共享锁的代号是S,共享锁的锁粒度是行或元组(多个行)。一个事务获取了共享锁之后,可以对锁定范围内的数据执行读操作。 
2) 排它锁
排它锁的代号是X,排它锁的粒度与共享锁相同,也是行或元组。一个事务获取了排它锁之后,可以对锁定范围内的数据执行写操作。
3) 意向锁
意向锁是一种表锁,锁定的粒度是整张表,分为意向共享锁(IS)和意向排它锁(IX)两类。意向共享锁表示一个事务有意对数据上共享锁;意向排它锁表示一个事务有意对数据上排它锁。
使用意向锁来保护锁层次结构的底层资源,以防止其他事务对自己锁住的资源造成伤害。
意向锁可以提高性能,因为数据库引擎仅在表级检查意向锁,确定事务是否能安全地获取该表上的锁,而不需要检查表中的每行或每页上的锁以确定事务是否可以锁定整个表。

MYSQL锁级别
1) 表级锁:直接锁定整张表,在锁定期间,其它进程无法对该表进行写操作,若是排他锁,则其它进程读也不允许。开销小,加锁快,不会出现死锁,冲突概率高,并发度低。
2) 行级锁:仅对指定的记录进行加锁,其它进程还是可以对同一个表中的其它记录进行操作。开销大,加锁慢,会出现死锁,冲突概率低,并发度高。
3) 页级锁:页级锁取了折衷,一次锁定相邻的一组记录。开销和加锁时间界于表级锁和行级锁之间,会出现死锁,并发度一般。

11.数据库的优化

1、选取最适用的字段属性
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、事务
5、锁定表
6、使用外键
7、使用索引
8、优化的查询语句
9、定时的去清除不需要的数据,定时进行碎片整理(MyISAM)
10、存储过程 [模块化编程,可以提高速度]
11、读写[写: update/delete/add]分离
12、分表技术(水平分割、垂直分割)

12.高并发怎么处理

1.HTML静态化
2.图片服务器分离(七牛云云存储,CDN加速)
3.数据库集群和库表散列
4.缓存
5.镜像
6.负载均衡

13.args和*kwargs分别代表什么

*args是非关键字参数,传入元组;**kwargs是关键字参数用于字典。

14.代码审查(Review)

代码评审可以分为代码评审会议和Single Review(一对一审查),主要就是检查代码的风格、逻辑这些,可以用工具进行辅助检查 或者是用工具(单元测试、pylint检查代码风格)

15.Python的内存管理机制

就是引用计数器机制和垃圾回收机制的混合机制

垃圾回收机制:
当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾。比如某个新建对象,被分配给某个引用,对象的引用计数变为1。如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收。

16.Python2和Python3的区别

一、 print 从语句变为函数
   原:  print 1, 2+3
   改为: print(1, 2+3)
二、range 与 xrange
  原 : range( 0, 4 )   结果 是 列表 [0,1,2,3 ]
  改为:list( range(0,4) )
  原 : xrange( 0, 4 )    适用于 for 循环的变量控制
  改为:range(0,4)
三、字符串
  原: 字符串以 8-bit 字符串存储
  改为: 字符串以 16-bit Unicode 字符串存储
四、try except 语句的变化
   原: 
       try:
              ......
       except Exception, e :
              ......
   改为:
       try:
          ......
       except    Exception as e :
         ......
五、打开文件
   原: 
       file( ..... )或 open(.....)
   改为:
       open(.....)
六、从键盘录入一个字符串
   原: raw_input( "提示信息" )
   改为: input( "提示信息" )
七、bytes 数据类型
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容