python面试题及解析镜花水苑

1.Python和Java、PHP、C、C#、C++等其他语言的对比?

答:

2.简述解释型和编译型编程语言?

答:解释型语言,在运行时才进行翻译,每条语句都是执行时才进行翻译,效率比较低;

编译型语言,执行前需将高级语言编译成机器语言,翻译只做一次,执行效率较高;

3.位和字节的关系?

答:位,数据传输单位;字节,数据存储单位;

4.b、B、KB、MB、GB的关系?

答:B->GB为1024关系;1B=8bit

5.通过代码实现如下转换:

二进制转换成十进制:v=“0b1111011”int("0b1111011",base=2)十进制转换成二进制:v=18bin(18)八进制转换成十进制:v=“011”int("011",base=8)十进制转换成八进制:v=30oct(30)十六进制转换成十进制:v=“0x12”int("0x12",base=16)十进制转换成十六进制:v=87hex(87)

6.请编写一个函数实现将IP地址转换成一个整数。

7.python递归的最大层数?

答:由sys.setrecursionlimit()设置;

8.求结果:

v1=1or31v2=1and33v3=0and2and10v4=0and2or11v5=0and2or1or41v6=0orFlaseand1False

9.ascii、unicode、utf-8、gbk区别?

答:ascii,美国制定了一套字符编码,对英文字符与二进制之间做了联系,这被称为ASCII码;

unicode,所有符号的编码;

utf-8,它是一种变长编码,可以使用1-4个字节表示一个符号,根据不同的符号来变化字节长度;

gbk,GB2312的扩展,完全兼容GB2312;

10.字节码和机器码的区别?

答:机器码,名机器语言指令,有时也被称为原生码(NativeCode),是电脑的CPU可直接解读的数据。

字节码(Bytecode)是一种包含执行程序、由一序列op代码/数据对组成的二进制文件。

11.三元运算规则以及应用场景?

答:在赋值变量的时候,可以直接加判断,然后赋值

12.列举Python2和Python3的区别?

13.用一行代码实现数值交换:a=1b=2

答:a,b=b,a

14.Python3和Python2中int和long的区别?

答:3中没有long

15.xrange和range的区别?

答:xrange返回的是一个生成器对象;

16.文件操作时:xreadlines和readlines的区别?

17.列举布尔值为False的常见值?

答:None,False,所有为0的数,“”,[],(),{};

18.字符串、列表、元组、字典每个常用的5个方法?

答:字符串,strip、lstrip、rstrip、count、center、find、index、replace、capitalize、startwith、endwith、split、rsplite、join

列表,append、insert、extend、pop、del、reverse、sort、len、max、min、count、index、sorted、insert

字典,get、pop、len、del

19.lambda表达式格式以及应用场景?

答:lambdaargument_list:expression

filter、sorted、map、reduce、作为参数传入

20.pass的作用?

答:作为空语句,保持程序结构的完整性,不做任何事情,一般用于做占位语句

21.*arg和**kwarg作用?

答:python的两个可变参数,*arg代表多个无名参数,类型未tuple,**kwargs表示关键字参数,为dict使用时需要将*rag放置在**kwargs之前,否则会报错;

22.is和==的区别

答:is判断id是否相同,==判断值是否相同

23.简述Python的深浅拷贝以及应用场景?

答:浅拷贝是只仅仅拷贝数据集合的第一层数据,深拷贝指的是拷贝数据集合的所有层。所以对于只有一层的数据几个来说深浅拷贝的意义是一样的,如字典、元祖、集合、列表等。对于数字和字符串而言,无意义,因其永远指向一个内存地址。

24.Python的垃圾回收机制?

25.Python的可变类型和不可变类型

答:可变类型,列表、字典、可变集合;不可变类型,数字、字符串、元组、不可变集合

26.求结果:

v=dict.fromkeys(['k1','k2'],[])v[‘k1’].append(666)print(v)v[‘k1’]=777print(v)答:{“K1”:[666],"K2":[666]}{“K1”:777,"K2":[666]}

27.求结果

defnum():return[lambdax:i*xforiinrange(4)]print([m(2)forminnum()])答:[6,6,6,6]

28.列举常见的内置函数?

答:map、reduce、filter、sort

29.filter、map、reduce的作用?

答:filter,筛选;map,生成新序列;reduce,累加;

30.一行代码实现9*9乘法表

print('\n'.join(['\t'.join(["%2s*%2s=%2s"%(j,i,i*j)forjinrange(1,i+1)])foriinrange(1,10)]))31.如何安装第三方模块?以及用过哪些第三方模块?

答:①pipinstallmodel_name;②pythonsetup.pyinsyall;

32.至少列举8个常用模块都有那些?

33.re的match和search区别?

答:match只检测开头,search检测整个字符串;

34.什么是正则的贪婪匹配?

答:贪婪匹配,趋向于最大长度;非贪婪匹配,匹配到结果就好,就少得匹配字符;

35.求结果:a.[i%2foriinrange(10)]b.(i%2foriinrange(10))

答:[0,1,0,1,0,1,0,1,0,1],(0,1)

36.求结果:a.1or2b.1and2c.1<(2==2)d.1<2==2

答:1,2,False,True

37.deffunc(a,b=[])这种写法有什么坑?

答:函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第二次执行还是用第一次执行的时候实例化的地址存储,所以三次执行的结果就是[1,1,1],想每次执行只输出[1],默认参数应该设置为None。

38.如何实现“1,2,3”变成[‘1’,’2’,’3’]

答:split

39.如何实现[‘1’,’2’,’3’]变成[1,2,3]

答:eval([‘1’,’2’,’3’])

40.比较:a=[1,2,3]和b=[(1),(2),(3)]以及b=[(1,),(2,),(3,)]的区别?

41.如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]

[x*xforxinrange(1,11)]42.一行代码实现删除列表中重复的值

set(list)43.如何在函数中设置一个全局变量

答:global

44.logging模块的作用?以及应用场景?

45.请用代码简答实现stack;

calssStack(object):def__init__(self):self.stack=[]defpush(seld,value):self.stack.append(value)defpop(self):ifself.stack:self.stack.pop()else:raiseLookupError("stackisempty!")defis_empty(self):returnbool(self,stack)deftop(self):returnself.stack[-1]

46.常用字符串格式化哪几种?

答:①%s;②%(first)s;③format;

47.简述生成器、迭代器、可迭代对象以及应用场景?

答:生成器,函数体中有yield关键字的函数;

迭代器,一个可以记住遍历位置的对象;__iter__()返回一个特殊地迭代器对象,__next__()返回下一个迭代器对象

48.用Python实现一个二分查找的函数。

data=[1,3,6,7,9,12,14,16,17,18,20,21,22,23,30,32,33,35]defbinary_search(dataset,find_num):iflen(dataset)>1:mid=int(len(dataset)/2)ifdataset[mid]==find_num:#finditprint("找到数字",dataset[mid])elifdataset[mid]>find_num:#找的数在mid左面print("\033[31;1m找的数在mid[%s]左面\033[0m"%dataset[mid])returnbinary_search(dataset[0:mid],find_num)else:#找的数在mid右面print("\033[32;1m找的数在mid[%s]右面\033[0m"%dataset[mid])returnbinary_search(dataset[mid+1:],find_num)else:ifdataset[0]==find_num:#finditprint("找到数字啦",dataset[0])else:print("没的分了,要找的数字[%s]不在列表里"%find_num)binary_search(data,20)

49.谈谈你对闭包的理解?

答:在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

50.os和sys模块的作用?

答:os,提供一种方便的使用操作系统的函数的方法;

sys,可供解释器使用或维护的变量和解释器进行交互的函数;

51.如何生成一个随机数?

答:使用random函数;

55.如何使用python删除一个文件?

答:os模块,os.remove,os.removedirs(path),os.rmdir(path)

56.谈谈你对面向对象的理解?

答:所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装。封装是我们所说的面相对象编程的特征之一。除此之外还有继承和多态。

57.谈谈你对面向对象的理解?

58.Python面向对象中的继承有什么特点?

答:建造系统中的类,避免重复操作;新类是基于已经存在的类,这样可以提升代码的复用程度

59.面向对象深度优先和广度优先是什么?

60.面向对象中super的作用?

答:用于调用父类的一个方法

61.是否使用过functools中的函数?其作用是什么?

答:用于高阶函数,指那些作用于函数或者返回其他函数的函数。通常情况下,只要是可以被当做函数调用的对象就是这个模块的目标。

62.列举面向对象中带爽下划线的特殊方法,如:__new__、__init__

63.如何判断是函数还是方法?

答:函数,函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用。

方法:方法和函数类似,同样封装了独立的功能,但是方法是需要通过对象来调用的,表示针对这个对象要做的操作,使用时采用点方法。

64.静态方法和类方法区别?

答:都可以通过实例或者类调用,不过实例方法通过类调用时需要传递实例的引用;

65.列举面向对象中的特殊成员以及应用场景

答:__doc__描述类的信息

__call__对象后面加括号,触发执行

__dict__查看类或对象的所有成员

__str__打印对象时,默认输出该方法的返回值

__getitem__,__setitem__,__delitem__用于索引操作,如字典,分别表示获取,设置,删除数据

__new__,__metaclass__

66.1、2、3、4、5能组成多少个互不相同且无重复的三位数

67.什么是反射?以及应用场景?

答:核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动

68.metaclass作用?以及应用场景?

答:MetaClass是用来创建类的,就好比类是用来创建对象的。如果说类是对象的模板,那么metaclass就是类的模板。

直接将需要的属性全部作为新组合类的成员列出来;

分别将各个独立的属性集定义成单个的类,然后通过在组合类添加每个属性类的实例(instance)的方式来引用各个属性类中定义的属性;

69.用尽量多的方法实现单例模式。

#模块单例#fool.pyclassSingleton(object):deffoo(self):passsingleton=Singleton()#foo.pyfromfoolimportsingleton

#静态变量方法classSingleton(object):def__new__(cls,a):ifnothasattr(cls."_instance"):cls._instance=object.__new__(cls)returncls._instancedef__init__(self,a):self.a=adefaa(self):print(a)a=Singleton("a")

classSingleton1(type):def__init__(self,*args,**kwargs):self.__instance=Nonesuper(Singleton1,self).__init__(*args,**kwargs)def__call__(self,*args,**kwargs):ifself.__instanceisNone:self.__instance=super(Singleton1,self).__call__(*args,**kwargs)returnself.__instanceclassSingleton2(type):_inst={}def__call__(cls,*args,**kwargs):print(cls)ifclsnotincls._inst:cls._inst[cls]=super(Singleton2,cls).__call__(*args)returncls._inst[cls]classC(metaclass=Singleton1):pass

defsingleton(cls,*args,**kw):instance={}def_singleton(args):ifclsnotininstance:instance[cls]=cls(*args,**kw)returninstance[cls]return_singleton@singletonclassA:pass

70.装饰器的写法以及应用场景。

答:python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针)

71.异常处理写法以及如何主动跑出异常(应用场景)

try:passexceptExceptionase:print(str(e))else:passfinally:pass#主动抛出异常raiseTypeError("error!")

72.什么是面向对象的mro

答:方法解析顺序

经典类(calssicclass),深度优先遍历当用super调用父类的方法时,会按照__mro__属性中的元素顺序去挨个查找方法。我们可以通过“类名.__mro__”或“类名.mro()”来查看上面代码中D类的__mro__属性值:

73.isinstance作用以及应用场景?

答:来判断一个对象是否是一个已知的类型;

判断object是否与第二个参数的类型相同

74.写代码并实现:

Givenanarrayofintegers,returnindicesofthetwonumberssuchthattheyadduptoaspecifictarget.Youmayassumethateachinputwould

haveexactlyonesolution,andyoumaynotusethesameelementtwice.

Example:

Givennums=[2,7,11,15],target=9,

Becausenums[0]+nums[1]=2+7=9,

return[0,1]

75.json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?

答:string、int、list、tuple、dict、bool、null

定制支持datetime类型

76.json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

importjsona=json.dumps({"ddf":"你好"},ensure_ascii=False)print(a)#{"ddf":"你好"}

77.什么是断言?应用场景?

答:是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。例如:

防御型的编程运行时检查程序逻辑检查约定程序常量检查文档

78.有用过withstatement吗?它的好处是什么?

答:语句的作用是通过某种方式简化异常处理,它是所谓的上下文管理器的一种

79.使用代码实现查看列举目录下的所有文件。

80.简述yield和yieldfrom关键字。

答:yieldfromgenerator。实际上就是返回另外一个生成器

yield生成器

2.网络编程和并发

1.简述OSI七层协议。

答:物理层,数据连接层,网络层,传输层,会话层,表示层,应用层

2.什么是C/S和B/S架构?

答:C/S是客户端和服务器端结构;B/S是浏览器和服务器结构;

3.简述三次握手、四次挥手的流程。

答:三次握手,①连接开始时,连接建立发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列号编号;②服务器收到SYN包,并确认SYN,同时发送自己的一个SYN包,即SYN+ACK包,此事服务器进入SYN_RECV状态;③客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端与服务器同时进入ESTABLISHED状态,完成三次握手;

四次握手

4.什么是arp协议?

答:地址解析协议,使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址)。

5.TCP和UDP的区别?

6.什么是局域网和广域网?

答:局域网和广域网是按规模大小而划分的两种计算机网络。范围在几千米以内的计算机网络统称为局域网;而连接的范围超过10千米的,则称为广域网,因特网(Intenet)就是目前最大的广域网。

7.为何基于tcp协议的通信比基于udp协议的通信更可靠?

8.什么是socket?简述基于tcp协议的套接字通信流程。

9.什么是粘包?socket中造成粘包的原因是什么?哪些情况会发生粘包现象?

10.IO多路复用的作用?

11.什么是防火墙以及作用?

12.select、poll、epoll模型的区别?

13.简述进程、线程、协程的区别以及应用场景?

14.GIL锁是什么鬼?

15.Python中如何使用线程池和进程池?

16.threading.local的作用?

17.进程之间如何进行通信?

18.什么是并发和并行?

19.进程锁和线程锁的作用?

20.解释什么是异步非阻塞?

21.路由器和交换机的区别?

22.什么是域名解析?

23.如何修改本地hosts文件?

24.生产者消费者模型应用场景及优势?

25.什么是cdn?

26.LVS是什么及作用?

27.Nginx是什么及作用?

28.keepalived是什么及作用

29.haproxy是什么以及作用?

30.什么是负载均衡

31.什么是rpc及应用场景?

32.简述asynio模块的作用和应用场景。

33.简述gevent模块的作用和应用场景。

34.twisted框架的使用和应用?

3.数据库和缓存

1.列举常见的关系型数据库和非关系型都有那些?

答:关系型,Oracle、DB2、MicrosoftSQLServer、MicrosoftAccess、MySQL

非关系型,NoSql、Cloudant、MongoDb、redis、HBase

2.MySQL常见数据库引擎及比较?

3.简述数据三大范式?

答:①当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要

②如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

③设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.

4.什么是事务?MySQL如何支持事务?

答:事务是由一步或几步数据库操作序列组成逻辑齿形单元,这系列妖魔全部执行,要么全部放弃执行。具有原子性,一致性,隔离性,持续性。

①begin,rollback,commit来实现;②直接使用set来改变mysql的自动提交模式;

5.简述数据库设计中一对多和多对多的应用场景?

答:一对一,外键关联、主键关联;

多对多,一般采用中间表的方式处理,将多对多表转化为两个一对多;

6.如何基于数据库实现商城商品计数器?

createtableproduct(idprimarykeyauto_increment,pnamevarchar(64),pcountint);

8.简述触发器、函数、视图、存储过程?

9.MySQL索引种类

普通索引:这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。

–直接创建索引CREATEINDEXindex_nameONtable(column(length))–修改表结构的方式添加索引ALTERTABLEtable_nameADDINDEXindex_nameON(column(length))–创建表的时候同时创建索引CREATETABLE`table`(`id`int(11)NOTNULLAUTO_INCREMENT,`title`char(255)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULL,`content`textCHARACTERSETutf8COLLATEutf8_general_ciNULL,`time`int(10)NULLDEFAULTNULL,PRIMARYKEY(`id`),INDEXindex_name(title(length)))–删除索引DROPINDEXindex_nameONtable唯一索引:与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似

–创建表的适合添加全文索引CREATETABLE`table`(`id`int(11)NOTNULLAUTO_INCREMENT,`title`char(255)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULL,`content`textCHARACTERSETutf8COLLATEutf8_general_ciNULL,`time`int(10)NULLDEFAULTNULL,PRIMARYKEY(`id`),FULLTEXT(content));–修改表结构添加全文索引ALTERTABLEarticleADDFULLTEXTindex_content(content)–直接创建索引CREATEFULLTEXTINDEXindex_contentONarticle(content)组合索引(最左前缀):平时用的SQL查询语句一般都有比较多的限制条件,所以为了进一步榨取MySQL的效率,就要考虑建立组合索引。

–使用到上面的索引SELECT*FROMarticleWHREEtitle='测试'ANDtime=1234567890;SELECT*FROMarticleWHREEutitle='测试';–不使用上面的索引SELECT*FROMarticleWHREEtime=1234567890;10.索引在什么情况下遵循最左前缀的规则?

11.主键和外键的区别?

答:主键,唯一标识一条记录,不能有重复的,不允许为空

外键,表的外键是另一表的主键,外键可以有重复的,可以是空值

12.MySQL常见的函数?

答:字符串函数,数字函数,日期函数,高级函数

13.列举创建索引但是无法命中索引的8种情况。

答:①如果条件中有or,即使其中有条件带索引也不会使用;②对于多列索引,不是使用的第一部分(第一个),则不会使用索引;③like查询是以%开头;④如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引;⑤如果mysql估计使用全表扫描要比使用索引快,则不使用索引;

14.如何开启慢日志查询?

16.数据库优化方案?

17.char和varchar的区别?

答:char的长度是不可变的;varchar的长度是可变的

18.简述MySQL的执行计划?

19.在对name做了唯一索引前提下,简述以下区别:select*fromtbwherename=‘Oldboy-Wupeiqi’select*fromtbwherename=‘Oldboy-Wupeiqi’limit1

答:切片的作用相似,没有步进参数

20.1000w条数据,使用limitoffset分页时,为什么越往后翻越慢?如何解决?

答:当一个数据库表过于庞大,LIMIToffset,length中的offset值过大,则SQL查询语句会非常缓慢

子查询优化法;倒排表优化法;反向查找优化法;limit限制优化法;只查索引法

21.什么是索引合并?

答:索引合并是把几个索引的范围扫描合并成一个索引;索引合并的时候,会对索引进行并集,交集或者先交集再并集操作,以便合并成一个索引;这些需要合并的索引只能是一个表的。不能对多表进行索引合并。

22.什么是覆盖索引?

答:如果索引的叶子节点包含了要查询的数据,那么就不用回表查询了,也就是说这种索引包含(亦称覆盖)所有需要查询的字段的值,我们称这种索引为覆盖索引。

23.简述数据库读写分离?

答:让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库

24.简述数据库分库分表?(水平、垂直)

25.redis和memcached比较?

26.redis中数据库默认是多少个db及作用?

27.python操作redis的模块?

28.如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?

29.redis如何实现主从复制?以及数据同步机制?

30.redis中的sentinel的作用?

31.如何实现redis集群?

32.redis中默认有多少个哈希槽?

33.简述redis的有哪几种持久化策略及比较?

34.列举redis支持的过期策略。

35.MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中都是热点数据?

36.写代码,基于redis的列表实现先进先出、后进先出队列、优先级队列。

37.如何基于redis实现消息队列?

38.如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别?

39.什么是codis及作用?

40.什么是twemproxy及作用?

41.写代码实现redis事务操作。

42.redis中的watch的命令的作用?

43.基于redis如何实现商城商品数量计数器?

44.简述redis分布式锁和redlock的实现机制。

45.什么是一致性哈希?Python中是否有相应模块?

46.如何高效的找到redis中所有以oldboy开头的key?

4.前端、框架和其他

答:因特网上应用最广泛的一种网络协议,基于TCP、IP通讯协议来传输数据;

2.谈谈你对websocket协议的认识。

3.什么是magicstring?

4.如何创建响应式布局?

5.你曾经使用过哪些前端框架?

6.什么是ajax请求?并使用jQuery和XMLHttpRequest对象实现一个ajax请求。

7.如何在前端实现轮训?

8.如何在前端实现长轮训?

9.vuex的作用?

10.vue中的路由的拦截器的作用?

11.axios的作用?

12.列举vue的常见指令。

简13.述jsonp及实现原理?

14.是什么cors?

15.列举Http请求中常见的请求方式?

答:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE

16.列举Http请求中的状态码?

答:200-请求成功;301-资源被永久转移到其他URL;404-请求的资源不存在;500-内部服务器错误

17.列举Http请求中常见的请求头?

答:Allow,Date,Location

答:李杰

答:武沛齐

答:老男孩

24.django、flask、tornado框架的比较?

25.什么是wsgi?

答:一种描述webserver与webappliaction的通讯的规范

26.django请求的生命周期?

答:wsgi-中间件-路由系统-视图函数-(ORM,Template,渲染)

27.列举django的内置组件?

答:admin,model,form

28.列举django中间件的5个方法?以及django中间件的应用场景?

答:ProcessRequest:请求进来时,权限认证;

processview:路由匹配之后,能够得到的视图;

processexception:异常时执行;

processtemplateresponseprocess:模板渲染时执行

processresponse:请求有响应时执行

29.简述什么是FBV和CBV?

答:FBV,基于函数的视图;CBV,基于类的视图;

30.django的request对象是在什么时候创建的?

答:请求走到WSGIHandler类的时候,执行cell方法,将environ封装成request

31.如何给CBV的程序添加装饰器?

fromdjango.utils.decoratorsimportmethod_decorator1、给方法加:@method_decorator(check_login)defpost(self,request):...2、给dispatch加:@method_decorator(check_login)defdispatch(self,request,*args,**kwargs):...3、给类加:@method_decorator(check_login,name="get")@method_decorator(check_login,name="post")classHomeView(View):...

32.列举djangoorm中所有的方法(QuerySet对象的所有方法)

答:all(),filter(**kwargs),get(**kwargs),exclude(**kwargs),order_by(*field),reverse(),count(),first()

33.only和defer的区别?

答:only("id"),取的对象只有id,defer则除了id都有

34.select_related和prefetch_related的区别?

前提:有外键存在时,可以很好的减少数据库请求的次数,提高性能select_related通过多表join关联查询,一次性获得所有数据,只执行一次SQL查询prefetch_related分别查询每个表,然后根据它们之间的关系进行处理,执行两次查询

35.filter和exclude的区别?

答:两者取到的值都是QuerySet对象,filter选择满足条件的,exclude:排除满足条件的.

36.列举djangoorm中三种能写sql语句的方法。

1.使用execute执行自定义的SQL直接执行SQL语句(类似于pymysql的用法)#更高灵活度的方式执行原生SQL语句fromdjango.dbimportconnectioncursor=connection.cursor()cursor.execute("SELECTDATE_FORMAT(create_time,'%Y-%m')FROMblog_article;")ret=cursor.fetchall()print(ret)2.使用extra方法:queryset.extra(select={"key":"原生的SQL语句"})3.使用raw方法1.执行原始sql并返回模型2.依赖model多用于查询37.djangoorm中如何设置读写分离?

38.F和Q的作用

答:Q查询——对对象的复杂查询;F查询——专门取对象中某列值的操作;

39.values和values_list的区别?

答:values方法可以获取number字段的字典列表;values_list可以获取number的元组列表

40.如何使用djangoorm批量创建数据?

答:批量插入数据的时候,首先要创建一个对象的列表,然后调用bulk_create方法,一次将列表中的数据插入到数据库中。

product_list_to_insert=list()forxinrange(10):product_list_to_insert.append(Product(name='productname'+str(x),price=x))Product.objects.bulk_create(product_list_to_insert)41.django的Form和ModeForm的作用?

答:form,①生成页面可用的HTML标签;②对用户提交的数据进行校验;③保留上次输入的内容;

ModelForm,Django提供一个辅助类来让我们可以从Django的模型创建Form

42.django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。

def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self.fields["city"].widget.choices=models.City.objects.all().values_list("id","name")authors=form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all())//多选

43.django的Model中的ForeignKey字段中的on_delete参数有什么作用?

44.django中csrf的实现机制?

45.django如何实现websocket?

46.基于django使用ajax发送post请求时,都可以使用哪种方法携带csrftoken?

后端将csrftoken传到前端,发送post请求时携带这个值发送

data:{csrfmiddlewaretoken:'{{csrf_token}}'},

获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端

data:{csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()},

cookie中存在csrftoken,将csrftoken值放到请求头中

headers:{"X-CSRFtoken":$.cookie("csrftoken")}

47.django中如何实现orm表中添加数据时创建一条日志记录。

48.django缓存如何设置?

49.django的缓存能使用redis吗?如果可以的话,如何配置?

#1.安装pipinstalldjango-redis#2.在stting中配置CACHES,可以设置多个缓存,根据名字使用CACHES={"default":{"BACKEND":"django_redis.cache.RedisCache","LOCATION":"redis://127.0.0.1:6379","OPTIONS":{"CLIENT_CLASS":"django_redis.client.DefaultClient","CONNECTION_POOL_KWARGS":{"max_connections":100}#"PASSWORD":"密码",}}},#另添加缓存"JERD":{}#3.根据名字去连接池中获取连接fromdjango_redisimportget_redis_connectionconn=get_redis_connection("default")

50.django路由系统中name的作用?

51.django的模板中filter和simple_tag的区别?

#自定义filter:{{参数1|filter函数名:参数2}}#1.可以与if标签来连用#2.自定义时需要写两个形参#simple_tag:{%simple_tag函数名参数1参数2%}#1.可以传多个参数,没有限制#2.不能与if标签来连用

filter,可以与if标签来连用,自定义是需要写两个形参;simple_tags,可以传多个参数没有限制,不能与if连用;

52.django-debug-toolbar的作用?

答:1.是django的第三方工具包,给django扩展了调试功能

#包括查看sql语句,db查询次数,request,headers等53.django中如何实现单元测试?

54.解释orm中dbfirst和codefirst的含义?

#数据持久化的方式:#dbfirst基于已存在的数据库,生成模型#codefirst基于已存在的模型,生成数据库库55.django中如何根据数据库表生成model中的类?

#1.在settings中设置要连接的数据库#2.生成model模型文件#pythonmanage.pyinspectdb#3.模型文件导入到models中#pythonmanage.pyinspectdb>app/models.py56.使用orm和原生sql的优缺点?

#1.orm的开发速度快,操作简单。使开发更加对象化#执行速度慢。处理多表联查等复杂操作时,ORM的语法会变得复杂#2.sql开发速度慢,执行速度快。性能强57.简述MVC和MTV

58.django的contenttype组件的作用?

#这个组件保存了项目中所有app和model的对应关系,每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录#当一张表和多个表FK关联,并且多个FK中只能选择其中一个或其中n个时,可以利用contenttypes59.谈谈你对restfull规范的认识?

60.接口的幂等性是什么意思?

61.什么是RPC?

62.Http和Https的区别?

63.为什么要使用djangorestframework框架?

64.djangorestframework框架中都有那些组件?

#1.序列化组件:serializers对queryset序列化以及对请求数据格式校验#2.路由组件routers进行路由分发#3.视图组件ModelViewSet帮助开发者提供了一些类,并在类中提供了多个方法#4.认证组件写一个类并注册到认证类(authentication_classes),在类的的authticate方法中编写认证逻#5.权限组件写一个类并注册到权限类(permission_classes),在类的的has_permission方法中编写认证逻辑。#6.频率限制写一个类并注册到频率类(throttle_classes),在类的的allow_request/wait方法中编写认证逻辑#7.解析器选择对数据解析的类,在解析器类中注册(parser_classes)#8.渲染器定义数据如何渲染到到页面上,在渲染器类中注册(renderer_classes)#9.分页对获取到的数据进行分页处理,pagination_class#10.版本版本控制用来在不同的客户端使用不同的行为#在url中设置version参数,用户请求时候传入参数。在request.version中获取版本,根据版本不同做不同处理65.djangorestframework框架中的视图都可以继承哪些类?

#classView(object):#classAPIView(View):封装了view,并且重新封装了request,初始化了各种组件#classGenericAPIView(views.APIView):#1.增加了一些属性和方法,如get_queryset,get_serializer#classGenericViewSet(ViewSetMixin,generics.GenericAPIView)#父类ViewSetMixin重写了as_view,返回returncsrf_exempt(view)#并重新设置请求方式与执行函数的关系#classModelViewSet(mixins.CreateModelMixin,#mixins.RetrieveModelMixin,#mixins.UpdateModelMixin,#mixins.DestroyModelMixin,#mixins.ListModelMixin,#GenericViewSet):pass#继承了mixins下的一些类,封装了list,create,update等方法#和GenericViewSet66.简述djangorestframework框架的认证流程。

#1.用户请求走进来后,走APIView,初始化了默认的认证方法#2.走到APIView的dispatch方法,initial方法调用了request.user#3.如果我们配置了认证类,走我们自己认证类中的authentication方法

THE END
1.河洛理数趋吉解读:三元是什么?~第4頁三元就是六十花甲子,把十天干三元是什么?~第4頁 三元就是六十花甲子,把十天干與十二地支配合,由甲子至癸亥第一個六十年為上元,第二個由甲子至癸亥六十年,為中元甲子,第三個甲子至癸亥六十年,是下元甲子,三個六十年合起來為一百八十年,這就叫做三元。 經盤取用之法,以來龍坐向水之卦爻,皆取合五,合十,合陰陽,合河洛理數。例如:河圖http://www.360doc.com/content/24/1215/07/60543776_1142013284.shtml
2.三元的命理三元是什么意思?爱问知识人命理学上有天、地、人三元之说,天干为天元,地支为地元,人元则是指地支中所藏含的天干。十二地支https://iask.sina.com.cn/b/59StLZyC6x.html
3.人的三元命运怎样推算九运对什么命人好(三元算命)4、三元命的由来 5、三元命算法公式 6、三元命理什么意思 三藏算命139真正免费的算命爱运势,此外三藏算命络139还提供在线咨询和预约服务用户可以通过站联系专业的占卜师获得更准确的占卜和预测服务。三元算命站特点值得一提的是三藏算命139没有受到任何商。 https://www.16757.com/ysh/suanming/3115.html
4.三元命与生男生女以及这些说法你相信吗孕产保健怀孕是一件可以让一家人都非常开心的事情,但是往往怀孕的人都非常想知道自己怀着的到底是男孩还是女孩。那么除了去医院测试这种不被允许的方法外,还有没有什么方法可以让准妈妈们提前知道生男生女呢?比如说:三元命与生男生女这种你听说过吗?接下来我们一起来看看三元命与生男生女以及这些说法你相信吗。 https://www.snsnb.com/post-121129-1.html
5.本来先生说易经()三元命婚配那么呢,三元命配婚以后啊,咱们今天呢,就沿着昨天的课题来讲。那昨天呢,说一共有这八种婚配关系,有吉有凶有好有坏。那么你这八种婚配关系当中呢,他又分说夫妻两个人,那谁厉害一点儿啊。谁会顺着谁一点儿啊,这个计算法门的就在今天教给大家。那用什么来计算的?得用五行来计算。那首先呢,咱们先了解数字的https://www.jianshu.com/p/b2988a8b5068
6.三元论命告诉你什么是命学(山高知寒),三元论命第四十五章论五行定位与十神推断② 第四十六章总论三元论命 编后语: 第四十七章经伦论㈠ 第四十七章经伦论㈡ 第四十七章经伦论㈢ 第四十七章经伦论㈣ 第四十七章经伦论㈤ 第四十七章经伦论㈥ 第四十七章经伦论㈦ 第四十七章经伦论㈧ 第四十七章经伦论㈨ 第四十七章经伦论㈩首页http://m.xiumb.com/231/231333/all.html
7.什么是算命里说的三奇命,天上三奇,地下三奇,人中三奇凡人命遇上三奇的,主其贵至三元及第,冠盖群英。《太乙妙音》说乙丙丁、甲戊庚命局相辅相成生复生,其人即使不成为蓬莱三岛上的仙人,也应该是行走在皇帝金殿玉阶上的达官贵臣。 判定三奇贵人时,必须是命主的年月日干或月日时干为三奇,顺序不可颠倒,否则不属于三奇贵人。https://blog.csdn.net/xiegr71/article/details/103625075
8.三焦就是三种火?上焦为君火,下焦为相火,中焦为食火三焦就是三元之气,三元之气就是三种元气,三种元气都必须够得上元的水平,什么才是元呢? 一,原始, 二,元祖, 三,根源,这才是元的本意。 三种元气出自哪呢?就是肺,脾,肾。 肾是生命之根,分阴精阳气,中医说右为命门左为肾,命门属阳肾属阴,可依据西医略加改动,上为命门下为肾,肾之上为肾上腺,肾上腺产激素https://www.meipian.cn/57cf9lpp