Python 常用面试题
来源:互联网 发布:win8 mac地址修改器 编辑:程序博客网 时间:2024/06/08 08:07
python:3.5
欢迎加入学习交流QQ群:657341423
1.可变类型 Vs 不可变类型
可变类型(mutable):列表,字典,集合
不可变类型(unmutable):数字,字符串,元组
这里的可变不可变,是指内存中的那块内容(value)是否可以被改变
参考资料:http://www.cnblogs.com/huamingao/p/5809936.html
2.并发编程——全局解释锁(GIL)
Python作为一种解释型语言,由于使用了全局解释锁(GIL)的原因,其代码不能同时在多核CPU上并发的运行。这也导致在Python中使用多线程编程并不能实现并发,我们得使用其他的方法在Python中实现并发编程。
Python并不支持真正意义上的多线程。Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。Python中有一个被称为Global Interpreter Lock(GIL)的东西,它会确保任何时候你的多个线程中,只有一个被执行。线程的执行速度非常之快,会让你误以为线程是并行执行的,但是实际上都是轮流执行。经过GIL这一道关卡处理,会增加执行的开销。这意味着,如果你想提高代码的运行速度,使用threading包并不是一个很好的方法。
参考资料:
http://www.cnblogs.com/vipchenwei/p/7221851.html?utm_source=itdadao&utm_medium=referral
3.数据结构和算法
不管任何开发语言,数据结构和算法都是必须具备的,不然只能算是个码农,算不上真正的程序员。
参考资料:http://www.cnblogs.com/hanahimi/p/4692225.html
4.@staticmethod和@classmethod和@property
@classmethod, @staticmethod和@property这三个装饰器的使用对象是在类中定义的函数
参考资料:
http://blog.csdn.net/u010571844/article/details/50728991
http://www.cnblogs.com/wangyongsong/p/6750454.html
5.类变量和实例变量
参考资料:http://www.cnblogs.com/sherylwang/p/5537778.html
6.这两个参数是什么意思:*args,**kwargs
如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args;如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用**kwargs。args和kwargs这两个标识符是约定俗成的用法,你当然还可以用*bob和**billy
,但是这样就并不太妥。
下面是具体的示例:
def f(*args,**kwargs): print args, kwargsl = [1,2,3]t = (4,5,6)d = {'a':7,'b':8,'c':9}f()f(1,2,3) # (1, 2, 3) {}f(1,2,3,"groovy") # (1, 2, 3, 'groovy') {}f(a=1,b=2,c=3) # () {'a': 1, 'c': 3, 'b': 2}f(a=1,b=2,c=3,zzz="hi") # () {'a': 1, 'c': 3, 'b': 2, 'zzz': 'hi'}f(1,2,3,a=1,b=2,c=3) # (1, 2, 3) {'a': 1, 'c': 3, 'b': 2}f(*l,**d) # (1, 2, 3) {'a': 7, 'c': 9, 'b': 8}f(*t,**d) # (4, 5, 6) {'a': 7, 'c': 9, 'b': 8}f(1,2,*t) # (1, 2, 4, 5, 6) {}f(q="winning",**d) # () {'a': 7, 'q': 'winning', 'c': 9, 'b': 8}f(1,2,*t,q="winning",**d) # (1, 2, 4, 5, 6) {'a': 7, 'q': 'winning', 'c': 9, 'b': 8}def f2(arg1,arg2,*args,**kwargs): print arg1,arg2, args, kwargsf2(1,2,3) # 1 2 (3,) {}f2(1,2,3,"groovy") # 1 2 (3, 'groovy') {}f2(arg1=1,arg2=2,c=3) # 1 2 () {'c': 3}f2(arg1=1,arg2=2,c=3,zzz="hi") # 1 2 () {'c': 3, 'zzz': 'hi'}f2(1,2,3,a=1,b=2,c=3) # 1 2 (3,) {'a': 1, 'c': 3, 'b': 2}f2(*l,**d) # 1 2 (3,) {'a': 7, 'c': 9, 'b': 8}f2(*t,**d) # 4 5 (6,) {'a': 7, 'c': 9, 'b': 8}f2(1,2,*t) # 1 2 (4, 5, 6) {}f2(1,1,q="winning",**d) # 1 1 () {'a': 7, 'q': 'winning', 'c': 9, 'b': 8}f2(1,2,*t,q="winning",**d) # 1 2 (4, 5, 6) {'a': 7, 'q': 'winning', 'c': 9, 'b': 8}
7.Python垃圾回收机制
参考资料:http://www.jb51.net/article/79306.htm
8.如何写出高效的代码
可以使用import cProfile
程序分析包分析程序运行时间
参考资料:http://blog.csdn.net/asukasmallriver/article/details/74356771
http://blog.csdn.net/xiemanr/article/details/72763234
9.PEP8规范
参考资料:http://blog.sae.sina.com.cn/archives/4781
Python之禅
参考资料:http://blog.csdn.net/zhoudaxia/article/details/23605263
WSGI
参考资料:http://blog.csdn.net/li_101357/article/details/52748686
参考资料:
http://python.jobbole.com/88653/
- Python 常用面试题
- java常用面试题
- 常用Java面试题
- 常用Java面试题
- 常用Java面试题
- 常用Java面试题
- 常用java面试题
- 常用Java面试题
- 常用面试题
- Oracle 常用面试题
- java常用面试题
- 常用技术面试题
- sql常用面试题
- Android常用面试题
- Java 常用面试题
- Java常用面试题
- java常用面试题
- .net面试题常用面试题
- 状态栏配置
- Andrew Ng 深度学习课程Deeplearning.ai 编程作业——deep Neural network for image classification(1-4.2)
- QT 构建时错误
- 2017-11-02
- invalidate和requestLayout、postinvalidate方法使用说明
- Python 常用面试题
- 多态中继承调用的细节
- Java 往文件中写数据,新写入的数据总是覆盖原有数据,实现追加功能
- iOS 二维码扫描登录
- 对serlvet的一些认识
- ReentrantLock重入锁
- UIAutomator2.0详解(UIDevice篇----获取设备名称和Package名称)
- gradle.build中dependencie依赖由compile变为implementation
- 语音合成