小言_互联网的博客

python后端面试题

412人阅读  评论(0)

1.说说python高并发解决方案?

答案:
1.使用多进程,避免使用python多线程。
2.使用协程、并发框架(需要提到gevent、tornado(只适用于WEB))。
3.使用其他语言,如c语言,来编写多线程并发的程序,使用python的胶水特性。
2.谈谈python的迭代器、生成器、装饰器
答案:
可迭代对象:
简单的理解就是可以使用for遍历的对象,实现了迭代器协议,可以使用iterable()来查看是否可以迭代
迭代器:
通常对象内部实现了iter()、next()方法,就是迭代器
生成器:
只是保存一种迭代方法,调用时才生成数据,极大的减小了内存的占用,还有一种是生成器函数,内部使用了yield关键字,来支持迭代器协议
装饰器:
@符号表示装饰器
实现:
在闭包的基础上,把一个函数的引用当做参数传递给一个闭包,在闭包内部执行了这个函数,和闭包本身的代码功能,实现了在不改变函数代码增加新功能,只能在这个函数执行之前,和执行之后增加功能

多个装饰器装饰同一个函数:
顺序为从下往上装饰

带参数的装饰器:
实际上是在闭包的外层再加一个闭包,拿外层闭包的返回值当做装饰器

网站上用于
登录认证,或者权限验证,还常用于log日志

线程安全
答案:
线程安全就是多线程运行时避免产生冲突。
如多个线程同时操作一个变量,资源竞争问题,使用锁机制,可以解决竞争问题,但是可能会产生死锁,造成程序停止响应,两个线程拥有部分资源互相等待对方释放这一部分资源
queue队列也实现了锁机制,先进先出,可以避免竞争问题
解决办法增加判读时间、避免死锁的产生

sql注入:
给sql语句注入其他内容
防止:
1.避免sql语句暴露
2.接收的数据进行转换

未完待续


转载:https://blog.csdn.net/enteracity/article/details/101023543
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场