【it168 评论】python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,python迎来了新一轮的高潮。目前,国内知乎、网易(游戏)、腾讯(某些网站)、搜狐(邮箱)、金山、豆瓣属于使用python较为知名的企业。国外youtube、谷歌、yelp、slide等也或多或少在使用python。如果你想应聘python相关职位,不妨面试前自测一下自己对基础知识掌握程度如何?下面是一张一百分的试卷,看看你自己能得几分?
1、什么是pickling和unpickling?(1分)
pickle模块接受任何python对象,并将其转换为字符串,使用dump函数将其转储到文件中,这个过程称为pickling。从存储的字符串表示中检索原始python对象的过程称为unpickling。
2、作为解释型语言,python如何运行?(1分)
python是一种解释型语言。python程序直接从源代码运行,将程序员编写的源代码转换成中间语言,再将中间语言翻译成必须执行的机器语言。
3、有哪些工具可以帮助查找错误或执行静态分析?(2分)
pychecker是一个静态分析工具,用于检测python源代码中的错误,并给出错误的类型和复杂性。pylint是验证模块是否符合编码标准的另一种工具。
4、按下述要求编写代码,实现以下功能:(5分)
(1)编写代码下载
(2)统计mt.html中标签下所有单词并存储到mt_word.txt中,要求:
a) 每个单词一行。单词在前,单词出现的次数在后,中间用tab( )分隔。
b) 单词按照数目从多到少排列。比如说单词a出现了100次,单词b出现了10次,则单词a要在单词b前面。
5、下面的代码会输出什么:(2分)
def f(x,l=[]):
for i in range(x):
l.append(i*i)
print l
f(2)f(3,[3,2,1])f(3)
答案:
[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]
6、阅读下面的代码,它的输出结果是什么?(6分)
class node(object):
def __init__(self,sname):
self._lchildren = []
self.sname = sname
def __repr__(self):
return .format(self.sname)
def append(self,*args,**kwargs):
self._lchildren.append(*args,**kwargs)
def print_all_1(self):
print self
for ochild in self._lchildren:
ochild.print_all_1()
def print_all_2(self):
def gen(o):
lall = [o,]
while lall:
onext = lall.pop(0)
lall.extend(onext._lchildren)
yield onext
for onode in gen(self):
print onode
oroot = node(root)ochild1 = node(child1)ochild2 = node(child2)ochild3 = node(child3)ochild4 = node(child4)ochild5 = node(child5)ochild6 = node(child6)ochild7 = node(child7)ochild8 = node(child8)ochild9 = node(child9)ochild10 = node(child10)
oroot.append(ochild1)oroot.append(ochild2)oroot.append(ochild3)ochild1.append(ochild4)ochild1.append(ochild5)ochild2.append(ochild6)ochild4.append(ochild7)ochild3.append(ochild8)ochild3.append(ochild9)ochild6.append(ochild10)
# 说明下面代码的输出结果
oroot.print_all_1()oroot.print_all_2()
答案
7、python中lambda是什么意思?(1分)
它是一个经常用作内联函数的单个表达式匿名函数。
8、为什么python中的lambda表单没有语句?(1分)
python中的lambda表单没有语句,因为它用于创建新的函数对象,然后在运行时返回它们。
9、python中的pass是什么意思?(1分)
pass意味着没有任何操作的python语句,换句话说,它是复合语句中的一个占位符,如果一个地方没有什么必须写在那里,就需要用上pass了。
10、阅读下面的代码,写出a0,a1至an的最终值。(5分)
a0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
a1 = range(10)
a2 = [i for i in a1 if i in a0]
a3 = [a0[s] for s in a0]
a4 = [i for i in a1 if i in a3]
a5 = {i:i*i for i in a1}
a6 = [[i,i*i] for i in a1]
11、什么是python的单元测试?(1分)
python中的单元测试框架被称为unittest。它支持共享设置,自动化测试,测试关机代码,测试集合等。
12、在python中unittest是什么?(1分)
从列表,元组,字符串等序列类型中选择一系列项目的机制被称为unittest。
13、什么是python中的生成器?(1分)
实现迭代器的方式被称为生成器。除了在函数中产生表达式之外,它是一个正常的函数。
14、__new__和__init__的区别(4分)
15、如何复制python中的对象?(2分)
要在python中复制对象,一般情况下可以尝试copy.copy()或copy.deepcopy()。不能复制所有的对象,但大多数还是可以的。
16、如何将数字转换为字符串?(2分)
为了将数字转换为字符串,使用内置函数str()。如果想要一个八进制或十六进制表示,使用内置函数oct()或 hex()。
17、xrange和range有什么区别?(2分)
xrange返回一个xrange对象,而range返回一个数组。不管范围多大,使用同样的内存。
18、什么是python中的模块和包?(3分)
在python中,模块是构造程序的方式。每个python程序文件都是一个模块,它导入其他模块,如对象和属性。
python程序的文件夹是一个模块包,包可以有模块或子文件夹。
19、提到python中的局部和全局变量的规则是什么?(3分)
·局部变量:如果一个变量在函数体内的任何地方被分配了一个新的值,它被认为是本地的。
全局变量:使用global定义的变量就是全局变量
当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变量。
20、怎样才能跨模块共享全局变量?(3分)
要在单个程序的模块之间共享全局变量,请创建一个配置模块。在应用程序的所有模块中导入配置模块,该模块将作为跨模块的全局变量提供。
21、解释如何在unix上创建一个python脚本可执行文件?(4分)
要在unix上创建python脚本可执行文件需要做两件事情:
script文件的模式必须是可执行的
第一行必须以#(#!/ usr / local / bin / python)开头
22、python垃圾回收机制(3分)
python gc主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。
23、解释如何在python中生成随机数字?(3分)
要在python中生成随机数需要将命令导入
随机导入:random.random()
这将返回范围[0,1)中的随机浮点数
24、解释如何访问用c语言编写的python模块?(3分)
你可以通过下面的方法访问一个用c写成的模块,
module = = pyimport_importmodule(“”);
25、在python中如何使用//运算符?(1分)
它是一个floor division operator,用于将两个操作数相除,结果为小数点前面的数字。例如,10 // 5 = 2和10.0 // 5.0 = 2.0。
26、提到使用python的五个好处?(2分)
·python包含了大多数互联网平台(如电子邮件,html等)的巨大标准库。
python不需要显式的内存管理,因为解释器本身将内存分配给新变量并自动释放它们
由于使用方括号而提供易读性
易于初学者学习
具有内置的数据类型,可以节省编程时间和工作量,从而声明变量。
27、简单说明在python中如何使用split函数?(1分)
在python中使用split函数是使用定义的分隔符将字符串分解成更短的字符串。它给出了字符串中所有单词的列表。
28、解释什么是flask及其好处?(2分)
flask是一个基于“werkzeug,jinja 2和良好意图”bsd许可的web微型框架,werkzeug和jingja是它的两个依赖项。
flask是微观框架的一部分。这意味着它将很少或不依赖于外部库,它使框架轻而易举,更新和安全漏洞更少。
29、django,pyramid和flask有什么区别?(3分)
flask是一个“微框架”,主要用于需求更简单的小型应用程序。在flask中,你必须使用外部库。
pyramid是为更大的应用程序建立的。它提供了灵活性,并让开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,url结构,模板样式等等。pyramid可重新配置。
像pyramid一样,django也可以用于更大的应用程序。 它包括一个orm。
30、flask-wtf是什么,有什么特点?(3分)
flask-wtf提供了与wtforms的简单集成,功能包括:
与wtforms集成
使用csrf令牌安全形式
全球csrf保护
reptcha支持
与flask uploads一起使用的文件上传
31、flask脚本的常用方式是什么?(1分)
应该是应用程序的导入路径或python文件的路径
32、如何在flask中访问会话?(2分)
一个会话基本上允许记住从一个请求到另一个请求的信息。在flask中,它使用签名的cookie,以便用户可以查看会话内容并进行修改。用户可以修改会话,只要它有密钥flask.secret_key。
33、flask是一个mvc模型吗?如果是,可以示例一下吗?(5分)
基本上,flask是一个简单的框架,其行为与mvc框架相同。所以mvc是flask的完美选择,示例参考如下:
34、解释python flask中的数据库连接?(5分)
flask支持数据库驱动的应用程序(rdbs)。这样的系统需要创建一个模式,将shema.sql文件传送到sqlite3命令。所以需要sqlite3命令才能在flask中创建或启动数据库。
flask允许以三种方式请求数据库
before_request():它们在请求前被调用并且不传递任何参数
after_request():它们在请求之后被调用并且传递将被发送到客户端响应
teardown_request():在引发异常的情况下调用,并且不保证响应。他们在响应结束后被调用。他们不允许修改请求,他们的值被忽略。
35、你有多个运行python的memcache服务器,其中一个memcacher服务器失败,它有你的数据,它会试图从那个失败的服务器获取关键数据吗?(5分)
发生故障的服务器中的数据不会被删除,但是可以为多个节点配置自动故障规定。可以在任何类型的套接字或memcached服务器级错误期间触发故障切换,而不会在正常的客户端错误(如添加现有密钥等)期间触发。
36、解释如何最大限度地减少python开发中的memcached服务器中断?(5分)
当一个实例失败,这将在客户端发出请求时重新加载丢失的数据,在数据库服务器上承受更大的负载。为了避免这种情况,如果代码已经写入,尽量减少缓存的冲击,那么它将产生最小的影响
另一种方法是使用丢失的机器ip地址在新机器上启动memcached实例
代码是最大限度减少服务器停机的另一种方法,因为它可以自由地以最少的工作更改memcached服务器列表
设置超时值是一些memcached客户端为memcached服务器中断实现的另一个选项。当memcached服务器关闭时,客户端将不断尝试发送请求,直到达到超时限制
37、解释python项目中应不应该使用memcached?(5分)
memcached常见的误用是将其用作数据存储,而不是用作缓存
切勿使用memcached作为运行应用程序所需信息的唯一来源,数据应该始终可以通过其他来源获得
memcached只是一个键或值存储,不能对数据执行查询或遍历内容以提取信息
memcached在加密或认证时不提供任何形式的安全性
总共一百分的试卷,你得了多少分呢?