1.如何提升python的运行效率?python
使用生成器;关键代码使用外部功能包,针对循环的优化-尽可能避免在循环中访问变量的属性。linux
2.常见的linux命令?django
cd,pwd,touch,ls,mkdir,rm,help,sudo,ssh,date,clearflask
3.python中yield的用法?数组
yield简单来讲是一个生成器,这样函数记住上次返回时在函数中的位置,对于生成器第二次或n次调用跳转至该函数。多线程
4.python中如何进行内存管理的?ssh
一.垃圾回收
二.引用技术:当某标签引用技术为0的时候,就该对象就会被收回函数
三.内存池机制大数据
5.描述数组,链表,队列,堆栈的区别?优化
数组和链表是存储方式的概念,数组在连续的空间中存储数据,链表在非连续的空间中存储数据;
队列和堆栈是描述数据存取方法的概念,队列是先进先出,而堆栈是后进后出,队列和堆栈能够用链表来实现,也能够用数组来实现。
6.如何一行代码实现0-100和?
sum(range(0,101))
7.列出5个python标准库?
os:提供很多于操做系统相关联的函数
sys:一般用于命令行参数
datetime:日期时间
re:正则匹配
math:数学运算
8.字典是如何删除键和合并两个字典?
dict1 = {“name”:“banzhang”,"age":18}
del.dict1["name"]
dict2={"sex":"男"}
dict1.update(dict2)
9.谈一下python中的GIL?
这里的GIL锁主要是针对计算密集型任务。
GIL是python中的全局解释器锁,是不可控的,同一个进程中,假若有多个线程在运行,那么其中一个线程在运行的时候就会霸占GIL锁,就使得其余线程没法运行,等该线程运行结束之后,其余线程才能运行。若是线程中遇到耗时操做(I/O密集型任务),则解释器锁会解开,使得其余线程运行,因此说在多线程中,线程的运行还是有前后顺序的,并非同时进行.
何时释放GIL锁?
1.时间片耗尽(cpu时间)
2..任务遇到I/O等待时
3.执行任务结束
4.执行到字节码阈值时(,欧仁100条)
如何改善GIL锁对程序的影响?
1.升级python解释器(变化较小)
2.更换python解释器(由于python解释器的库比较全面,若是更换就没有这么强大的库使用,因此也没有什么实际做用)
3.使用进程+协程的方法(由于子进程会复制一份主进程的资源,包括GIL,因此每一个进程都会有一个GIL,而利用协程是由于只须要一个线程,一个线程就不会产生资源竞争的问题)
9.谈一下GIL锁和互斥锁的区别?
GIL是全局解释器锁,是解释器层面的,不可控的。
互斥锁是代码层面的锁,是可控的。
无论互斥锁和GIL锁都是解决共享变量的资源竞争的问题。
10.python2和python3的区别?
1.语法区别
1.1 python2输出 print “hello word”,python3输出 print("hello word")
1.2 python2和python3的range(100)的区别,python2返回列表,python3返回一个迭代器节约内存。
2.python2中为正常显示中文,引入coding声明,python3中不须要。
11.什么是装饰器?应用场景?一句话解释什么样的语言可以使用装饰器
装饰器的特色是返回值和参数都是函数
装饰器的目的就是已封装函数进行操做,为其加上新的功能或一系列运算。
在flask中获取用户的登陆使用的就是装饰器
在django中middkeware中间件 其实就是高级的装饰器用法。
函数能够做为参数传递的语言,可使用装饰器。
12.生成器、迭代器和可迭代对象区别和应用?
能使用for遍历的就叫可迭代对象,能使用next方法的就是迭代器,生成器是特殊的迭代器。
13.Python中数组有哪些类型?字典能够是有序的吗?
字典实际上是个无序的序列,可是咱们能够按照字典的键或值进行排序
14.python⾃带的处理字符串的⽅法,内置函数。⽐如怎么处理换⾏符。
Python中自带了换行符,若是想要处理:
好比:
print(“hello word”,end=””)
print(“hello word”)
显示效果:hello wordhello word
15.Python中的可变类型与不可变类型
什么是可变、不可变?元组⾥添加字典,会改变id吗?
可变类型:会在原来的内存地址上修改元素 好比: 列表,字典
不可变类型:不会在原来的内存地址上修改元素,而是指向了新的内存引用 好比:整型,字符串,元组
元组中添加字典,会改变id。
由于元组是不可变类型,若是修改了元组的元素,就至关于从新建立了一个元组。因此元组的id会改变
16.break和continue的区别(分别说说他们的做⽤和使⽤)
break和continue都是用于while嵌套循环中
Continue是结束内层的while循环,continue语句并无使整个循环终止
Break是结束整个while循环
17.对不定⻓参数的理解?
通常分为两种:
一种是*args 位置参数 在定义函数时,在形参前面加一个*,表明能够接收任意多个实参,用元组类型保存全部数据。通常写成def function(*args)
一种是**kwargs 命名参数 表明能够接收任意多个的命名参数,用字典类型保存。
18.对缺省参数的理解?
若是调用函数的时候,传递了对应位置的实参,那就使用这个传递的值,若是没有传递对应的值,那就使用缺省参数的值。
19.什么是lambda函数?它有什么好处?写⼀个匿名函数求两个数的和。
匿名函数,
Func = Lambda a,b : a + b
Func(10,20)
20.read、readline和readlines的区别?大数据文件怎么读取?
Read 是读取整个文件
Read(5) 读取文件中几个字节
Readline是读取一行
Readlines 按行读取全部内容,返回的是一个列表,每个元素就是文件中每一行的内容
1.利用生成器generator
2.迭代器进行迭代遍历:for line in file
21.上下⽂管理器了解吗
上下文管理器 with
有两个方法 一个是enter 一个是exit
Enter 主要是负责上下文的准备工做,通常是 打开文件,准备环境
Exit 主要是负责善后工做 好比关闭文件,一些回收机制
22.什么单例模式,其应⽤场景都有哪些?
单例模式:不管建立多少个实例对象,始终指向的是第一个实例对象
23.Python中有⽇志吗?怎么使⽤?
24.is 和 “==”的区别
Is和== 主要针对于可变类型的判断 由于不可变类型的id都是一致的。因此is和==都是True
A=[10]
B=[10]
Print(A == B) True
Pritn(A is B) Flase
区别:
由于A跟B的值相等,因此==的结果就是True,可是不判断A和B的id地址
而is 不仅是会判断A和B的值 还会判断A 和B的id是否一致 因此结果就是Flase