Python 基础数据结构
- List 如何排序,sorted和sort的区别 # sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。
- Sort内部实现机制是什么?时间复杂度是都是?# https://github.com/python/cpython/blob/main/Objects/listsort.txt
- List 和 tuple 的区别?# 可变和不可变
- Tuple 是不可变的,为什么可以包含可变的list?
- List 去重的几种方法?# 循环、set、库等
- set 是如何实现去重的?# 哈希表
- set,dict 底层都是哈希表,具体如何实现的?
- Python的哈希表实现是用什么方法来解决哈希冲突的?# 开放寻址法
- 还有别的解决方法吗,他们各自的优缺点是什么?# https://zhuanlan.zhihu.com/p/33496977
Python 特性
- 迭代器和生成器的区别?# https://www.zhihu.com/question/20829330/answer/133606850
- 在业务中常用的生成器的场景?
- new 和 init 的区别?# https://github.com/taizilongxu/interview_python#15-__new__%E5%92%8C__init__%E7%9A%84%E5%8C%BA%E5%88%AB
- new 在业务的使用的场景?
- 业务中还使用了其它哪些魔法方法, 优点是什么?
- GIL 锁的影响
- 线程在哪几种情况下会释放GIL锁?
- 如何对Python程序加速?
- 如何减少Python的内存占用?
- Python垃圾回收机制 # https://github.com/taizilongxu/interview_python#24-python%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%9C%BA%E5%88%B6
- 还有那几种内存回收机制, 各自的优缺点? # https://mp.weixin.qq.com/s?__biz=MzUzMjk0ODI0OA==&mid=2247483727&idx=1&sn=abe1e6896cb398bde2517b469d07afa0&chksm=faaa3538cdddbc2e81e146f74fd7050a6ac9a89a13b024717c9d56888de4a19cb0973f6bbe94&mpshare=1&scene=24&srcid=04105l1DG5QXbS4dfUB6aWeX&key=fb1dd35c5489928a678ed39df498f0d7f7ce5ef29135addb7c0573a4d19220f05d9c2522d44eb6315eaa9b6590d1f3afaaf06a3e96a1abeb1fb22d2870f9185f446a1e704aa2b16bd0775cd7be370a43&ascene=14&uin=Mjg4MTE5ODIzMA%3D%3D&devicetype=Windows+10&version=62060739&lang=zh_CN&pass_ticket=bqbjocTiytbymxqE%2FkEqbcTWuMs1uh6W%2BK2eHz3sKwLI%2BWRx6of4k%2BmAlALLk8iH
常用库
数据库、缓存
- 事务的特性?
- MySQL是如何实现这些特性的?
- 索引的数据结构是?
- B-Tree 和B+Tree 的区别?http://blog.codinglabs.org/articles/theory-of-mysql-index.html
- InnoDB为什么使用B+Tree?
- MySql 主从同步是如何实现的?
- 分库分表的如何分,各自的优缺点?
- redis的优缺点、使用场景?
- redis扩展(未完成)
- redis6.0更新了什么?解决的什么问题?
操作系统
- 进程和线程的区别?
网络
- 浏览器打开一个网页的全过程?dns、tcp、http、https
分布式
- redis集群方案
- 数据分片算法
- 选举算法
开放性问题
- 你阅读过哪些库的源码(第三方库或标准库等)?他们的解决了哪些问题?适应场景或范围是什么?
- 你觉得其中最优秀的设计或实现是什么?
- 你的业务中使用了哪些库?在使用中是否碰到了问题?
- 你是如何定位、解决这些问题的?是否还有更优解?
- 如果是bug,如何避免同样的问题再次出现?