Python-2W 月薪,面试题10道(全部附标准答案)看完面试不愁了

面试题目一:python下多线程的限制以及多进程中传递参数的方式,以及区别

(1)python下多线程的限制以及多进程中传递参数的方式

python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。

多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array

(2)python多线程与多进程的区别

在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie)。所以,有必要对每个Process对象调用join()方法 (实际上等同于wait)。对于多线程来说,由于只有一个进程,所以不存在此必要性。

多进程应该避免共享资源。在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。

t01dca81f4db04f532b.jpg?size=640x330

面试题目二:lambada函数

lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。

面试题目三:介绍一下Python中webbrowser的用法?

webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法。

webbrowser定义了如下的异常:

exception webbrowser.Error, 当浏览器控件发生错误是会抛出这个异常

webbrowser有以下方法:

webbrowser.open(url[, new=0[, autoraise=1]])

这个方法是在默认的浏览器中显示url, 如果new = 0, 那么url会在同一个浏览器窗口下打开,如果new = 1, 会打开一个新的窗口,如果new = 2, 会打开一个新的tab, 如果autoraise = true, 窗口会自动增长。

webbrowser.open_new(url)

在默认浏览器中打开一个新的窗口来显示url, 否则,在仅有的浏览器窗口中打开url

webbrowser.open_new_tab(url)

在默认浏览器中当开一个新的tab来显示url, 否则跟open_new()一样

webbrowser.get([name]) 根据name返回一个浏览器对象,如果name为空,则返回默认的浏览器

webbrowser.register(name, construtor[, instance])

注册一个名字为name的浏览器,如果这个浏览器类型被注册就可以用get()方法来获取。

t0155bfbf78e333df7f.jpg?size=640x565

与C表达式 bool ? a : b类似,但是bool and a or b,当 a 为假时,不会象C表达式 bool ? a : b 一样工作

应该将 and-or 技巧封装成一个函数:

t018fdcdce851567c1d.jpg?size=536x44

因为 [a] 是一个非空列表,它永远不会为假。甚至 a 是 0 或 '' 或其它假值,列表[a]为真,因为它有一个元素。

面试题目五:Python是如何进行类型转换的?

t018cbb0a3965cf7c8d.jpg?size=640x191

1 函数 描述
2 int(x [,base ]) 将x转换为一个整数
3 long(x [,base ]) 将x转换为一个长整数
4 float(x ) 将x转换到一个浮点数
5 complex(real [,imag ]) 创建一个复数
6 str(x ) 将对象 x 转换为字符串
7 repr(x ) 将对象 x 转换为表达式字符串
8 eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
9 tuple(s ) 将序列 s 转换为一个元组
10 list(s ) 将序列 s 转换为一个列表
11 chr(x ) 将一个整数转换为一个字符
12 unichr(x ) 将一个整数转换为Unicode字符
13 ord(x ) 将一个字符转换为它的整数值
14 hex(x ) 将一个整数转换为一个十六进制字符串
15 oct(x ) 将一个整数转换为一个八进制字符串


面试题目六:Python里面如何实现tuple和list的转换?

t01ca86e82898a84434.jpg?size=640x189

t01942adf4a8a483982.jpg?size=532x160

1 >>> l = [1,1,2,3,4,5,4]
2 >>> list(set(l))
3 [1, 2, 3, 4, 5]
4 或者
5 d = {}
6 for x in mylist:
7 d[x] = 1
8 mylist = list(d.keys())
面试题目八:如何用Python来进行查询和替换一个文本字符串?

可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0])

replacement是被替换成的文本

string是需要被替换的文本

count是一个可选参数,指最大被替换的数量

面试题目九:python程序中文输出问题怎么解决?

用encode和decode

如:

t012a6464730c7ca088.jpg?size=618x271

 

1 import os.path
2 import xlrd,sys

4 Filename=’/home/tom/Desktop/1234.xls’
5 if not os.path.isfile(Filename):
6 raise NameError,”?is not a valid filename”?lename

8 bk=xlrd.open_workbook(Filename)
9 shxrange=range(bk.nsheets)
10 print shxrange
11 
12 for x in shxrange:
13 p=bk.sheets()[x].name.encode(‘utf-8′)
14 print p.decode(‘utf-8′)

方法二:

在文件开头加上

1 reload(sys)
2 sys.setdefaultencoding(‘utf8′)


面试题目十:python如何捕获异常

(1)使用try和except语句来捕获异常

t0157d5f4be26fea730.jpg?size=524x213

1 try: 
2 block 
3 except [exception,[data…]]: 
4 block 

6 try: 
7 block 
8 except [exception,[data...]]: 
9 block 
10 else: 
11 block 

捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该python 异常处理的except代码块捕获所有的异常

(2)用raise语句手工引发一个异常:

t0189c2556120b4d517.jpg?size=575x165

1 raise [exception[,data]] 

3 try: 
4 raise MyError #自己抛出一个异常 
5 except MyError: 
6 print 'a error' 

8 raise ValueError,’invalid argument’ 

(3)采用sys模块回溯最后的异常

t013ad550afd83cfbb7.jpg?size=525x121

1 import sys 
2 try: 
3 block 
4 except: 
5 info=sys.exc_info() 
6 print info[0],":",info[1] 

好了,就到这里了!建议收藏哦!

转载自快传号:瑰姿艳逸的迎春花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值