首页 > 附答案 | 最强Python面试题之Python开发第二弹
头像
编程文青李狗蛋
发布于 08-08 16:16
+ 关注

附答案 | 最强Python面试题之Python开发第二弹

写在之前

大家好呀,我是帅蛋。

这里是帅蛋的【最强Python面试题】系列,面试八股文都在这里啦啦啦!

新的一周开始了,继续卷起来呀!今天依然是 Python 后台开发面试题,主要是 Django 专题,大家一定要记得点赞收藏呀!!!

顺便提一句,我所有和面试相关的内容都会放在#帅蛋的面试空间# 中,大家可以关注下这个话题~

我会尽我最大的努力帮助到大家哒!!!

主要内容

这些面试题是我结合自己的经验整理的,主要就是下面这 5 个专题:

  • Python 基础面试题
  • Python 进阶
  • Python 后台开发
  • 爬虫
  • 机器学习

已完成

Python 基础题

Python 进阶题

更新中

Python 后台开发

对每道面试题我都会附带详细的答案,有些我觉得重要的内容会详细讲解,虽然是面试八股文,我还是希望大家不是只“知其然”,更得“知其所以然”

关于更新频率,每天我会更新 10 道题左右,总共会有差不多 200 道。

无论是准备面试还是自己学习,这份面试题绝对值得你去看,去学习。

大家可以关注我,再关注我,使劲关注我,不要错过每天的更新~

以下是正文

Python 后台开发面试题第二弹,大家一定要记得点赞收藏,一起加油!

1、Django 创建项目的命令?

django-admin startproject 项目名称

python manage.py startapp 应用 app 名

2、Django 创建项目后,项目文件夹下的组成部分(对 mvt 的理解)?

项目文件夹下的组成部分:

manage.py 是项目运行的入口,指定配置文件路径。

与项目同名的目录,包含项目的配置文件。

___init.py 是一个空文件,作用是这个目录可以被当作包使用。

settings.py 是项目的整体配置文件。

urls.py 是项目的 URL 配置文件。

wsgi.py 是项目与 WSGI 兼容的 Web 服务器。

3、对 MVC,MVT 解读的理解?

M:Model,模型,和数据库进行交互

V:View,视图,负责产生 Html 页面

C:Controller,控制器,接收请求,进行处理,与 M 和 V 进行交互,返回应答。

图片说明

1 用户点击注按钮,将要注册的信息发送给网站服务器。

2 Controller 控制器接收到用户的注册信息,Controller 会告诉 Model 层将用户的注册信息保
存到数据

3 Model 层将用户的注册信息保存到数据

4 数据保存之后将保存的结果返回给 Model 模型

5 Model 层将保存的结果返回给 Controller 控制器

6 Controller 控制器收到保存的结果之后,或告诉 View 视图,view 视图产生一个 html 页面

7 View 将产生的 Html 页面的内容给了 Controller 控制器

8 Controller 将 Html 页面的内容返回给浏览器

9 浏览器接受到服务器 Controller 返回的 Html 页面进行解析展示

M:Model,模型,和 MVC 中的 M 功能相同,和数据库进行交互

V:view,视图,和 MVC 中的 C 功能相同,接收请求,进行处理,与 M 和 T 进行交互,返回应答

T:Template,模板,和 MVC 中的 V 功能相同,产生 Html 页面

2WUCNT.png

1 用户点击注册按钮,将要注册的内容发送给网站的服务器

2 View 视图,接收到用户发来的注册数据,View 告诉 Model 将用户的注册信息保存进数据

3 Model 层将用户的注册信息保存到数据库中

4 数据库将保存的结果返回给 Model

5 Model 将保存的结果给 View 视图

6 View 视图告诉 Template 模板去产生一个 Html 页面

7 Template 生成 html 内容返回给 View 视图

8 View 将 html 页面内容返回给浏览器

9 浏览器拿到 view 返回的 html 页面内容进行解析,展示

4、Django 中 models 利用 ORM 对 Mysql 进行查表的语句(多个语句)

字段查询

all():返回模型类对应表格中的所有数据

get():返回表格中满足条件的一条数据,如果查到多条数据,则抛异常:MultipleObjectsReturned,查询不到数据,则抛异常:DoesNotExist。

filter():参数写查询条件,返回满足条件 QuerySet 集合数据

条件格式:

模型类属性名__条件名=值

注意:此处是模型类属性名,不是表中的字段名

关于 filter 具体案例如下:

判等 exact

BookInfo.object.filter(id=1)
BookInfo.object.filter(id__exact=1)此处的__exact 可以省略

模糊查询 like

例:查询书名包含'传'的图书。contains

contains BookInfo.objects.filter(btitle__contains=’传’)

空查询 where 字段名 isnull

BookInfo.objects.filter(btitle__isnull=False)

范围查询 where id in (1,3,5)

BookInfo.objects.filter(id__in=[1,3,5])

比较查询 gt lt(less than) gte(equal) lte

BookInfo.objects.filter(id__gte=3)

日期查询

BookInfo.objects.filter(bpub_date__year = 1980)
BookInfo.objects.filter(bpub_date__gt = date(1980,1,1))

exclude:返回不满足条件的数据

BookInfo.objects.exclude(id=3)

F 对象

作用:用于类属性之间的比较条件。

from django.db.models import F
例:where bread > bcomment BookInfo.objects.filter(bread__gt =F(‘bcomment’))
例:BookInfo.objects.filter(bread__gt=F(‘bcomment’)*2)

Q 对象

作用:用于查询时的逻辑条件。可以对 Q 对象进行&|~操作。

from django.db.models import Q
BookInfo.objects.filter(id__gt=3, bread__gt=30)
BooInfo.objects.filter(Q(id__gt=3) & Q(bread__gt=3))
例:BookInfo.objects.filter(Q(id__gt=3) | Q(bread__gt=30))
例:BookInfo.objects.filter(~Q(id=3))

order_by 返回 QuerySet

作用:对查询结果进行排序

例: BookInfo.objects.all().order_by('id')
例: BookInfo.objects.all().order_by('-id')
例:BookInfo.objects.filter(id__gt=3).order_by('-bread')

聚合函数

作用:对查询结果进行聚合操作。

sum count max min avg

aggregate:调用这个函数来使用聚合。

from django.db.models import Sum,Count,Max,Min,Avg
例:BookInfo.objects.aggregate(Count('id'))

{'id__count': 5} 注意返回值类型及键名

例:BookInfo.objects.aggregate(Sum(‘bread’))

{‘bread__sum’:120} 注意返回值类型及键名

count 函数

作用:统计满足条件数据的数目。

例:统计所有图书的数目。

BookInfo.objects.all().count()

例:统计 id 大于 3 的所有图书的数目。

BookInfo.objects.filter(id__gt = 3).count()

模型类关系

一对多关系

例:图书类-英雄类

models.ForeignKey() 定义在多的类中。

2)多对多关系

例:新闻类-新闻类型类

models.ManyToManyField() 定义在哪个类中都可以。

3)一对一关系

例:员工基本信息类-员工详细信息类

models.OneToOneField() 定义在哪个类中都可以。

5、django 中间件的使用?

Django 在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:

1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件。

def __init__():
    pass

2.处理请求前:在每个请求上调用,返回 None 或 HttpResponse 对象。

def process_request(request):
    pass

3.处理视图前:在每个请求上调用,返回 None 或 HttpResponse 对象。

def process_view(request, view_func, view_args, view_kwargs):
    pass

4.处理模板响应前:在每个请求上调用,返回实现了 render 方法的响应对象。

def process_template_response(request, response):
    pass

5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回 HttpResponse 对象。

def process_response(request, response):
    pass

6.异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个 HttpResponse 对象。

def process_exception(request,exception):
    pass

6、Django 项目的优化?

这个答案 web 通用

(1) 优化数据库查询

(2) 代码优化

  • 简化代码

  • 更新或替代第三方软件包

  • 重构代码

7、谈一下你对 uWSGI 和 nginx 的理解?

uWSGI

uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。Nginx 中 HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换。WSGI 是一种 Web 服务器网关接口。它是一
个 Web 服务器(如 nginx,uWSGI 等服务器)与 web 应用(如用 Flask 框架写的程序)通信的一种
规范。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

(1) WSGI 是一种通信协议。

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

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

ngix

nginx 是一个开源的高性能的 HTTP 服务器和反向代理:

(1) 作为 web 服务器,它处理静态文件和索引文件效果非常高;

(2) 它的设计非常注重效率,最大支持 5 万个并发连接,但只占用很少的内存空间;

(3) 稳定性高,配置简洁;

(4) 强大的反向代理和负载均衡功能,平衡集群中各个服务器的负载压力应用。

8、说说 nginx 和 uWISG 服务器之间如何配合工作的?

首先浏览器发起 http 请求到 nginx 服务器,Nginx 根据接收到请求包,进行 url 分析,判断访问的资源类型。

如果是静态资源,直接读取静态资源返回给浏览器。

如果请求的是动态资源就转交给 uwsgi 服务器,uwsgi 服务器根据自身的 uwsgi 和 WSGI 协议,找到对应的 Django 框架,Django 框架下的应用进行逻辑处理后,将返回值发送到 uwsgi 服务器,然后 uwsgi 服务器再返回给 nginx,最后 nginx 将返回值返回给浏览器进行渲染显示给用户。

9、django 开发中数据库做过什么优化?

(1) 设计表时,尽量少使用外键,因为外键约束会影响插入和删除性能

(2) 使用缓存,减少对数据库的访问

(3) 在 orm 框架下设置表时,能用 varchar 确定字段长度时,就别用 text

(4) 可以给搜索频率高的字段属性,在定义时创建索引

(5) Django orm 框架下的 Querysets 本来就有缓存的

(6) 如果一个页面需要多次连接数据库,最好一次性取出所有需要的数据,减少对数据库的查询次数

(7) 若页面只需要数据库里某一个两个字段时,可以用 QuerySet.values()

(8) 在模板标签里使用 with 标签可以缓存 Qset 的查询结果

10、验证码过期时间怎么设置?

将验证码保存到数据库或 session,设置过期时间为 1 分钟,然后页面设置一个倒计时(一般是前端
js 实现 这个计时)的展示,一分钟过后再次点击获取新的信息。


以上就是今天的内容,我是帅蛋,我们明天见~

❤️ 欢迎关注我,有问题,找帅蛋,我最看不得别人迷茫!

❤️ 如果你觉得有帮助,希望爱学习的你不要吝啬三连击哟[点赞 + 收藏 + 评论]~

还有小小公众号 【编程文青李狗蛋】,聊聊迷茫吹吹牛皮~

全部评论

(6) 回帖
加载中...
话题 回帖

近期热帖

近期精华帖

热门推荐