提示:作者将用一个系列的博客,总结机器/深度学习算法工程师岗位面试中常见的一些知识点,以帮助小伙伴们更好的应对面试。本系列的内容包括如下:
系列一:机器学习相关基础知识小Tip
系列二:Python基础总结
系列三:CNN相关知识
系列四:Transformer相关知识总结
系列五:经典/热门模型介绍,及深度学习常用知识点
系列六:PyTorch相关知识点及端侧部署基础知识
注:以防再也找不到我,可以收藏博客、关注作者,查看最新内容哦(持续更新中…)
文章目录
- 系列二:Python基础总结
-
- 1. Python的垃圾回收机制?
- 2. 线程、协程、GIL锁相关知识
- 3. 浅拷贝和深拷贝
- 4. Python是解释语言还是编译语言?
- 5. Python中列表和元组的区别?
- 6. Python中迭代器的概念?
- 7. Python中dict(字典)的底层结构?
- 8. 常用的深度学习框架有哪些,都是哪家公司开发的?
- 9. Python中生成器的相关知识?
- 10. Python中装饰器的相关知识?
- 11. 面向对象程序设计
- 12.链表数组的区别?
- 13. 闭包:
- 14. 单下划线和双下划线的区别?
- 15. 什么是序列化(pickling)和反序列化(unpickling)?
- 16. Python是如何进行内存管理的?
- 17. 能够找到程序中的bug进行静态分析的工具有哪些?
- 18. 参数是如何进行值传递或引用传递的?
系列二:Python基础总结
1. Python的垃圾回收机制?
在Python中,使用引用计数进行垃圾回收(当某对象的引用计数值为0,那么它的内存就会被立即释放掉);同时通过标记-清除算法解决容器对象可能产生的循环引用问题(标记阶段,遍历所有的对象,如果还有对象引用它,那么就标记该对象为可达;清除阶段,再次遍历对象,如果发现某个对象没有标记为可达,则就将其回收);最后,在循环引用对象的回收中,整个应用程序会被暂停,为了减少应用程序暂停的时间,Python 通过“分代回收”以空间换时间的方法提高垃圾回收效率(对象存在时间越长,越可能不是垃圾,应该越少去收集。这样在执行标记-清除算法时可以有效减小遍历的对象数,从而提高垃圾回收的速度)。
2. 线程、协程、GIL锁相关知识
1)CPU密集型也叫计算密集型,是指I/O在很短时间就可以完成,但CPU需要大量的计算和处理,特点:CPU占用率相当高。如:压缩解压缩,加密解密,正则表达式搜索。
2)I/O密集型指的是系统运作大部分的状况是CPU在等I/O(硬盘/内存)的读/写操作,CPU占用率仍然较低。如:文件处理程序,网络爬虫程序,读写数据程序。
3)多进程Process(可用multiprocessing实现)。优点:同一时刻,可以利用多核CPU并行运算(并行执行)。缺点:占用资源最多,可启动数目比线程少。适用于CPU密集型计算。一个进程可启动N个线程。
4)多线程Thread(threading模块)。优点:相比于进程,更轻量级、占