Python:超级大全网上面试题搜集整理(一)

转载鸣谢:  python面试题汇总(史上最全)_编程ID的博客-CSDN博客

转载鸣谢: Python常考基础面试题_python面试题_袁袁袁袁满的博客-CSDN博客

目录

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

2. 什么是lambda函数?它有什么好处?

3. Python是如何进行类型转换的?

4. python多线程与多进程的区别

5. Python里面如何拷贝一个对象? 

6. 介绍一下except的用法和作用?

7 .Python中pass语句的作用是什么?

8.Python解释器种类以及特点?

9.列举布尔值为False的常见值?

10.字符串、列表、元组、字典每个常用的 5个方法?

11.lambda表达式格式以及应用场景? 

12.pass的作用?

13.*arg和 *kwarg作用?

14.is和==的区别?

15.简述Python的深浅拷贝以及应用场景?

16.Python垃圾回收机制?

17.python的可变类型和不可变类型? 

18.Python里面search()和match()的区别?

19.用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

20.Python里面如何生成随机数?

21.有没有一个工具可以帮助查找python的bug和进行静态的代码分析?

22. 简要描述Python的垃圾回收机制(garbage collection)。


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

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

2. 什么是lambda函数?它有什么好处?

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


3. Python是如何进行类型转换的?

①函数描述
② int(x [,base ]) 将x转换为一个整数

③long(x [,base ]) 将x转换为一个长整数

④float(x ) 将x转换到一个浮点数

⑤complex(real [,imag ]) 创建一个复数

⑥str(x ) 将对象 x 转换为字符串

⑦repr(x ) 将对象 x 转换为表达式字符串
⑧eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象

⑨tuple(s ) 将序列 s 转换为一个元组

⑩list(s ) 将序列 s 转换为一个列表

⑪chr(x ) 将一个整数转换为一个字符

⑫unichr(x ) 将一个整数转换为Unicode字符

⑬ord(x ) 将一个字符转换为它的整数值

⑭hex(x ) 将一个整数转换为一个十六进制字符串

⑮oct(x ) 将一个整数转换为一个八进制字符串

4. python多线程与多进程的区别

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

对于多线程来说,由于只有一个进程,所以不存在此必要性。 
多进程应该避免共享资源。

在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。

在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。
但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。

5. Python里面如何拷贝一个对象? 

        标准库中的copy模块提供了两个方法来实现拷贝。一个方法是copy,它返回和参数包含内容一样的对象。使用deepcopy方法,对象中的属性也被复制。

6. 介绍一下except的用法和作用?

Python的except用来捕获所有异常,因为Python里面的每次错误都会抛出一个异常,所以每个程序的错误都被当作一个运行时错误。

7 .Python中pass语句的作用是什么?

pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作

8.Python解释器种类以及特点?

Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释器:
CPython:当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。 IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。
PyPy:PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代进行动态编译,所以可以显著提高Python代码的执行速度。
Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
在Python的解释器中,使用广泛的是CPython,对于Python的编译,除了可以采用以上解释器进行编译外,技术高超的开发者还可以按照自己的需求自行编写Python解释器来执行 Python代码,十分的方便!

9.列举布尔值为False的常见值?

0, [] , () , {} , '' , False , None

10.字符串、列表、元组、字典每个常用的 5个方法?

字符串:repleace,strip,split,reverse,upper,lower,join.....     
列表:append,pop,,remove,sort,count,index.....                 
元组:index,count,__len__(),__dir__() 
字典:get,keys,values,pop,popitems,clear,,items.....

11.lambda表达式格式以及应用场景? 

表达式格式:lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式。冒号前是参数,冒号后是返回值。例如:lambda x : 2x

应用场景:经常与一些内置函数相结合使用,比如说map(),filter(),sorted(),reduce()等

12.pass的作用?

①空语句do nothing;
②保证格式完整;
③保证语义完整。

13.*arg和 *kwarg作用?

万能参数,解决了函数参数不固定的问题
*arg:会把位置参数转化为tuple
**kwarg:会把关键字参数转化为dict

14.is和==的区别?

is:判断内存地址是否相等;     ==:判断数值是否相等。 

15.简述Python的深浅拷贝以及应用场景?

copy():

浅copy,浅拷贝指仅仅拷贝数据集合的第一层数据 deepcopy():

深copy,深拷贝指拷贝数据集合的所有层

16.Python垃圾回收机制?

python采用的是引用计数机制为主,标记-清除和分代收集(隔代回收、分代回收)两种机制为辅的策略

计数机制:
 Python的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”解决容器对象可能产生的循环引用的问题。

通过分代回收以空间换取时间进一步提高垃圾回收的效率。

标记-清除:
标记-清除的出现打破了循环引用,也就是它只关注那些可能会产生循环引用的对象。
缺点:该机制所带来的额外操作和需要回收的内存块成正比。

隔代回收:

原理:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”, 垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾, 就应该减少对它的垃圾收集频率。那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量, 如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长。

17.python的可变类型和不可变类型? 

不可变类型(数字、字符串、元组、不可变集合); 

可变类型(列表、字典、可变集合)。 

18.Python里面search()和match()的区别?

match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个 string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话, match()就返回none 

19.用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

前者是贪婪匹配,会从头到尾匹配 xyz,而后者是非贪婪匹配,只匹配到第一个 >。

20.Python里面如何生成随机数?

import random;
random.random();


21.有没有一个工具可以帮助查找python的bug和进行静态的代码分析?


答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
Pylint是另外一个工具可以进行codingstandard检查

22. 简要描述Python的垃圾回收机制(garbage collection)。

这里能说的很多。你应该提到下面几个主要的点:
Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。
偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合 == o2和 == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。
Python中使用了某些启发式算法(heuristics)来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代(generation)。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千码君2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值