<返回更多

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

2020-03-05    
加入收藏

Q.1. 什么是 Flask?

Flask 是一个使用 Python 编写的轻量级 Web 应用框架,使用 BSD 授权。其 WSGI 工具箱采用 Werkzeug,模板引擎则使用 Jinja2。除了 Werkzeug 和 Jinja2 以外几乎不依赖任何外部库。因为 Flask 被称为轻量级框架。

Flask 的会话会话使用签名 cookie 来允许用户查看和修改会话内容。它会记录从一个请求到另一个请求的信息。但如果要修改会话,则必须有密钥 Flask.secret_key。

Q.1. 如何在 Python 中管理内存?

Python 用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它。由解释器来管理它。不过使用一些核心 API,我们可以访问一些 Python 内存管理工具控制内存分配。

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

 

Q.3. 当退出 Python 时是否释放所有内存分配?

答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放. 另外不会释放 C 库保留的部分内容。

Q.4. 能否解释一下 args 和 *kwargs?

如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用args。

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

 

3 2 1 4 7 当我们不知道将会传入多少关键字参数时,使用*kwargs 会收集关键字参数。

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

 

a.1 b.2 c.7 使用 args 和 kwargs 作为参数名只是举例,可以任意替换。 对于 Python 的基础题任何疑问,请在评论区提问。

 

Q.5. 什么是负索引?

我们先创建如下列表:

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

 

与正索引不同,负索引是从右边开始检索。

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

 

6 同样可以用于列表的切片:

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

 

[3, 4, 5, 6, 7]

Q.6. 如何随机打乱列表中元素,要求不引用额外的内存空间?

我们用 random 包中的 shuffle 函数来实现。

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

 

[3, 4, 8, 0, 5, 7, 6, 2, 1]

Q.7. 解释 Python 中的 join 和 split 函数

join 函数可以将指定的字符添加到字符串中。

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

 

‘1,2,3,4,5’

split 函数可以用指定的字符分割字符串

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

 

[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]

 

Q.8. 解释 Python 中的//,%和**运算符

//运算符执行地板除法,返回结果的整数部分 (向下取整)。

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

 

3 用/符号除法结果为 3.5。 符号表示取幂. ab 返回 a 的 b 次方

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

 

% 是取模符号。返回除法后的余数。

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

 

6

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

 

Q.9. 如何在 Python 使用多进制数字?

除十进制以外,在 Python 中还可以使用二进制、八进制、十六进制。

1.二进制数有 0 和 1 组成,我们使用 0b 或 0B 前缀表示二进制数

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

 

10

使用 bin 函数可以将数字转换为二进制

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

 

‘0b1111’

2.八进制数由数字 0-7 组成,使用前缀 0o 或 0O 表示 8 进制数

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

 

‘0o10’

3.十六进数由数字 0-15 组成,使用前缀 0x 或者 0X 表示 16 进制数

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

 

‘0x10’

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

 

‘0xf’

 

Q.10. 如何获取字典中的所有键?

使用 keys 来获取字典中的所有键

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

 

Q.11. 简述面向对象中newinit区别

init是初始化方法,创建对象后,就立刻被默认调用了,可接收参数。

(1、new至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别。

(2、new必须要有返回值,返回实例化出来的实例,这点在自己实现new时要特别注意,可以return父类(通过super(当前类名, cls))new出来的实例,或者直接是object的new出来的实例。

(3、init有一个参数self,就是这个new返回的实例,initnew的基础上可以完成一些其它初始化的动作,init不需要返回值。

(4、如果new创建的是当前类的实例,会自动调用init函数,通过return语句里面调用的new函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的init函数,也不会调用其他类的init函数。

 

Q.12.列出常见MySQL数据存储引擎

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍最近更新