一次可以面向百度的笔试

1 描述一下python的垃圾回收机制

垃圾回收机制 是Python内置的一个内存管理机制。
如果一个对象引用计数为0(没有被引用),那么它就会被立马回收掉。
针对循环引用的用到标记清除和分代回收。

2 ascii、unicode、utf-8、gbk 分别是什么?

ASCII: 只采用1个字节对应一个英文字符。
GBK: 采用1个字节对应一个英文字符,采用2个字节对应一个中文字符。
unicode: 采用2个字节对应一个字符,(无论是英文还是中文,都是采用2个字符)
utf-8:采用1个字节对应一个英文字符,采用3个字节对应一个中文字符。

3 三元表达式编写格式

value = true if condition else false

4 用一行代码实现数值交换

a,b = b,a

5 xrange 和 range 的区别

只有在python2中才有xrange和range
在python2中,range得到的是一个列表,xrange得到的是一个生成器对象

6 如何实现字符串的反转?如:name="张全蛋"请反转为name= " "

l = list('蛋全张')
l.reverse()
res = "".join(l)
print(res)

7 is 和==的区别

is:比较左右两个的id是否相等
==:比较左右两个的value值是否相等

8 下面代码的输出结果将是什么?

list = ['a', 'b', 'c', 'd', 'e']
print(list[10:])
[]

9 简述Python的深浅拷贝

浅拷贝不区分可变容器类型中的可变不可变类型. 对于可变类型共用一份内存地址, 对于不可变类型在没有修改之前共用一份内存地址

深拷贝对可变容器类型中的可变不可变类型. 对于可变类型创建一份新的内存地址, 对于不可变类型在没有修改之前任然共用一份内存地址

10 有用过with statement(语句)吗?它的好处是什么,自己实现一个(上下文管理器)

用过。

with语句会在嵌套的代码执行之后,自动关闭文件。这种做法的还有另一个优势就是,无论嵌套的代码是以何种方式结束的,它都关闭文件。


with open('a.txt', 'w') as f:
    f.write('Hello World!')

11 实现一个Singleton单例类,要求遵循基本语言编程规范(用尽量多的方式)

class Singleton(object):
    def __init__(self, *args, **kwargs):
        pass

    @classmethod
    def get_instance(cls, *args, **kwargs):
        # 利用反射,看看这个类有没有_instance属性
        if not hasattr(Singleton, '_instance'):
            Singleton._instance = Singleton(*args, **kwargs)
        return Singleton._instance


s1 = Singleton()  # 使用这种方式创建实例的时候,并不能保证单例
s2 = Singleton.get_instance()  # 只有使用这种方式创建的时候才可以实现单例
s3 = Singleton()
s4 = Singleton.get_instance()

print(id(s1), id(s2), id(s3), id(s4))

12 简述HTTP协议

HTTP就是Hyper Text Transfer Protocol(超文本传输协议)
用来规定服务端和浏览器之间的数据交互的格式...
四大特性:
	1.基于请求响应
	
	2.基于TCP/IP 作用与应用程序之上的协议
	
	3.无状态
		不保存用户的信息
			eg:一个人来了一千次  你都记不住 每次都当他如初见
			由于HTTP协议 是无状态的 所以后续出现了一些专门用来记录用户状态的技术:
				Cookie、Session、Token...
				
	4.无/短连接
		请求来一次 我响应一次 之后就再也没有任何链接和关系了
			长链接:双方建立连接后 默认不断开 websocket(后面讲项目的时候会讲)

13 HTTP协议状态码有什么用,列出你知道的HTTP协议的状态码,然后讲出他们都表示什么意思,301和302的区别

用一串简单的数字表示一些复杂的状态或者描述性信息

1xx	 服务端已经接收到了你的数据 正在处理 你可以继续提交额外的数据
    2xx	 服务端成功响应了你想要的数据(200 OK 请求成功)
    3xx	 重定向(当你在访问一个需要登录之后才能看的页面,会自动跳转到登录页面)
    4xx	 客户端错误,请求包含语法错误或无法完成请求
    	404:请求资源不存在
    	403:当前请求不合法 或者 不符合访问资源的条件
    5xx	 服务器错误,服务器在处理请求的过程中发生了错误(500,服务器炸了,机房着火了)


301适合永久重定向
302用来做临时跳转

14 什么是MTV?

MTV:Django号称是MTV模型
M:models
T:templates
V:views


Model(模型): 负责业务对象与数据库的对象(ORM)。

Template(模板):负责如何把页面展示给用户。

View(视图):负责业务逻辑,并在适当的时候调用Model和Template。

15 什么是CGI,FastCGI,WSGI,uWSGI,uwsgi

CGI:通用网关接口,一个标准,定义了客户端服务器之间如何传数据
FastCGI:让交互程序与Web服务器通信的协议,CGI的升级版 
WSGI:为Python定义的web服务器和web框架之间的接口标准
uWSGI:一个实现了WSGI的服务器
uwsgi:uWSGI自有的一个协议

16 django 对数据查询结果排序怎么做, 降序怎么做

升序
User.objects.all().order_by('id')

降序
User.objects.all().order_by('-id')

17 django 中 values 和 values_list 的区别?

values:返回每行数据为字典格式

values_list: 返回每行数据为元组格式

18 基于django使用ajax发送post请求时,有哪种方法携带csrftoken?

#1.后端将csrftoken传到前端,发送post请求时携带这个值发送
data: {
             csrfmiddlewaretoken: '{{ csrf_token }}'
        },
#2.获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端
 data: {
         csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()
         },
#3.cookie中存在csrftoken,将csrftoken值放到请求头中
headers:{ "X-CSRFtoken":$.cookie("csrftoken")},

19 django 路由系统中 name 的作用

1.根据name生成新的url
2.修改当前url(起别名)

20 django 的 Model 中的 ForeignKey 字段中的 on_delete 参数有什么作用

级联删除,数据库中其他表中的相关联的数据也会被删除

21 django 中 filter 和 exclude 的区别

1. filter :将满足条件的数据提取出来,返回一个新的 QuerySet
2. exclude :排除满足条件的数据,返回一个新的 QuerySet

22 简述 django FBV 和 CBV?

FBV(function base views) 就是在视图里使用函数处理请求。

CBV(class base views) 就是在视图里使用类处理请求。

23 简述django中间件几个方法及其应用场景?

process_request() 发送请求
process_view() 执行完 request 预处理函数并确定待执行的view之后,但在view函数实际执行之前。
process_template_response() 返回一个实现了render方法的响应对象。
process_exception() 收集错误信息,
process_response() 返回 HttpResponse 对象。

24 列举 django orm 中你了解的所有方法?

all()	查询所有结果
filter(**kwargs)	它包含了与所给筛选条件相匹配的对象。获取不到返回None
get(**kwargs)	返回与所给筛选条件相匹配的对象,返回结果有且只有一个。
exclude(**kwargs)	它包含了与所给筛选条件不匹配的对象
order_by(*field)	对查询结果排序
reverse()	对查询结果反向排序
count()	返回数据库中匹配查询(QuerySet)的对象数量
first()	返回第一条记录
last()	返回最后一条记录
exists()	如果QuerySet包含数据,就返回True,否则返回False
values(*field)	返回一个ValueQuerySet
values_list(*field)	它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
distinct()	从返回结果中剔除重复纪录

25 什么是反向解析?

定义url时,需要为include定义namespace属性,为url定义name属性
无论url怎么改变,只要视图函数的名称不变,模板都可以反向解析到该视图函数。

26 Django对数据查询结果排序怎么做,降序怎么做,查询大于某个字段怎么做?

升序:User.objects.all().order_by('id')

降序:User.objects.all().order_by('-id')

大于某个字段:filter(字段名_gt=值)

27 描述cookie,session,token

cookie:存储在浏览器中的用户数据
session:服务器用于验证用户信息的身份标识
token:无状态、可扩展的身份验证

28 简述Django下的(内建的)缓存机制?

浏览器第一次发出请求时,cache会缓存数据到内存中,设置header头部。
再次发送请求时,如果缓存比较新,则会重新请求数据,
如果缓存未过期,就直接返回给客户端。

29 列出你知道的django中models字段类(如:AutoField)

BooleanField()  布尔型字段,默认的表单窗口部件是CheckBoxInput

CharField()  字符型字段,默认的表单窗口部件是TextInput。该字段类型有一个必需参数:max_length  在数据库水平限定了字符串最大长度

DateField()  日期字段,字段的值是python中datetime.date的实例,

DateTimeField()  日期和时间字段,值为datetime.datetime实例。默认的表单窗口以及可选参数同上。

DecimalField()  混合精度的小数型数字字段。

EmailField(max_length=254, **options)  邮件字段,使用EmailValidator进行验证

FileField(upload_to=None, max_length=100, **options)  文件上传字段。

FloatField()  浮点字段,默认的表单窗口部件是NumberInput。和DecimalField经常混淆不清,

ImageField() 图像字段。继承了FileField的所有属性和方法。而且还能自动验证上传的对象是否为合法的图像。

IntegerField  整形字段。

TextField()   与CharField类似,但一般用来存储体积较大的文本。

TimeField(auto_now=False, auto_now_add=False, **options)   时间字段,其值为datetime.time实例

30 (编码题)用django实现,图书的增,删,查

1 需要登陆,未登陆只能查看,登陆后可以删,增
2 通过session实现登陆功能
3 在中间件中控制未登陆跳转到登陆页面
4 不要求页面好看,流程走通即可
原文地址:https://www.cnblogs.com/xuexianqi/p/13210159.html