Python基础题

Python开发理论基础面试题

一、Python的内存管理
    1、python内存管理是由私有堆空间管理,需要申请和释放内存
    2、用引用计数机制实现垃圾回收
    3、Python有内存池的机制,为了防止频繁申请和释放内存,会将不用内存放到内存池而不是返回给操作系统


二、Python的gc垃圾回收
    1、在Python中,主要通过引用计数进行垃圾回收
    2、通过 “标记-清除” 解决容器对象可能产生的循环引用问题
    3、通过 “分代回收” 以空间换时间的方法提高垃圾回收效率


三、python里while 1 和while True的区别?
    1、由于Python2中,True/False不是关键字,因此我们可以对其进行任意的赋值
          这就导致程序在每次循环时都需要对True/False的值进行检查
    2、而对于1,则被程序进行了优化,而后不会再进行检查
         While true 和while 1在python3里面没有区别

四、Python为什么类要继承object?,继承和不继承有什么区别?
    1、在python2中继承 object 类的是新式类,不继承 object 类的是经典类
     2、新式类,当调用 负类的方法时候,Python 会按照广度优先方式去搜索
          而经典类是用深度优先方法去搜索
   
五、讲讲Pythond装饰器?
    1、装饰器是一个函数,其主要用途是包装另一个函数或类。

    2、 这种包装的首要目的是透明地修改或增强被包装对象的行为。

六、什么是Python的闭包?    
    1、内层函数引用了其外部作用域的变量,然后返回内层函数的情况,称为闭包。
    2、python一般以内外函数实现


七、python节省内存的方法:
    1、类里面增加__slot__方法, 如果确定了对象属性成员,不会再动态增加
    2、使用touple代替list
    3、Namedtuple代替数据对象
    4、适当使用弱应用
    5、生成器、代器代替集合数据类型

    原则一:尽量用不可变对象类型代替可动态增加对象类型


八、讲讲python弱引用 
    1、对一个对象进行弱引用,即不会由引用计数,即这个对象的内存还是有可能被回收掉
    2、一般弱引用的应用场景是,些还有用但并非必须的对象,并且很费资源的对象


九、什么是闭包?
    1、使用环境范围之外的变量,即内函数在其它定义环境使用
    2、当一个内嵌函数引用其外部作作用域的变量,我们就会得到一个闭包. 总结一下,创建一个闭包必须满足以下几点
        ①、必须有一个内嵌函数
        ②、内嵌函数必须引用外部函数中的变量
        ③、外部函数的返回值必须是内嵌函数


十、Python的装饰器原理
    1、原理是闭包.
    2、在不用修改原函数代码情况下,就可以给原函数添加新功能,并且在调用的时候和原来调用一模一样


十一、Python字典的底层实现?
    1、字典底层是哈希实现的
    2、容量大于等于 2/3 时,字典就会扩容(扩容时散列表中键的次序变化)
    3、在对元素进行变化操作(删除等)时,底层只是对数据进行状态切换(Unused态、Active态、和Dummy态)
    4、解决哈希冲突的方法:是开放地址方法

十二、python有什么调试工具?
    1、pdb
    2、pySnooper


十三、什么是协程?
    1、轻量级的线程
    2、处于用户态、非抢占
    3、用户调度、非系统调度,效率较高
    4、极高的执行效率,因为子程序切换而不是线程切换,没有了线程切换的开销
    5、不需要多线程的锁机制,因为只有一个线程在执行

十四、Python的协程?
    1、python2是通过yeil实现、greve
    2、python3是通过synix


十五、__new__() 与 __init__()的区别
    1、__new__是一个静态方法,而__init__是一个实例方法.
    2、__new__方法会返回一个创建的实例,而__init__什么都不返回.
    3、只有在__new__返回一个cls的实例时后面的__init__才能被调用.
    4、当创建一个新实例时调用__new__,初始化一个实例时用__init__.


十六、GIL锁?为什么使用GIL锁?
    1、即全局解释锁,每个时间段只允许一个线程在CPU中运行
    2、为了解决多线程之间数据完整性和状态同步的问题,保证Python解释器中原子操作的线程安全,解决不同线程之间的数据一致性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值