1.MySQL有哪些存储引擎,优化MySQL数据库的方法有哪些? MySQL支持的存储引擎有MyISAM,InnoDB,Memory,CSV,Archive 建立索引,使用复合索引,使用短索引,不在列上进行运算,不使用NOT IN操做,不在包含有NULL值得列上加索引 2.WEB开发中session与cookie的做用与区别? cookie经过在客户端记录用户身份的信息,session经过在服务端记录用户身份信息 cookie机制:理论上一个用户的全部请求都应该属于一个会话,因为web程序应用是基于http协议传输信息的, 可是,http协议是无状态协议,一旦数据交换完毕,二者的链接马上断开,再次交换数据须要从新创建链接,这就意味着服务器没法链接上跟踪会话。要跟踪该会话,就引入了一种机制Cookie 服务器就给客户端颁发一个通讯证,每次来访问同一个网站时浏览器必需携带cookie,以便确认用户身份。 session机制:是服务器端记录用户状态的一种机制,使用上比较简单,可是增长了服务器内存的压力。 客户端浏览器第一次访问服务器的时候,服务器把客户端的信息以某种形式保存下来,session对象也是在这个时候建立, 全部该客户端的状态信息,都被保存在这里。session至关于在程序在服务器上创建的客户端档案,客户来访时只要查询这些档案就能够了。 3.WEB开发中有哪些技术手段防止SQL注入? 使用预编译绑定变量的SQL语句; 加密处理用户的关键信息; 不随意开启生产环境中的Webserver的错误; 使用正则表达式过滤传入的参数; 字符串过滤; 检查是否包含非法字符; 4.编写快速排序或者冒泡排序 def bubble_sort(lis): for j in range(len(lis),-1,-1): for i in range(0,len(lis)-1): if lis[i] > lis[i+1]: lis[i],lis[i+1]=lis[i+1],lis[i] print(lis) lis=[20,49,50,0,8,65,56,89,77,46] bubble_sort(a) 5.请实现一个装饰器,限制该函数被调用的频率 import time #5秒一次 def wraper(func): def inner(*args,**kwargs): time.sleep(5) return func(*args,**kwargs) return inner @wraper def rando(): print('被装饰的函数') rando() rando() 6.请说一说lambda函数的做用,请用lambda和reduce实现1到100的累加 Lambda函数又称匿名函数,也就是没有名字的函数,有些函数若是只是临时一用,并且业务逻辑也比较简单,这时就能够用用Lambda函数 from _functools import reduce print(reduce(lambda x,y:x+y,range(1,101))) 7.请描述一下tuple,list,dict,set的特色 tuple:不可对元素进行修改,但元素自己能够变化,好比元素为列表,值能够重复,元素有序 list:元素能够修改,值可重复,相比dict具备占用内存小的特色,经常使用于堆栈的处理 dict:键不可变,值可变,键不能够重复,值能够重复,元素无需,符合用内存换速度思想,经常使用于查找 set:元素不可重复,无序 8.就你熟悉的web框架,讲一讲如何维持用户的登陆状态的 把用户信息存放一session中,再给客户端返回一个cookie; 经过form表单; 经过querystring 9.python函数中常常有*args,**kwargs,这两个参数,它们是什么意思,为何要使用它们 若是咱们不肯定要往函数中传入多少个参数,或者咱们想往函数中以列表和元组的形式传参数时,那就使要用*args; 若是咱们不知道要往函数中传入多少个关键词参数,或者想传入字典的值做为关键词参数时,那就要使用**kwargs。 10.python中变量做用域(变量查找顺序) 局部变量--->闭包做用域 ----> Global 全局---->(内置)变量