12道常见Python面试题,你能答对几个?( 二 )


文章插图
 
‘0x10’

12道常见Python面试题,你能答对几个?

文章插图
 
‘0xf’
 
Q.10. 如何获取字典中的所有键?使用 keys 来获取字典中的所有键
12道常见Python面试题,你能答对几个?

文章插图
 
Q.11. 简述面向对象中new和init区别init是初始化方法 , 创建对象后 , 就立刻被默认调用了 , 可接收参数 。
(1、new至少要有一个参数cls , 代表当前类 , 此参数在实例化时由Python解释器自动识别 。
(2、new必须要有返回值 , 返回实例化出来的实例 , 这点在自己实现new时要特别注意 , 可以return父类(通过super(当前类名, cls))new出来的实例 , 或者直接是object的new出来的实例 。
(3、init有一个参数self , 就是这个new返回的实例 , init在new的基础上可以完成一些其它初始化的动作 , init不需要返回值 。
(4、如果new创建的是当前类的实例 , 会自动调用init函数 , 通过return语句里面调用的new函数的第一个参数是cls来保证是当前类实例 , 如果是其他类的类名 , ;那么实际创建返回的就是其他类的实例 , 其实就不会调用当前类的init函数 , 也不会调用其他类的init函数 。
 
Q.12.列出常见MySQL数据存储引擎InnoDB:支持事务处理 , 支持外键 , 支持崩溃修复能力和并发控制 。如果需要对事务的完整性要求比较高(比如银行) , 要求实现并发控制(比如售票) , 那选择InnoDB有很大的优势 。如果需要频繁的更新、删除操作的数据库 , 也可以选择InnoDB , 因为支持事务的提交(commit)和回滚(rollback) 。
MyISAM:插入数据快 , 空间和内存使用比较低 。如果表主要是用于插入新记录和读出记录 , 那么选择MyISAM能实现处理高效率 。如果应用的完整性、并发性要求比 较低 , 也可以使用 。
MEMORY:所有的数据都在内存中 , 数据的处理速度快 , 但是安全性不高 。如果需要很快的读写速度 , 对数据的安全性要求较低 , 可以选择MEMOEY 。它对表的大小有要求 , 不能建立太大的表 。所以 , 这类数据库只使用在相对较小的数据库表 。




推荐阅读