Python面试题汇总

1.如何理解python装饰器?
答: 装饰器本质是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.
开放封闭的原则:
对拓展是开放的
对修改是封闭的

2.python-闭包详解?
答:在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢?
给出字面的定义先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个参数a,内层函数依旧传入一个函数b,内层函数使用a和b,最后返回内层函数).这个从字面上很难理解,特别对于一直使用命令式语言进行编程的程序员们.本文将结合实例代码进行解释..
3.单例模式
①当每个实例都会占用资源,而且实例初始化会影响性能,这个时候就可以考虑使用单例模式,它给我们带来的好处是只有一个实例占用资源,并且只需初始化一次.
②当有同步需要的时候,可以通过一个实例来进行同步控制,比如对某个共享文件(如日志文件)的控制,对计数器的同步控制等,这种情况下由于只有一个实例,所以不用担心同步问题.
4.django怎样解决跨域请求的问题?
解决方案:
1.安装 django-cors-headers
pip install django-cors-headers

  1. 配置 settings.py 文件
    INSTALLED_APPS = [
    ...
    'corsheaders',
    ]
    MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware', # 注意顺序
    )
跨域增加忽略

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = =True
CORS_ORIGIN_WHITELIST = ('*')

5.列举 Http 请求中常见的请求头
① Accept(接受) ② Accept-Charset (接受保留) 3.ACCEPT-Encoding(接受编码) ④Accept-Language(接受语言) ⑤Host(主机) ⑥Referer (参照页,引用页)⑦ Content-Type(内容,类型) ⑧ User-Agent (用户代理) ⑨ Content-Length(内容长度) ⑩ Connection(链接) 11. Date(日期) 12.Cookie

6.说说并发和并行
就是说,你吃饭吃到一半,电话来了,你一直吃完了以后再接电话,这就说明你不支持并发和并行.
你吃饭吃到一半,电话来了,你停下来了,去接电话,接完后继续吃饭,这说明你支持并发.
你吃饭吃到一半,电话来了,你一边接电话一边吃饭,这说明你支持并行.
并发的关键是你有同时处理多个任务的功能,,但不一定要同时.
并行的关键是你有同时处理多个任务的功能.
所以我认为它们最关键的点就是: 是否同时进行

7.python中的多线程.
所谓进程,简单的来说就是一段程序动态执行的过程,是系统进行资源分配和调度的基本单位.一个进程又包括若干个执行流,我们将这些执行流称为线程,线程是cpu调度和分配的基本单位.同一个进程的线程都有自己专属的寄存器,但内存等资源是共享的.
8.请简述mysql数据库的四大特性?
原子性(Atomicity): 事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行.
一致性(Consistency): 几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致.
隔离性(Lsolation): 事务的执行不接受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的.
持久性(Durability): 对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障.
9.请简述设计数据库提出的一些规范(模式)?
第一范式: 列不可再分
第二范式: 唯一标识
第三范式: 引用主键
每个范式都是在前一个范式基础上建立的

你可能感兴趣的:(Python面试题汇总)