目录
- 
   
- 一:简述你对Restful风格的理解:
 - 二:概述python的内存管理机制:
 - 三: cookie 与 Session的区别:
 - 四:你了解web开发中存在哪些安全漏洞?
 - 五:Django的中间件:
 - 六:Django与Flask的区别?
 - 七:你在哪里用到装饰器?
 - 八:乐观锁与悲观锁的区别?
 - 九:单例生效的是线程还是进程?假设有20个进程连接MYSQL,单例状态下是有多少个连接?
 - 十:lambda与map函数的使用:
 - 十一:python中的类方法,实例方法,静态方法
 - 十二: 类属性和实例属性的区别?
 - 十三:你的项目中uwsgi部署的时候配置的进程是多少?你们在设计的时候考虑多少并发量?
 - 十四:你项目上线了吗?有没有域名?
 - 十五: 进程之间是如何通信的呢?(关小工,辛嫂)
 - 十六: `__init__`方法和`__new__`方法的区别?
 - 十七: 生成器和迭代器的区别是什么?
 - 十八: 虚拟机(Docker)的网络配置有哪些?
 - 十九: 查看进程的命令,磁盘,端口
 - 二十:死锁产生的原因是什么?条件又是什么?
 - 二十一:请求报文和响应报文的格式:
 - 二十三:python程序的执行原理:
 - 二十四:python如何实现私有的呢?
 - 二十五:数据库的三范式:
 - 二十六: Django有哪些模块?
 
 
一:简述你对Restful风格的理解:
1: 协议 :
- http:
 - https:
 
2:域名:
- 1:将api部署在专用域名下:http://api.example.com
 - 2: 将api部署在主域名下: http://www.example.com/api/
 
3:版本:
- 版本号放在url中:http://www.example.com/api/1.0
 
4:路径:
- 路径要使用名词复数(数据库表的复数): http://www.example.com/api/1.0/goods
 
5:请求方式(6种):
- GET : 获取资源
 - POST: 新增资源
 - PUT:更新资源
 - PATCH: 更新部分资源
 - DELETE : 删除资源
 - OPTIONS : 预检请求
 
6: 请求参数:
- ?加键值对的形式: 多个可以使用&进行连接。
 
7: 状态码:
- 200 : 正常返回响应。
 - 201: 新建、修改数据成功。
 - 202: 请求进入后台排队。
 - 400:请求有误。
 - 401: 权限不足。
 - 403: 访问被禁止。
 - 404: 找不到。
 - 406: 请求格式不正确。
 - 500:服务器内部错误。
 
二:概述python的内存管理机制:
链接地址:https://blog.csdn.net/zx870121209/article/details/81363311
- 1:引用计数:对于一个对象,每一个变量引用他,都会让这个对象中的引用计数的属性增加1,反之则减一,当引用计数变成0的时候,则进行销毁。
 - 2:垃圾回收(标记—清除,分代回收):
 - 2.1:标记清除:对于循环引用的对象,例如A引用了B,B也引用了A,那么我们让B的引用减一,则B应该被销毁,由于B也引用了A,A也应该被销毁,则表示A,B之间是循环引用,则一起被销毁。
 - 2.2:分代回收: 存活时间越久的对象越不可能是垃圾,因此会相应减少对这些存活时间比较久的对象的扫面,从而也提高python的效率。
 - 3: 内存池:

 
三: cookie 与 Session的区别:
- 1: 存储位置不同: cookie存储在浏览器,session存储在服务器。
 - 2:存储大小不同,cookie存储受限,session由于存储在服务器端,因此不受限。
 - 3:安全性不同:cookie不如session安全。
 
四:你了解web开发中存在哪些安全漏洞?
- 1: CSRF利用cookie进行跨域伪造攻击。
 - 2:SQl注入。
 
更多地址:https://www.cnblogs.com/wuhuacong/archive/2013/04/15/3022011.html
五:Django的中间件:
- 1:中间件作用:在视图之前拦截请求,在视图返回响应之后,处理响应。
 - 2:你用过Django哪些中间件?
 
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  #一些安全设置,比如xss脚本过滤
    'django.contrib.sessions.middleware.SessionMiddleware',#session支持中间件,加入这个中间件,会在数据库中生成一个django_session的表。
    'django.middleware.common.CommonMiddleware',   #通用中间件,会处理一些url
    'django.middleware.csrf.CsrfViewMiddleware',   #跨域请求伪造中间件,加入这个中间件,在提交表单的时候会必须加入csrf_token,cookie中也会生成一个名叫csrftoken的值,也会在header中加入一个HTTP_X_CSRFTOKEN的值来放置CSRF攻击。
    'django.contrib.auth.middleware.AuthenticationMiddleware',  #用户授权中间件。他会在每个HttpRequest对象到达view之前添加当前登录用户的user属性,也就是你可以在view中通过request访问user。
    'django.contrib.messages.middleware.MessageMiddleware',#消息中间件。展示一些后台信息给前端页面。如果需要用到消息,还需要在INSTALLED_APPS中添加django.contrib.message才能有效。如果不需要,可以把这两个都删除。
    'django.middleware.clickjacking.XFrameOptionsMiddleware',#防止通过浏览器页面跨Frame出现clickjacking(欺骗点击)攻击出现。
    'A_orm.middlewares.auth.AuthenticationMiddleware',
]
 
- 3:你自己写过中间件吗?
没有写过中间件,但是会写,首先定义一个类,继承MiddlewareMixin,然后重写
中间件5个重写函数:
process_request(请求之前)
process_view(视图之前)
process_template_response(处理每个模板响应之前)
process_response(返回响应之后)
process_exception(抛出异常) 
六:Django与Flask的区别?
- 1:Django的MVT架构、自带ORM、强大的Admin后台管理、自带数据库、还自带开发测试用的服务器。
 - 2:Flask 本身相当于一个内核, 主要实现了路由分发和模板渲染功能, 分别集成自 Werkzeug 和 Jinja2模块包, 这两个也是Flask框架的核心。
 
七:你在哪里用到装饰器?
@celery_app.task(name=‘ccp_send_sms_code’)给我们的task取一个名字。
八:乐观锁与悲观锁的区别?
九:单例生效的是线程还是进程?假设有20个进程连接MYSQL,单例状态下是有多少个连接?
答: 单例生效的是线程,对于进程是不起作用的,因为每一个进程都有自己的分配空间,如果有20个进程通过单例连接数据库,则会有20个连接。如果是多线程情况下,需要使用线程锁,保证一个类只有一个实例。
十:lambda与map函数的使用:
#1.常规方法
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9,10]
>>> def square(x):
return x**2
>>> list(map(square,lst))     #Python2.x使用map(square,lst)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#2.使用lambda函数
>>> list(map(lambda x:x**2,lst))     #Python2.x使用map(lambda x:x**2,lst)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> [(lambda x:x**2)(x) for x in lst]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#map函数除了作用于数字列表外,还可以作用于字符串和元组。
#例如:
>>> list(map(ord,'abcdef'))
[97, 98, 99, 100, 101, 102]
#当传入多个可迭代对象时,且它们元素长度不一致时,生成的迭代器只到最短长度
>>> list(map(lambda x,y:x+y,'abc','de')) 
['ad', 'be']
 
十一:python中的类方法,实例方法,静态方法
- 实例方法只能由实例对象来调用。
 - 静态方法,类方法,可以由类和实例调用。
 - 被@classmethod修饰的是类方法,被staticmethod修饰的是静态方法,不修饰的是实例方法。
 
十二: 类属性和实例属性的区别?
- 实例属性:在__init__方法中定义的属性称为实例属性,实例属性是属于某个实例的。
 - 类属性:在类里面和方法外面定义的属性称为类属性,类属性属于当前类。
 - 对象可以访问类属性,但是不能够修改类属性。
 - 如果对象想要修改类属性怎么做???定义类方法,进行调用。
 
十三:你的项目中uwsgi部署的时候配置的进程是多少?你们在设计的时候考虑多少并发量?
答:uwsgi配置32进程,800线程,考虑1000并发量以上。
十四:你项目上线了吗?有没有域名?
上线了,域名:www.uguu.com
十五: 进程之间是如何通信的呢?(关小工,辛嫂)
- 管道:
 - 消息队列:
 - 共享内存:
 - 信号量:
 - socket
 
十六: __init__方法和__new__方法的区别?
 
- 顺序不同: __new__方法先执行
 - 作用不同: __new__方法是为了创建实例的,__init__方法是为了初始化实例对象的。
 - 传入值不同: __new__传入cls, 而__init__传入self.
 - 输出值也不同: __new__输出实例,__init__没有输出值。
 
十七: 生成器和迭代器的区别是什么?
- 生成器可以看做是创建迭代器的工具。
 - 生成器:函数 + yield关键字: 自动创建了iter方法和next方法。
 - 迭代器:实现了iter方法和next方法。
 
十八: 虚拟机(Docker)的网络配置有哪些?
- 桥接:
 - 主机模式:
 - None模式:
 - macVlan模式:
 - 覆盖网络模式:
 
十九: 查看进程的命令,磁盘,端口
- 查看磁盘: df -h
 - 根据进程查看端口: netstat -nap | grep pid
 - 根据端口查看进程: netstat -nap | grep port
 - 根据进程查看进程号: ps -aux | grep java
 
二十:死锁产生的原因是什么?条件又是什么?
二十一:请求报文和响应报文的格式:
- 请求报文:请求行(协议,url地址,请求方式),请求头,空行, 请求体。
 - 响应报文: 响应行, 响应头,响应体。
 
二十三:python程序的执行原理:
首先python是一门解释型的语言,操作系统会将我们的python解释器复制到内存中,然后从上到下的让python解释器翻译python程序中的代码(词法分析,语法分析, 编译等过程。),我们会得到一个.pyc的字节码文件, 再由cpu执行.pyc中的字节码文件即可。
二十四:python如何实现私有的呢?
- 变量名、函数名前面增加两个下划线实现私有。
 - python会将我们定义的私有变量和函数名转换成 ,_类名__变量名, _类名__方法名。
 
二十五:数据库的三范式:
- 列不可分
 - 非主键完全依赖于主键,不能部分依赖。
案例: 比如:我们一个表(学号,课程号)作为主键,对于课程学分,只依赖于课程号,跟学号没有任何关系,所以此时违反了第二范式。 一个表只说明一个事物。 - 非主键只依赖于主键,不能依赖于非主键。一个数据库表中不包含已在其它表中已包含的非主键字段
 
二十六: Django有哪些模块?
- View模块
 - Template模板
 - URL模块
 - auth模块
 
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hdkf/3804.html