最近一直在面试,一直觉得面试就是一个交互的过程,在面试中也经常碰到一些自己不会甚至没有听过的问题,把这些问题记录在这里,也顺便Google一下学习一下 ^_^ (这篇文章还在持续更新中,如果有些问题没有回答好,可能还会更新)
1. Python多线程有什么问题?
不知道这个问题的答案,我觉得蛮遗憾的。虽然用了Python两三年了,偶尔也用到multithreading,但是因为一直用Python写工具,所以我从来没有分析过性能问题,自然而然就不知道GIL。
这里有一篇不错的文章介绍GIL,我就不啰嗦了:http://zhuoqiang.me/a/python-thread-gil-and-ctypes
关于GIL我们需要知道的是:
(1) 因为GIL的存在并且在Python 3.x还一直存在,Python的多线程不会和C/C++/Java那样,发挥多核的优势。在I/O密集的情况下,GIL的影响略小;但是在计算密集的情况下,GIL影响很大,可能还不如不用多线程。
(2) 解决办法:(a)用multiprocessing (b)用ctypes
注意,GIL只是对CPython有影响,Jython没有影响。
2. Python的super有什么问题?
这个题目也许对方希望的答案是super不是一个函数,是一个类。但是我觉得只要坚持一直使用super,并且知道mro,可能这个题目就不是问题。
(1) 一直使用super,是说在继承链始终使用super,不要有的地方用super,有的用类名。譬如下面的:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
class Base(object):
def __init__(self):
print('BEGIN Base')
print('END Base')
class A(Base):
def __init__(self):
print('BEGIN A')
super(A, self).__init__()
print('END A')
class B(Base):
def __init__(self):
print('BEGIN B')
Base.__init__(self)
print('END B')
class AB(A, B):
def __init__(self):
print('BEGIN AB')
A.__init__(self)
B.__init__(self)
print('END AB')
if __name__ == '__main__':
ab = AB()
不要这么用,结果会很诡异。你可以试一下。而应该这么写:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
class Base(object):
def __init__(self):
print('BEGIN Base')
print('END Base')
class A(Base):
def __init__(self):
print('BEGIN A')
super(A, self).__init__()
print('END A')
class B(Base):
def __init__(self):
print('BEGIN B')
super(B, self).__init__()
print('END B')
class AB(A, B):
def __init__(self):
print('BEGIN AB')
super(AB, self).__init__()
print('END AB')
if __name__ == '__main__':
ab = AB()
结果如下:
BEGIN AB
BEGIN A
BEGIN B
BEGIN Base
END Base
END B
END A
END AB
这个就是MRO,记住顺序就好。
当然如果你想知道更详细的解释,可以看这个:http://blog.csdn.net/johnsonguo/article/details/585193
3. C和C++使用多线程有什么区别 (TODO)
分享到:
相关推荐
小白必看;前端一年工作经验,遇到的各种问题总结, 未完待续
9--[小黑点的旅行(未完待续)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码9--[小黑点的旅行(未完待续)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码9--[小黑点的旅行(未完待续)].zip...
android播放器未完待续
softmax回归相关Python代码(未完待续)
供热工程设计说明文书未完待续.doc
个人手机网游作品展示,未完待续
大数据Java面试总结(未完待续).docx
EOS开发入门之cleos命令解读(未完待续)1
循环水冷却水系统未完待续资料PPT学习教案.pptx
教程名称:linux服务器性能调优文档(未完待续)课程目录:linux服务器性能调优01linux服务器性能调优02linux服务器性能调优03linux服务器性能调优04linux服务器性能调优05linux服务器性能调优06linux服务器性能调优07...
北京理工大学<Python机器学习应用>超详细学习笔记和代码注释(未完待续)
水泥行业报告:梦回2010年,水泥行情未完待续
2015年高中语文优秀作文青春未完待续…素材
PHP环境探针(未完待续,仅供参考) 集成 oracle,redis,imagick等检测 使用前需简单配置 路径 谢谢
A股市场策略周报:跨年行情,不要犹豫,未完待续
20210705-建信期货-聚烯烃半年报:扩能周期未完待续.pdf
《Web前端入门_从零开始做网站》讲义(未完待续).pdf
系统集成项目管理工程师重点冲刺 计算题详细解析 未完待续PPT学习教案.pptx
小黑点的旅行(未完待续)-少儿编程scratch项目源代码文件案例素材.zip
电力设备与新能源行业研究:光伏内需回暖获验证,特斯拉好戏未完待续.pdf