python一些面试题

1.	Python是什么:解释语言不用编译,
python非常简单,非常适合人类阅读,
动态类型语言,指的是你在声明变量时,不需要说明变量的类型
胶水语言:它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库
2.	内存管理:私有heap空间管理,只有解释器才能对他操作
3.	垃圾回收:1.引用计数 2.循环引用3.分代回收
4.	装饰器:是只是一个函数,让其他函数功能不变的情况下增加功能(插入日志,性能测试)
5.	Copy()与deepcopy():只拷贝变量的父级元素(改变原来的值,拷贝的也会变);拷贝所有元素
6.	数组和元组之间的区别:数组内容是可以被修改的,而元组内容是只读的。另外,元组可以被哈希,比如作为字典的关键字。
7.	可变与不可变数据结构:可变的有:数组、集合、字典;不可变的有:字符串、元组、数。
8.	Lambda:匿名函数
9.	Xrange和range的区别是什么?
Xrange用于返回一个xrange对象(迭代器),而range用于返回一个数组。不管那个范围多大,Xrange都使用同样的内存
10.	捕获异常,异常机制:
如果没有对异常进行预防,那么发生异常,程序就会中断,调用异常处理器,会在终端显示异常信息
1.	Try... except...finally..:finally后面无论是否发生异常都会执行Except后面调用异常处理器
2.	With语句:发生异常,文件会正常关闭
3.	Assert语句:后面跟true,false,false中断程序,会调出异常处理器
11.	python作用域和搜索变量顺序:
即变量的命名空间,变量赋值位置决定哪些范围内变量可以访问;搜索顺序:LEGB,local->enclosing locals->global->Built in.本地作用域,嵌入的本地作用域,模块(全局)作用域,内置作用域
12.	新式类旧式类
13.	__new__与__init__:在实例创建过程中__new__方法先于__init__方法被调用,它的第一个参数类型为type。__init__提供生产的原料self(但并不保证这个原料来源正宗,像上面那样它用的是另一个不相关的类的__new__方法类得到这个实例),而__init__就用__new__给的原料来完善这个对象(尽管它不知道这些原料是不是正宗的)
14.	*args和**kwargs:
*args代表传入list或tuple,**kwargs代表传入dict(键值对‘a’=1),两者都可以不确定传入的个数
15.GIL:每一个interpreter进程,只能同时仅有一个线程来执行, 获得相关的锁, 存取相关的资源.那么很容易就会发现,如果一个interpreter进程只能有一个线程来执行,多线程的并发则成为不可能, 即使这几个线程之间不存在资源的竞争.从理论上讲,我们要尽可能地使程序更加并行, 能够充分利用多核的功能
16.with():可以用于对资源访问。With open(’’,’’)as f: 好处无论异常发生,都会关闭刚打开的文件。
17.迭代器与生成器:
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
直接作用于for循环的对象统称为可迭代对象:Iterable。
1.	如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
2.List生成式[x * x for x in range(1, 11)]1,4,9…
				将[]变成()就成为生成器
节省大量的空间,生成器只能遍历一次
18.单例:使用模块,使用 __new__,使用装饰器(decorator),使用元类(metaclass)
class Singleton(object):
    _instance = None
    def __new__(cls, *args, **kw):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kw)  
        return cls._instance  
 
class MyClass(Singleton):  
    a = 1
19.对应到Python语言,单线程的异步编程模型称为协程

20. 程序的几个存储区
1. 栈 --有编译器自动分配释放
    2. 堆 --一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
    3. 全局区(静态区) --全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束释放。
    4. 另外还有一个专门放常量的地方。程序结束释放

猜你喜欢

转载自blog.csdn.net/zzzzzztt/article/details/80670096