Python 面试题篇4

Python 面试题篇4

Python 面试题篇3

python中什么元素为假?

(0,空字符串,空列表、空字典、空元组、None, False)

简述any()和all()方法

代码:

a = [True,False,True]
print(all(a))
print(any(a))
#False
#True

提示:
any():只要迭代器中有一个元素为真就为真

all():迭代器中所有的判断项返回都是真,结果才为真

IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常

  • IOError:输入输出异常
  • AttributeError:试图访问一个对象没有的属性
  • ImportError:无法引入模块或包,基本是路径问题
  • IndentationError:语法错误,代码没有正确的对齐
  • IndexError:下标索引超出序列边界
  • KeyError:试图访问你字典里不存在的键
  • SyntaxError:Python代码逻辑语法出错,不能执行
  • NameError:使用一个还未赋予对象的变量

a = " hehheh ",去除收尾空格

方法:使用内置函数str.strip()
代码:

a = "  hehheh  "
a =  str.strip()
print(a)
#hehheh

举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]

提示:sort 和sorted 一个是list内置方法,一个是独立的方法。所以说list.sort会修改本身,sorted 会返回一个新list

举例说明SQL注入和解决办法

  1. SQL注入是将SQL代码插入到网站应用的参数之中,传入到后台数据库服务器解析执行的攻击
  2. SQL注入的主要方式是直接将SQL代码插入到参数中,这些参数会被置入到SQL命令中加以执行
  3. 攻击者能修改SQL语句时,该进程将与执行命令的组件(数据库服务器、web服务器)拥有相同权限

SQL注入一般存在于表单提交、搜索框查询等需要后台执行SQL查询的地方

解决方法:

  • 检查传入参数,限定参数类型
  • 使用ORM
  • 对传入内容进行处理,使sql语句不能执行。一般ORM均已经提供该功能

求两个列表的交集、差集、并集

简述多线程、多进程

进程:

  • 操作系统进行资源分配和调度的基本单位,多个进程之间相互独立
  • 稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制

线程:

  • CPU进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源
  • 如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃,都会造成进程的崩溃

应用:

  • IO密集的用多线程,在用户输入,sleep 时候,可以切换到其他线程执行,减少等待的时间
  • CPU密集的用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释器锁,当前运行的线程会霸占GIL,其他线程没有GIL,就不能充分利用多核CPU的优势

简述cookie和session的区别

  • session 在服务器端,cookie 在客户端(浏览器)
  • session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效,存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置
  • cookie安全性比session差

列出几种魔法方法并简要介绍用途

魔法方法有的书也叫自带电池。简单理解就是python 已经帮助你实现的一些方法需要固定的方式声明 双下划线。

  • init:对象初始化方法
  • new:创建对象时候执行的方法,单列模式会用到
  • str:当使用print输出对象的时候,只要自己定义了str(self)方法,那么就会打印从在这个方法中return的数据
  • del:删除对象执行的方法

C:\Users\ry-wu.junya\Desktop>python 1.py 22 33命令行启动程序并传参,print(sys.argv)会输出什么数据?

使用sys.argv 可以获取命令行传入的参数,其中第一个参数是文件本身。
代码:

print(sys.argv)
# ["1.py","22","33"]

发表评论

电子邮件地址不会被公开。 必填项已用*标注