当你的程序员老师考你知识点时^*.*^

1、什么是事务:
·是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);

·原子性、一致性、隔离性、持续性

2、HTTP协议特点
http属于应用层,https属于传输层

超文本传输协议,基于TCP的、默认端口80、明文传输、

客户端/服务器模式、简单快速、灵活、无连接(短连接)、无状态

3、面向对象三大特性:
·封装、继承、多态。

封装:

·把属性封装到对象当中,

·把相同的功能封装到方法中

继承:

.继承是从已有的类中派生出新的类,

新的类能吸收已有类的数据属性和行为,并能扩展新的能力

多态:

.多态就是指一个类实例的相同方法在不同情形有不同表现形式。

4、新式类和经典类有什么不同
·新式类广度继承

·经典类深度继承

5、__init__和__new__方法的区别
init 方法仅为初始化方法;

__new__方法才是实际意义上的构造函数;

6、端口和IP有什么作用
·IP:标记网络任何一台设备

·PORT:标记进程的(每个应用程序都对应一个端口号)

7、左连接和右连接有什么不同
简而言之:左连接只影响右表,右连接只影响左表。

8、GIL是什么
·gil是什么:全局解析器锁

·gil的作用:单核的情况下可以实现多任务(并发)

全局解释锁,每次只能一个线程获得cpu的使用权:为了线程安全,也就是为了解决多线程之间的数据完整性和状态同步而加的锁,因为我们知道线程之间的数据是共享的。

9、append方法和extend方法有什么区别
·list.append(object) 向列表中添加一个对象object。

使用append的时候,是将参数看作一个对象,【整体作为一个元素打包】添加到指定列表。

·list.extend(iterable) 把一个可迭代对象的内容迭代添加到列表中。

使用extend是将一个可迭代对象中的每个元素【逐个地】添加到列表中,可迭代对象中有几个元素,添加后的列表就比原列表多几个元素。

·在末尾追加数据

·将列表2的数据追加到列表1

10、什么是可迭代对象,什么是迭代器、生成器是可迭代对象吗
·可以被 for in 遍历的对象就是可迭代对象

.可以使用 isinstance() 判断一个对象是否是 Iterable 对象

·迭代器(iterator)是一个抽象的概念,任何对象,如果它的类有next方法(next python3)和__iter__方法返回自己本身,即为迭代器

·生成器是一种特殊的迭代器

11、什么是生成器?有几种写法:
·生成器:能让一个函数看上去暂停执行,通过next()或send()继续执行

·1,如同列表生成方式,把[]换成()

2,函数 + yield(如果一个函数中有yield语句,那么这个就不再是函数,而是一个生成器的模板)

3,使用__next__方法

12、对称加密有哪些算法、非对称加密
·DES、3DES、AES

·RSA。公钥加的密、私钥能解开

私钥加的密、公钥能解开

加密速度的速度慢

13、什么是MVC:
是一种软件设计典范;核心思想就是解耦

作用:高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性有利于软件工程化管理

M(model模型):主要负责数据(向数据库请求数据)

V(view视图):主要负责视图(页面)

C(controller控制器):接收用户请求,处理业务逻辑

C-----M-D-----M-----V

14、什么是MTV:
是Django框架的设计思想

M(model模型):主要负责数据

T(template模板):主要负责模板(页面)

V(view视图):接收用户请求,处理业务逻辑

V-----M-D-----V-----T

15、当浏览器输入域名做了什么操作:
baidu.com -->DNS(把域名变成IP的一种技术) -->

(TCP)进行三次握手–> 传输消息

16、说说HTTP和HTTPS:
HTTPS 与http有什么不同

1、https是安全的 他不是绝对的安全

2、https传输数据要认证、保证数据的完整性

3、https与比http要慢、慢50%作用,耗电

4、http的端口80 https 443

17、集合有什么特点
·确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现

·互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。

·无序性:集合中的元素之间是无序的

18、数据库:什么是索引,知道哪些索引:
·数据库索引就是数据库的数据结构;一个索引是由表中某一列上的数据组成,并且这些数据存储在某个数据结构中

·聚集索引(主键索引):在数据库里面,所有行数都会按照主键索引进行排序。

非聚集索引:就是给普通字段加上索引。

联合索引:就是好几个字段组成的索引,称为联合索引。

19、
\t制表;\n换行

20、
一查多语法:对象.类名小写_set.all()

多查一语法:对象.外键名

21、ORM有什么作用,有什么好处,有什么坏处
作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

好处:简单方便灵活;

坏处:慢

22、request对象有什么属性和方法
request.path

request.COOKIES

request.GET

request.POST

23、一键多值用哪个方法取:
getlist()

24、七层网络协议:
物理层–数据链路层–网络层–传输层–会话层–表示层–应用层

25、Cookie和Session不同:
cookie 和session 的区别:

cookie数据存放在客户的浏览器上,session数据放在服务器上。

。cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

。session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

。单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

cookie 和session 的联系:

。session是通过cookie来工作的

。session和cookie之间是通过 C O O K I E [ P H P S E S S I D ] _COOKIE['PHPSESSID']来联系的,通过 _COOKIE[‘PHPSESSID’]可以知道session的id,从而获取到其他的信息。

在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。

26、端口有什么用:
IP:标记网络任何一台设备

PORT:标记进程的

27、模板哪些知识点:
字典,属性,方法

28、MySQL函数
max,min,sum,avg,count

29、进程、线程、协程:
进程是系统进行资源分配和调度的一个独立单位

线程是进程的一个实体,是CPU调度和分派的基本单位

协程是一种用户态的轻量级线程,协程的调度完全由用户控制

线程进程都是同步机制,而协程则是异步


*进程是资源分配的单位

*线程是操作系统调度的单位

*进程切换需要的资源很最大,效率很低

*线程切换需要的资源一般,效率一般(不考虑GIL)

*协程切换任务资源很小,效率高

*多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发

30、Django默认的转换器
str:匹配除了路径分隔符(/)之外的非空字符串,如果没有转换器,默认使用str作为转换器。

int:匹配0及正整数。

slug:匹配字母、数字以及横杠、下划线组成的字符串。

uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。

path:匹配任何非空字符串,包含了路径分隔符(/)

31、装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能

32、数据库三范式:
三范式

1NF:字段不可分;

2NF:有主键,非主键字段依赖主键;

3NF:非主键字段不能相互依赖;

解释:

1NF:原子性 字段不可再分,否则就不是关系数据库;

2NF:唯一性 一个表只说明一个事物;

3NF:每列都与主键有直接关系,不存在传递依赖;

33、DecimalField 与 FloatField 的区别:
1)float存在误差,decimal不存在(传进去是什么就是什么)

2)对数据要求精密比较高用decimal

p:float是单倍精度,double是双倍精度,decimal不存在误差

34、队列和栈特点
队列先进先出,栈先进后出

*从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同

35、Django中间件有哪些方法?分别在什么时候执行(Django)
process_request(self,request)

process_view(self, request, callback, callback_args, callback_kwargs)

process_template_response(self,request,response)

process_exception(self, request, exception)

process_response(self, request, response

1、process_request : 请求进来时,权限认证 。

2、process_view : 路由匹配之后,能够得到视图函数

3、process_exception : 异常时执行

4、process_template_responseprocess : 模板渲染时执行

5、process_response : 请求有响应时执行

36、字符串去掉两端空格的方法
strip

37、说一说你常见的状态码有哪些,分别代表什么意思
200成功

404未发现

403权限未允许

405不允许使用该方法

301永久重定向

302临时重定向

500服务器错误

38、DNS、TCP、DCP
DNS:把域名解析成IP的一种技术(域名服务器)

TCP:面向连接、每次内容都会一个响应,来确定消息是否到达、速度不如UDP快,

UDP:面向传输、容易消息丢失

39、虚拟环境有什么作用
就像几个互不联网的电脑

虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.

40、匿名函数表达式
lambda

41、varchar(20) varchar(50) / varchar和char
varchar(20)和(50)存储hello所占空间一样,但后者在排序时会消耗更多内存,

在早期 MySQL 版本中,50 代表字节数,现在代表字符数。


。char 表示定长,长度固定,varchar表示变长,即长度可变

。char如果插入的长度小于定义长度时,则用空格填充;

varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。

。char以空间换取时间效率;varchar以时间换空间。

。char 最多能存放的字符个数 255,和编码无关。

varchar 呢,最多能存放 65532 个字符。最大有效长度由最大行大小和使用的字符集确定。(整体最大长度是 65,532字节)

42、filter和get查询
get() // 获取一个单一obj

Filter() //返回一个Queryset

43、可变类型和不可变类型数据
可变数据类型:列表list和字典dict。

不可变数据类型:整型int、浮点型float、字符串型string和元组tuple。

琉佳理解:即可变类型赋值后可改变数据内容,id不变;不可变类型改变内容后id改变。

44、Mysql默认存储引擎
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB

45、查询集两大特性
惰性查询、缓存

46、什么是闭包
闭包就是能够读取其他函数内部变量的函数。

可以理解成“定义在一个函数内部的函数“。

在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

47、关闭转义有哪两种方式
1、过滤器 safe

2、标签autoescape

48、where 和having的区别
。本质的区别就是where筛选的是数据库表里面本来就有的字段,

而having筛选的字段是从前筛选的字段筛选的。

。having的原理是先select 然后从select出来的进行筛选。而where是先筛选在select。

。where子句中一般不使用聚合函数那种情况。

49、select from order by group by limit where排序
select from where group by order by limit

50、Django CSRF基于什么实现的,基于哪个方法实现的
它是基于中间件的,view方法

51、WSGI、uwsgi、uWSGI
WSGI是一种通信协议。

uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。?

uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

52、什么叫死锁、互斥锁
*死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程。

*互斥锁:只有当一个进程在进行资源的时候,进行上锁,可以保护资源,只有当他运行玩的时候,才会进行解锁。对数据的保护

猜你喜欢

转载自blog.csdn.net/fengzijiahui/article/details/106491523