python常见面试题 面试题求助

深入解答关于Python的11道基本面试题
作者:菜鸟学Python
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了关于Python的11道基本面试题,其中单引号,双引号,三引号的区别、Python的参数传递是值传递还是引用传递以及什么是lambda函数?它有什么好处?等一系列的基础面试题,文中给出了详细的解答,需要的朋友可以参考学习。
本文给大家深入的解答了关于Python的11道基本面试题,通过这些面试题大家能对python进一步的了解和学习,下面话不多说,来看看详细的介绍吧。
一、单引号,双引号,三引号的区别
分别阐述3种引号用的场景和区别
1),单引号和双引号主要用来表示字符串
单引号:'python'
双引号:"python"
三单引号:'''python ''',也可以表示字符串一般用来输入多行文本,或者用于大段的注释
三双引号:"""python""",一般用在类里面,用来注释类,这样省的写文档,直接用类的对象__doc__访问获得文档
若你的字符串里面本身包含单引号,必须用双引号
比如: "can't find the log\n"
二、Python的参数传递是值传递还是引用传递
举例说明Python函数参数传递的几种形式,并说明函数传参是值传递还是引用传递
1).Python的参数传递有:
默认参数,
关键字参数
2).函数的传值到底是值传递还是引用传递,要分情况
a.不可变参数用值传递:
像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象
b.可变参数是用引用传递的
比如像列表,字典这样的对象是通过引用传递,和C语言里面的用指针传递数组很相似,可变对象能在函数内部改变.
三、什么是lambda函数?它有什么好处?
举例说明lambda的用法,并说明用lambda的优点
1).lambda的用法:
lambda是匿名函数,用法如下:lambda arg1,arg2..argN:expression using args
lambda能和def做同样种类的工作,特别是对于那些逻辑简单的函数,直接用lambda会更简洁,而且省去取函数名的麻烦(给函数取名是个技术活)
四、字符串格式化:%和.format的区别
字符串的format函数非常灵活,很强大,可以接受的参数不限个数,并且位置可以不按顺序,而且有较为强大的格式限定符(比如:填充,对齐,精度等)
五、Python是如何进行内存管理的
1).对象的引用计数机制
Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。
引用计数增加的情况:
一个对象分配一个新名称
将其放入一个容器中(如列表、元组或字典)
引用计数减少的情况:
使用del语句对对象别名显示的销毁
引用超出作用域或被重新赋值
2).垃圾回收
当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
3).内存池机制
Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统:
Pymalloc机制:为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。
对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。
六、写一个函数, 输入一个字符串, 返回倒序排列的结果
输入: string_reverse(‘abcdef') , 返回: ‘fedcba',写出你能想到的多种方法
1).利用字符串本身的翻转
def string_reverse1(text='abcdef'):
return text[::-1]
2).把字符串变成列表,用列表的reverse函数
3).新建一个列表,从后往前取
4).利用双向列表deque中的extendleft函数
七、按升序合并如下两个list, 并去除重复的元素
list1 = [2, 3, 8, 4, 9, 5, 6]
list2 = [5, 6, 10, 17, 11, 2]
1).最简单的方法用set
list3=list1+list2
print set(list3)
先选一个中间数,然后一边是小的数字,一边是大的数字,然后再循环递归,排完序(是不是想起了c里面的冒泡)
八、以下的代码的输出将是什么? 说出你的答案并解释
class Parent(object):
class Child1(Parent):
class Child2(Parent):
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x
使你困惑或是惊奇的是关于最后一行的输出是 3 2 3 而不是 3 2 1。为什么改变了 Parent.x 的值还会改变 Child2.x 的值,但是同时 Child1.x 值却没有改变?
这个答案的关键是,在 Python中,类变量在内部是作为字典处理的。如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到.
首先,在父类中设置 x = 1 会使得类变量 x 在引用该类和其任何子类中的值为 1。这就是因为第一个 print 语句的输出是 1 1 1
然后,如果任何它的子类重写了该值(例如,我们执行语句 Child1.x = 2)该值仅仅在子类中被改变。这就是为什么第二个 print 语句的输出是 1 2 1
最后,如果该值在父类中被改变(例如,我们执行语句 Parent.x = 3),这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是 Child2)。这就是为什么第三个 print 输出是 3 2 3
九、下面的代码会不会报错
list = ['a', 'b', 'c', 'd', 'e']
print list[10:]
不会报错,而且会输出一个 [],并且不会导致一个 IndexError
当试图访问一个超过列表索引值的成员将导致 IndexError(比如访问以上列表的 list[10])。尽管如此,试图访问一个列表的以超出列表长度数作为开始索引的切片将不会导致 IndexError,并且将仅仅返回一个空列表
一个讨厌的小问题是它会导致出现 bug ,并且这个问题是难以追踪的,因为它在运行时不会引发错误,吐血啊~~
十、说出下面list1,list2,list3的输出值
def extendList(val, list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s" % list1
print "list2 = %s" % list2
print "list3 = %s" % list3
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
许多人会错误的认为 list1 应该等于 [10] 以及 list3 应该等于 ['a']。认为 list 的参数会在 extendList 每次被调用的时候会被设置成它的默认值 []。
尽管如此,实际发生的事情是,新的默认列表仅仅只在函数被定义时创建一次。随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表。这就是为什么当函数被定义的时候,表达式是用默认参数被计算,而不是它被调用的时候。
因此,list1 和 list3 是操作的相同的列表。而list2是操作的它创建的独立的列表(通过传递它自己的空列表作为list参数的值)
所以这一点一定要切记切记.下面我们把list置为None就可以避免一些麻烦了
十一、写出你认为最Pythonic的代码
Pythonic编程风格是Python的一种追求的风格,精髓就是追求直观,简洁而容易读.
下面是一些比较好的例子
1).交互变量
非Pythonic
2).判断其值真假
name = 'Tim'
langs = ['AS3', 'Lua', 'C']
info = {'name': 'Tim', 'sex': 'Male', 'age':23 }
非Pythonic
if name != '' and len(langs) & 0 and info != {}:
print('All True!')
if name and langs and info:
print('All True!')
3).列表推导式
[x for x in range(1,100) if x%2==0]
4).zip创建键值对
keys = ['Name', 'Sex', 'Age']
values = ['Jack', 'Male', 23]
dict(zip(keys,values))
pythonic的代码很多,这里举几个典型的例子
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具请裁剪图片
关于Python的面试题
这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点)
当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里函数把引用指向了一个不可变对象,当函数返回的时候,外面的引用没半毛感觉.而第二个例子就不一样了,函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改.
这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点)
当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里函数把引用指向了一个不可变对象,当函数返回的时候,外面的引用没半毛感觉.而第二个例子就不一样了,函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改.
用户名不正确!
下次自动登录
添加到资源集
+创建资源集
新建资源集
创建资源集目前仅对内测用户开放,python面试题整理(05)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
python面试题整理(05)
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢关注51Testing
Python测试开发面试题
发表于: 11:15 &作者:磁针石 & 来源:51Testing软件测试网采编
推荐标签:
  自动化面试试题1  试卷时间 60分钟,请不要在试卷上作答,用A4纸做答题纸作答。  一,中文单项选择题(30分,每个3分)  1.下列哪个语句在中是非法的?  A、x = y = z = 1 & & & & & & & & B、x = (y = z + 1)  C、x, y = y, x & & & & & & & & & & & &D、x &+= &y  2.关于Python内存管理,下列说法错误的是  A、变量不必事先声明 & & & & &B、变量无须先创建和赋值而直接使用  C、变量无须指定类型 & & & & D、可以使用del释放资源  3、下面哪个不是Python合法的标识符  A、int32 & & & & & & & & B、40XL & & & & C、self & & & & & & & &D、name  4、下列哪种说法是错误的  A、除字典类型外,所有标准对象均可以用于布尔  B、空字符串的布尔值是False  C、空列表对象的布尔值是False  D、值为0的任何数字对象的布尔值是False  5、下列表达式的值为True的是  A、5+4j & 2-3j & & & & & & & & & & & & B、3&2&2  C、(3,2)& ('a','b') & & & &D、’abc’ & ‘xyz’  6、Python不支持的数据类型有  A、char & & & & & & & & B、int & & & & & & & & &C、float & & & & & & & & D、list  7、关于Python中的复数,下列说法错误的是  A、表示复数的语法是real + image j & B、实部和虚部都是浮点数  C、虚部必须后缀j,且必须是小写 & D、方法conjugate返回复数的共轭复数  8、关于字符串下列说法错误的是  A、字符应该视为长度为1的字符串 & & & & & & & & B、字符串以\0标志字符串的结束  C、既可以用单引号,也可以用双引号创建字符串 & D、在三引号字符串中可以包含换行回车等特殊字符  9、以下不能创建一个字典的语句是  A、dict1 = {} & & & & & & & & & & & &B、dict2 = { 3 : 5 } & & & & C、dict3 = {[1,2,3]: “uestc”} & & & & D、dict4 = {(1,2,3): “uestc”}  10、下列Python语句正确的是  A、min = x &if &x & y & = y & & & & B、max = x & y ? x : y  C、if (x & y) & & & &print x & & & & D、while True : pass  二,英文单项选择题(30分)  1.what gets printed? Assuming python version 2.x()  print type(1/2)  A.&type 'int'& B.&type 'number'& C.&type 'float'& D.&type 'double'& E.&type 'tuple'&  2. What gets printed?()nums = set([1,1,2,3,3,3,4])print len(nums)  A.1 B.2 C.4 D.5 E.7  3. What gets printed?()counter = 1def doLotsOfStuff():global counterfor i in (1, 2, 3):counter += 1doLotsOfStuff()print counter  A.1 B.3 C.4 D.7 E.none of the above  4. What gets printed?()print r"\nwoow"  A.new line then the string: woow  B.the text exactly like this: r"\nwoow"  C.the text like exactly like this: \nwoow  D.the letter r and then newline then the text: woow  E.the letter r then the text like this: nwoow  5. Which numbers are printed?()for i in &range(2):print ifor i in range(4,6):print i  A.2, 4, 6 B.0, 1, 2, 4, 5, 6 C.0, 1, 4, 5 D.0, 1, 4, 5, 6, 7, 8, 9 E.1, 2, 4, 5, 6  6. What gets printed by the code snippet below?()import mathprint math.floor(5.5)  A.5 B.5.0 C.5.5 D.6 E.6.0  7. Assuming the filename for the code below is /usr/lib/python/person.py  and the program is run as: python /usr/lib/python/person.py  What gets printed?()class Person:def __init__(self):passdef getAge(self):print __name__p = Person()p.getAge()  A.Person B.getAge C.usr.lib.python.person D.main E.An exception is thrown  8. What gets printed?()names1 = ['Amir', 'Barry', 'Chales', 'Dao']if 'amir' in names1:print 1else:print 2  A.1 B.2 C.An exception is thrown  9. &What gets printed?()numbers = [1, 2, 3, 4]numbers.append([5,6,7,8])print len(numbers)  A.4 B.5 C.8 D.12 E.An exception is thrown  10. What gets printed?()kvps = { '1' : 1, '2' : 2 }theCopy = kvps.copy()kvps['1'] = 5sum = kvps['1'] + theCopy['1']print sum  A.1 B.2 C.6 D.10 E.An exception is thrown  三,笔试题(15分)  文件如下:# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologingopher:x:13:30:gopher:/var/gopher:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinusbmuxd:x:113:113:usbmuxd user:/:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologinrpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologinrtkit:x:499:497:RealtimeKit:/proc:/sbin/nologinavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologinabrt:x:173:173::/etc/abrt:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x::Anonymous NFS User:/var/lib/nfs:/sbin/nologinhaldaemon:x:68:68:HAL daemon:/:/sbin/nologingdm:x:42:42::/var/lib/gdm:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologinapache:x:48:48:Apache:/var/www:/sbin/nologinsaslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinpulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologintcpdump:x:72:72::/:/sbin/nologinneil:x:500:500::/home/neil:/bin/bashtest:x:501:501::/home/test:/bin/bashyulian:x:503:503::/home/yulian:/bin/bashpuppet:x:52:52:Puppet:/var/lib/puppet:/sbin/nologinjboss:x:504:504::/home/jboss:/bin/bash:x:27:27:MySQL Server:/var/lib/mysql:/bin/bashrelease:x:505:505::/home/release:/bin/bashredis:x:496:493:Redis Server:/var/lib/redis:/sbin/nologinmongodb:x:184:492:MongoDB Database Server:/var/lib/mongodb:/sbin/nologinfang:x:506:506::/home/fang:/bin/bashroundup:x:495:491:Roundup Issue Tracker:/var/lib/roundup:/sbin/nologinexim:x:93:93::/var/spool/exim:/sbin/nologindial:x:507:507::/home/dial:/bin/bashshare:x:508:508::/home/share:/bin/bash  请打印出用户目录在/home下面的的用户目录,如下/home/neil/home/test/home/yulian/home/jboss/home/release/home/fang/home/dial/home/share  建议一行搞定。  四,笔试题(15分)  用一条SQL语句 查询出每门课都大于80分的学生姓名 。表scores如下:  name & kecheng & fenshu  张三 & & 语文 & & & 81  张三 & & 数学 & & & 75  李四 & & 语文 & & & 76  五,python笔试题(20分)  1,python常见的命令行交互自动化模块有哪些?(2分)  2,python的底层网络交互模块有哪些?(2分)  3,python网络交互时,二进制打包解包的模块有哪些(2分)  4,python的测试框架有哪些?试列出常用的3个或更多(6分)  5,一行把[1,2,3,1,2,3] 中的重复元素剔除。(3分)  6,现在要你使用pyDes(DES加密)和标准库中的namedtuple,假设你之前没有接触过,你如何快速上手? (5分)
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道Python面试题
有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。1.将两序列合并为一个序列,并排序,为序列Source2.拿出最大元素Big,次大的元素Small3.在余下的序列S[:-2]进行平分,得到序列max,min4.将Small加到max序列,将Big加大min序列,
Python面试题相关栏目
Python面试题范文精选
1:Python如何实现单例模式?Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式:1.class Singleton(type):def __init__(cls, name, bases, dict):super(Singleton, cls)._... ...
Python允许你定义一种单行的小函数。定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。lambda函数可以接受任意个参数,包括可选参数,但是表达式只有... ...
Python面试题范文相关推荐
有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最... ...
如果需要迭代一个数字序列的话,可以使用range()函数,range()函数可以生成等差级数。如例:for i in range(5)print(i)这段代码将输出,... ...
Python的except用来捕获所有异常, 因为Python里面的每次错误都会抛出 一个异常,所以每个程序的错误都被当作一个运行时错误。一下是使用... ...
可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=])replacement是被替换成的文本string是需要... ...
函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变。例如,tuple([1,2,3])返回(1,2,3), tupl... ...
match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在位置匹配成功的话才... ...
函数的定义形式如下:def &name&(arg1, arg2,̷ argN):&statements&函数的名字也必须以字母开头,可以包括下划线& &,但不能把... ...
1、Python是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制一、对象的引用计数机制python内... ...
Python提供了将变量或值从一种类型转换成另一种类型的内置函数。int函数能够将符合数学格式数字型字符串转换成整数。否则,返回错误信息。&... ...
Python允许你定义一种单行的小函数。定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给一... ...
1:Python如何实现单例模式?Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式:1.class Singleton(type):de... ...
面试题目热门标签
友情链接链接合作QQ:}

我要回帖

更多关于 华为python面试题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信