目录
-
- 一:简述你对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/zx/article/details/
- 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 x2 >>> 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:x2,lst)) #Python2.x使用map(lambda x:x2,lst) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> [(lambda x:x2)(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/hd-python/3971.html