Python-前端框架面试题
Posted liuxiangpy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-前端框架面试题相关的知识,希望对你有一定的参考价值。
第1章 前端、框架(155题)
1.1 谈谈你对http协议的认识。
- 谈谈你对websocket协议的认识。
注意: WebSocket
实际上指的是一种协议,与我们熟知的 Http
协议是同等协议栈的一个网络协议。用网络模型结构来解释的话, WebSocket
和 Http
协议都属于 应用层协议,两者都基于传输层协议 TCP
协议。
1.2 什么是magic string ?
1.3 如何创建响应式布局?
1.4 你曾经使用过哪些前端框架?
vue
1.5 什么是ajax请求?并使用jQuery和XMLHttpRequest对象实现一个ajax请求。
参考链接:https://www.cnblogs.com/sdgf/p/4765151.html
1.6 如何在前端实现轮训?
var xhr = new XMLHttpRequest();
setInterval(function(){
xhr.open(‘GET’,’/user’);
xhr.onreadystatechange = function(){
};
xhr.send();
},1000)
1.7 如何在前端实现长轮训?
function ajax(){
var xhr = new XMLHttpRequest();
xhr.open(‘GET’,’/user’);
xhr.onreadystatechange = function(){
ajax();
};
xhr.send();
}
1.8 vuex的作用?
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态.
1.9 vue中的路由的拦截器的作用?
ue-resource的interceptors拦截器的作用正是解决此需求的妙方。在每次http的请求响应之后,如果设置了拦截器如下,会优先执行拦截器函数,获取响应体,然后才会决定是否把response返回给
then进行接收。那么我们可以在这个拦截器里边添加对响应状态码的判断,来决定是跳转到登录页面还是留在当前页面继续获取数
1.10 axios的作用?
- axios是对ES6 Promise模式处理异步操作的封装列举vue的常见指令。
- 简述jsonp及实现原理?
1.11 什么是cors ?
CORS是一个w3c标准,全称是"跨域资源共享"(Cross-origin resource sharing),但一个请求url的协议,域名,端口三者之间任意与当前页面地址不同即为跨域.它允许浏览器向跨源服务器发送XMLHttpRequest请求,从而克服AJAX只能同源使用的限制.
1.12 列举Http请求中常见的请求方式?
OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT
1.13 列举Http请求中的状态码?
1xx:消息
100服务器仅接收到部分消息,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求
103用于PUT或者POST请求恢复失败时的恢复请求建议。
2xx:成功
200:请求成功
3xx:重定向
300:多重选择,链表列表,用户可以选择某链接达到目的地,最多选五个地址
301:所有页面已经转移至新的URL
302:所有的页面已经临时转移至新的URL
4xx:客户端有错误
400:因为语法错误服务器未能解析
401:合法请求,但对被请求页面的访问禁止,因为被请求的页面需要身份验证,客户端没有提供或者身份验证失败
404:服务器无法找到被请求的页面
5xx: 服务器错误
500:请求未完成,服务器遇到不可预知的情况
501:请求未完成,服务器不支持所请求的功能,或者服务器无法完成请求的功能
502:请求未完成,服务器充当网关或者代理的角色,从上游服务器收到一个无效的响应
503:服务器当前不可用
504:网关超时。服务器充当网关或者代理的角色时,未能从上游服务器获得一个及时的响应
505:不支持请求中指明的HTTP协议版本
511:用户需要提供身份证来获取网络访问入口
1.14 列举Http请求中常见的请求头?
accept:浏览器通过这个头告诉服务器,它所支持的类型
Accept-Charset:浏览器通过这个头告诉服务器,它支持那种字符集
Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
host:浏览器通过这个头告诉服务器,想访问那台主机
Referer:浏览器通过这个头告诉服务器客户机是从哪个页面来的,防盗链
Connection:浏览器通过这个头告诉服务器,请求完成后是断开连接还是何持连接
- 看图写结果:
- 看图写结果:
- 看图写结果:
- 看图写结果:
- 看图写结果:
- 看图写结果:
1.15 django、flask、tornado框架的比较?
django:大而全
flask:轻量级,第三方库多
tornado:天生异步,功能少
1.16 什么是wsgi?
wsgi全称是"Web Server Gateway Interfacfe",web服务器网关接口,wsgi在python2.5中加入,是web服务器和web应用的标准接口,任何实现了该接口的web服务器和web应用都能无缝协作。
1.17 django请求的生命周期?
访问一个URL首先经过uwsgi>中间件>路由>视图>model or 模板>然后返回一个respone
1.18 列举django的内置组件?
Admin是对model中对应的数据表进行增删改查提供的组件
model组件:负责操作数据库
form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示
ModelForm组件即用于数据库操作,也可用于用户请求的验证
1.19 列举django中间件的5个方法?以及django中间件的应用场景?
.process_request : 请求进来时,权限认证
.process_view : 路由匹配之后,能够得到视图函数
.process_exception : 异常时执行
.process_template_responseprocess : 模板渲染时执行
.process_response : 请求有响应时执行场景:ip限制,黑白名单,URL访问过滤,缓存
1.20 简述什么是FBV和CBV?
FBV和CBV本质是一样的,基于函数的视图叫做FBV,基于类的视图叫做CBV
在python中使用CBV的优点:
- .提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
- .可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
1.21 django的request对象是在什么时候创建的?
class WSGIHandler(base.BaseHandler):
-------request = self.request_class(environ)
请求走到WSGIHandler类的时候,执行call方法,将environ封装成了request
1.22 如何给CBV的程序添加装饰器?
1、给方法加: @method_decorator(check_login) def post(self, request): ...
2、给dispatch加: @method_decorator(check_login) def dispatch(self, request, *args, **kwargs): ...
3、给类加: @method_decorator(check_login, name="get") @method_decorator(check_login, name="post") class HomeView(View): ...
1.23 列举django orm 中所有的方法(QuerySet对象的所有方法)
<1> all(): 查询所有结果
<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象。获取不到返回None
<3> get(**kwargs): 返回与所给筛选条件相匹
配的对象,返回结果有且只有一个。 如果符合筛选条件的对象超过一个或者没有都会抛出错误。 <4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> order_by(*field): 对查询结果排序
<6> reverse(): 对查询结果反向排序
<7> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<8> first(): 返回第一条记录
<9> last(): 返回最后一条记录
<10> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<11> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的 并不是一系 model的实例化对象,而是一个可迭代的字典序列
<12> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<13> distinct(): 从返回结果中剔除重复纪
1.24 only和defer的区别?
#only:从数据库中只取指定字段的内容
#defer:指定字段的内容不被检索
1.25 select_related和prefetch_related的区别?
前提:有外键存在时,可以很好的减少数据库请求的次数,提高性能
select_related通过多表join关联查询,一次性获得所有数据,只执行一次SQL查询
prefetch_related分别查询每个表,然后根据它们之间的关系进行处理,执行两次查询
1.26 filter和exclude的区别?
两者取到的值都是QuerySet对象,filter选择满足条件的,exclude:排除满足条件的.
1.27 列举django orm中三种能写sql语句的方法。
1.使用execute执行自定义的SQL
直接执行SQL语句(类似于pymysql的用法)
# 更高灵活度的方式执行原生SQL语句
from django.db import connection
cursor = connection.cursor()
cursor.execute("SELECT DATE_FORMAT(create_time, ‘%Y-%m‘) FROM blog_article;")
ret = cursor.fetchall()
print(ret)
2.使用extra方法 :queryset.extra(select={"key": "原生的SQL语句"})
3.使用raw方法
1.执行原始sql并返回模型
2.依赖model多用于查询
1.28 django orm 中如何设置读写分离?
手动:在使用数据库时,通过.using(db_name)
来手动指定要使用的数据库
自动读写分离:通过配置数据库路由,来自动实现,这样就不需要每次读写都手动指定数据库了。数据库路由中提供了四个方法。这里这里主要用其中的两个:def db_for_read()
决定读操作的数据库,def db_for_write()
决定写操作的数据库
1.29 F和Q的作用?
#F:对数据本身的不同字段进行操作,例如:比较和更新
#Q:用户构造复杂的查询条件如:&|操作
1.30 values和values_list的区别?
values返回的是一个字典
values_list 返回的是一个元组
1.31 如何使用django orm批量创建数据?
#bulk_create()
#objs=[models.Book(title="图书{}".format(i+15)) for i in range(100)]
#models.Book.objects.bulk_create(objs)
1.32 django的Form和ModeForm的作用?
Form:
在前端生成HTML代码
对数据有效校验
返回校验信息并展示
保留上次输入的内容
ModeForm:
根据模型类生成form组件,并且可以操作数据库
1.33 django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。
#1.重写构造函数
def def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")
#2.利用ModelChoiceField字段,参数为queryset对象
1.34 django的Model中的ForeignKey字段中的on_delete参数有什么作用?
#删除关联表中的数据时,当前表与其关联的field的操作
#Django2.0后,表与表之间关联的时候,必须要写on_delete参数,否则会报错
1.35 django中csrf的实现机制?
#第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;
#第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;Cookies:{csrftoken:xxxxx}
#第三步:后端校验前端请求带过来的token和SESSION里的token是否一致;
1.36 django如何实现websocket?
安装插件dwebsocket
1.37 基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?
#1、后端将csrftoken传到前端,发送post请求时携带这个值发送
data {
csrfmiddlewaretoken:”{{ csrf_token }}”
}
#2、获取form中隐藏标签的csrftoken的值,加入到请求数据中传给后端
data:{
csrfmiddlewaretoken:$(‘[name=”csrfmiddlewaretoken”]’).val()
},
#3、cookie中存在csrftoken,将csrftoken值放到请求头中
headers:{“X-CSRFtoken”:$.cookie(“csrftoken”)}
1.38 django中如何实现orm表中添加数据时创建一条日志记录。
pass
1.39 django缓存如何设置?
# 全站缓存
MIDDLEWARE_CLASSES = (
‘django.middleware.cache.UpdateCacheMiddleware’, #第一
‘django.middleware.common.CommonMiddleware‘,
‘django.middleware.cache.FetchFromCacheMiddleware’, #最后
)
# 视图缓存
from django.views.decorators.cache import cache_page
import time
@cache_page(15) #超时时间为15秒
def index(request):
t=time.time() #获取当前时间
return render(request,"index.html",locals())
# 模板缓存
{% load cache %}
<h3 style="color: green">不缓存:-----{{ t }}</h3>
{% cache 2 ‘name‘ %} # 存的key
<h3>缓存:-----:{{ t }}</h3>
{% endcache %}
1.40 django的缓存能使用redis吗?如果可以的话,如何配置?
#1.安装 pip install django-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.根据名字去连接池中获取连接
from django_redis import get_redis_connection
conn = get_redis_connection("default")
1.41 django路由系统中name的作用?
类似于给URL取一个别名,方便视图调用的时候,进行解耦合
1.42 django的模板中filter和simple_tag的区别?
filter:只可以传两个参数 语法{{参数|filter函数名:参数2}}
simple_tag:可以传入不限量的参数 语法{% simple_tag函数名 参数1 参数2 %}
1.43 django-debug-toolbar的作用?
它是Django的第三方包工具,给Django扩展了调试功能,它包括了查看执行sql语句,db查询次数,request,headers,调试概览等
1.44 django中如何实现单元测试?
使用Python的unittest模块,这个模块使用基于类的方法来定义测试。类名为
Django.test.TestCase,继承于Python的unittest.TestCase.
1.45 解释orm中 db first 和 code first的含义?
#数据持久化的方式
db first基于已存在的数据库,生成模型
code first基于已在的模型,生成数据库库
1.46 django中如何根据数据库表生成model中的类?
1)在setting在配置中设置要连接的数据库
2)生成model模型文件
Python manage.py inspectdb
3)模型文件导入models中
python manage.py inspectdb > app/models.py
1.47 使用orm和原生sql的优缺点?
#1.orm的开发速度快,操作简单。使开发更加对象化
#执行速度慢。处理多表联查等复杂操作时,ORM的语法会变得复杂
#2.sql开发速度慢,执行速度快。性能强
1.48 简述MVC和MTV
#MVC软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)
#Model:负责业务对象与数据库的映射(ORM)
#View:负责与用户的交互
#Control:接受用户的输入调用模型和视图完成用户的请求
#Django框架的MTV设计模式借鉴了MVC框架的思想,三部分为:Model、Template和View
#Model(模型):负责业务对象与数据库的对象(ORM)
#Template(模版):负责如何把页面展示给用户
#View(视图):负责业务逻辑,并在适当的时候调用Model和Template
#此外,Django还有一个urls分发器,
#它将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
1.49 django的contenttype组件的作用?
这个组件保存了项目所有app和model的对应关系,每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动增加一条记录
当一张表和多个表的fk关联,并且多个fk只能选择其中一个或者其中N个,可以利用contentTypes
1.50 谈谈你对restfull 规范的认识?
#首先restful是一种软件架构风格或者说是一种设计风格,并不是标准,它只是提供了一组设计#原则和约束条件,主要用于客户端和服务器交互类的软件。
#就像设计模式一样,并不是一定要遵循这些原则,而是基于这个风格设计的软件可以更简洁,更#有层次,我们可以根据开发的实际情况,做相应的改变。
#它里面提到了一些规范,例如:
#1.restful 提倡面向资源编程,在url接口中尽量要使用名词,不要使用动词
#2、在url接口中推荐使用Https协议,让网络接口更加安全
#https://www.bootcss.com/v1/mycss?page=3
#(Https是Http的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,
#因此加密的详细内容就需要SSL(安全套接层协议))
#3、在url中可以体现版本号
#https://v1.bootcss.com/mycss
#不同的版本可以有不同的接口,使其更加简洁,清晰
#4、url中可以体现是否是API接口
#https://www.bootcss.com/api/mycss
#5、url中可以添加条件去筛选匹配
#https://www.bootcss.com/v1/mycss?page=3
#6、可以根据Http不同的method,进行不同的资源操作
#(5种方法:GET / POST / PUT / DELETE / PATCH)
#7、响应式应该设置状态码
#8、有返回值,而且格式为统一的json格式
#9、返回错误信息
#返回值携带错误信息
#10、返回结果中要提供帮助链接,即API最好做到Hypermedia
#如果遇到需要跳转的情况 携带调转接口的URL
ret = {
code: 1000,
data:{
id:1,
name:‘小强‘,
depart_id:http://www.luffycity.com/api/v1/depart/8/
}
}
1.51 接口的幂等性是什么意思?
#1.是系统的接口对外一种承诺(而不是实现)
#2.承诺只要调用接口成功,外部多次调用对系统的影响都是一致的,不会对资源重复操作
1.52 什么是RPC?
#1.RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。
#2.首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。
#2.在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,
#3.最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
1.53 Http和Https的区别?
http是没有加密的协议
https是:http+ssl实现证书的加密
1.54 为什么要使用django rest framework框架?
#能自动生成符合 RESTful 规范的 API
#1.在开发REST API的视图中,虽然每个视图具体操作的数据不同,
#但增、删、改、查的实现流程基本一样,这部分的代码可以简写
#2.在序列化与反序列化时,虽然操作的数据不同,但是执行的过程却相似,这部分的代码也可以简写
#REST framework可以帮助简化上述两部分的代码编写,大大提高REST API的开发速度
1.55 django rest framework框架中都有那些组件?
#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中获取版本,根据版本不同 做不同处理
1.56 django rest framework框架中的视图都可以继承哪些类?
#class View(object):
#class APIView(View): 封装了view,并且重新封装了request,初始化了各种组件
#class GenericAPIView(views.APIView):
#1.增加了一些属性和方法,如get_queryset,get_serializer
#class GenericViewSet(ViewSetMixin, generics.GenericAPIView)
#父类ViewSetMixin 重写了as_view,返回return csrf_exempt(view)
#并重新设置请求方式与执行函数的关系
#class ModelViewSet(mixins.CreateModelMixin,
# mixins.RetrieveModelMixin,
# mixins.UpdateModelMixin,
# mixins.DestroyModelMixin,
# mixins.ListModelMixin,
# GenericViewSet):pass
#继承了mixins下的一些类,封装了list,create,update等方法
#和GenericViewSet
1.57 简述 django rest framework框架的认证流程。
#1.用户请求走进来后,走APIView,初始化了默认的认证方法
#2.走到APIView的dispatch方法,initial方法调用了request.user
#3.如果我们配置了认证类,走我们自己认证类中的authentication方法
1.58 django rest framework如何实现的用户访问频率控制?
#使用IP/用户账号作为键,每次的访问时间戳作为值,构造一个字典形式的数据,存起来,每次访问时对时间戳列表的元素进行判断,
#把超时的删掉,再计算列表剩余的元素数就能做到频率限制了
#匿名用户:使用IP控制,但是无法完全控制,因为用户可以换代理IP登录用户:使用账号控制,但是如果有很多账号,也无法限制
- Flask框架的优势?
- Flask框架依赖组件?
- Flask蓝图的作用?
- 列举使用过的Flask第三方组件?
- 简述Flask上下文管理流程?
- Flask中的g的作用?
- Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?
- 为什么要Flask把Local对象中的的值stack 维护成一个列表?
- Flask中多app应用是怎么完成?
- 在Flask中实现WebSocket需要什么组件?
- wtforms组件的作用?
- Flask框架默认session处理机制?
- 解释Flask框架中的Local对象和threading.local对象的区别?
- Flask中 blinker 是什么?
- SQLAlchemy中的 session和scoped_session 的区别?
- SQLAlchemy如何执行原生SQL?
- ORM的实现原理?
- DBUtils模块的作用?
28. 以下SQLAlchemy的字段是否正确?如果不正确请更正:
1 2 3 4 5 6 7 8 9 10 11 |
from datetime import datetime ?from sqlalchemy.ext.declarative import declarative_base ?from sqlalchemy import Column, Integer, String, DateTime ?? Base = declarative_base()?? class UserInfo(Base):? __tablename__ = ‘userinfo‘? id = Column(Integer, primary_key=True, autoincrement=True)? name = Column(String(64), unique=True)? ctime = Column(DateTime, default=datetime.now()) |
- SQLAchemy中如何为表设置引擎和字符编码?
- SQLAchemy中如何设置联合唯一索引?
- 简述Tornado框架的特点。
- 简述Tornado框架中Future对象的作用?
- Tornado框架中如何编写WebSocket程序?
- Tornado中静态文件是如何处理的??如: <link href="{{static_url("commons.css")}}" rel="stylesheet" />
- Tornado操作MySQL使用的模块?
- Tornado操作redis使用的模块?
- 简述Tornado框架的适用场景?
- git常见命令作用:
- 简述以下git中stash命令作用以及相关其他命令。
- git 中 merge 和 rebase命令 的区别。
- 公司如何基于git做的协同开发?
- 如何基于git实现代码review?
- git如何实现v1.0 、v2.0 等版本的管理?
- 什么是gitlab?
- github和gitlab的区别?
- 如何为github上牛逼的开源项目贡献代码?
- git中 .gitignore文件的作用?
- 什么是敏捷开发?
- 简述 jenkins 工具的作用?
- 公司如何实现代码发布?
- 简述 RabbitMQ、Kafka、ZeroMQ的区别?
- RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?
- RabbitMQ如何对消息做持久化?
- RabbitMQ如何控制消息被消费的顺序?
- 以下RabbitMQ的exchange type分别代表什么意思?如:fanout、direct、topic。
- 简述 celery 是什么以及应用场景?
- 简述celery运行机制。
- celery如何实现定时任务?
- 简述 celery多任务结构目录?
- celery中装饰器 @app.task 和 @shared_task的区别?
- 简述 requests模块的作用及基本使用?
- 简述 beautifulsoup模块的作用及基本使用?
- 简述 seleninu模块的作用及基本使用?
- scrapy框架中各组件的工作流程?
- 在scrapy框架中如何设置代理(两种方法)?
- scrapy框架中如何实现大文件的下载?
- scrapy中如何实现限速?
- scrapy中如何实现暂定爬虫?
- scrapy中如何进行自定制命令?
- scrapy中如何实现的记录爬虫的深度?
- scrapy中的pipelines工作原理?
- scrapy的pipelines如何丢弃一个item对象?
- 简述scrapy中爬虫中间件和下载中间件的作用?
- scrapy-redis组件的作用?
- scrapy-redis组件中如何实现的任务的去重?
- scrapy-redis的调度器如何实现任务的深度优先和广度优先?
- 简述 vitualenv 及应用场景?
- 简述 pipreqs 及应用场景?
- 在Python中使用过什么代码检查工具?
- 简述 saltstack、ansible、fabric、puppet工具的作用?
- B Tree和B+ Tree的区别?
- 请列举常见排序并通过代码实现任意三种。
- 请列举常见查找并通过代码实现任意三种。
- 请列举你熟悉的设计模式?
- 有没有刷过leetcode?
- 列举熟悉的的Linux命令。
- 公司线上服务器是什么系统?
- 解释 PV、UV 的含义?
- 解释 QPS的含义?
- uwsgi和wsgi的区别?
- supervisor的作用?
- 什么是反向代理?
- 简述SSH的整个过程。
- 有问题都去那些找解决方案?
- 是否有关注什么技术类的公众号?
- 最近在研究什么新技术?
- 是否了解过领域驱动模型?
以上是关于Python-前端框架面试题的主要内容,如果未能解决你的问题,请参考以下文章