Python后端基础面试题

1.NGINX正向代理,反向代理,负载均衡

正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

反向代理,多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源是明确的,但是请求具体由哪台服务器处理的并不明确了
反向代理主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!

负载均衡
反向代理中,服务器按照一定的规则分发给后端服务器,将服务器接收到的请求按照规则分发的过程叫做负载均衡
负载均衡的调度算法:权重轮训,ip_hash,url_hash

2.nginx配置

server {
    listen       80;
    server_name  www.111.com;
    location / {
        include uwsgi_params;      # 将uwsgi参数添加进nginx
        uwsgi_pass 0.0.0.0:8000;   # 反向代理转发请求给uwsgi 
    }
}

location /static {
    alias  /opt/crmstatic/;
}

3.django聚合查询,分组,F,Q

聚合查询
aggregate()是QuerySet 的一个终止子句,它返回一个包含一些键值对的字典。
print(models.Book.objects.all().aggregate(Avg('price'))) 
# {'price__avg': 12.5}
print(models.Book.objects.all().aggregate(a=Avg('price'))) 
# {'a': 12.5}

分组查询
annotate()为调用的QuerySet中每一个对象都生成一个独立的统计值(统计方法用聚合函数),annotate前面的values作为分组的依据,不写values默认按照id来分组
models.Book.objects.values('publish__id').annotate(a=Avg('price'))
# <QuerySet [{'publish__id': 1, 'a': 12.5},
                        # {'publish__id': 2, 'a': 12.0}, 
                        # {'publish__id': 3, 'a': 13.0}]>
F查询
可以在查询中引用字段,用来比较两个字段,还可以对F()对象加减乘除
也可以通过F函数进行修改字段的操作

Q查询
与或非操作

4.django生命周期

wsgiref(web server)接收用户请求,并进行初次封装
中间件
url路由匹配
视图函数 -- 数据库 -- 模板渲染
中间件
wsgiref返回响应

5.djangoORM中get和filter的区别

相同点,都可以加筛选条件
get 返回model对象,而且只有一个,超过一个或者没有报错
filter 返回queryset类型,取不到返回[]

6.css清除浮动

1. 固定高度:在父标签里面加一个其他的标签
2. 伪元素清除法:在标签后面加一个内容为空的块级标签,加上clear: both;
3. overflow:hidden

7.wsgi和uWSGI的区别

wsgi是一种通信协议,介于Web应用程序(Web框架)与Web服务器之间交互的规范
uwsgi是一种通信协议,是uWSGI独有的协议
uWSGI是一个web服务器,实现了WSGI、uwsgi、http协议等

浏览器 <---> web服务器 <-wsgi-> 框架

8.实例方法,类方法,静态方法

实例方法

    定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);

    调用:只能
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值