## 第一部分,Python基礎篇
1. Python和Java、PHP、C、C#、C++等其他語言的對比?
2. 簡述解釋型和編譯型編程語言?
3. Python解釋器種類以及特點?
4. 位和字節的關系?
5. b、B、KB、MB、GB 的關系?
6. 請至少列舉5個 PEP8 規范(越多越好)。
7. 通過代碼實現如下轉換:
二進制轉換成十進制:v = “0b1111011”
十進制轉換成二進制:v = 18
八進制轉換成十進制:v = “011”
十進制轉換成八進制:v = 30
十六進制轉換成十進制:v = “0x12”
十進制轉換成十六進制:v = 87
8. python遞歸的最大層數?
9. 求結果:
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or Flase and 1
10. ascii、unicode、utf-8、gbk 區別?
11. 字節碼和機器碼的區別?
12. 三元運算規則以及應用場景?
13. 列舉 Python2和Python3的區別?
14. Python3和Python2中 int 和 long的區別?
15. xrange和range的區別?
16. 文件操作時:xreadlines和readlines的區別?
17. 列舉布爾值為False的常見值?
18. 字符串、列表、元組、字典每個常用的5個方法?
19. lambda表達式格式以及應用場景?
20. pass的作用?
21. \*arg和\*\*kwarg作用
22. is和==的區別
23. 簡述Python的深淺拷貝以及應用場景?
24. Python垃圾回收機制?
25. Python的可變類型和不可變類型?
26. 列舉常見的內置函數?
27. filter、map、reduce的作用?
28. 如何安裝第三方模塊?以及用過哪些第三方模塊?
29. 至少列舉8個常用模塊都有那些?
30. re的match和search區別?
31. 什么是正則的貪婪匹配?
32. 求結果:a. \[ i % 2 for i in range(10) \] b. ( i % 2 for i in range(10) )
33. 求結果:a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
34. def func(a,b=\[\]) 這種寫法有什么坑?
35. 如何實現 “1,2,3” 變成 \[‘1’,’2’,’3’\] ?
36. 如何實現\[‘1’,’2’,’3’\]變成\[1,2,3\] ?
37. 比較: a = \[1,2,3\] 和 b = \[(1),(2),(3) \] 以及 b = \[(1,),(2,),(3,) \] 的區別?
38. 如何用一行代碼生成\[1,4,9,16,25,36,49,64,81,100\] ?
39. 一行代碼實現刪除列表中重復的值 ?
40. 如何在函數中設置一個全局變量 ?
41. logging模塊的作用?以及應用場景?
42. 請用代碼簡答實現stack 。
43. 常用字符串格式化哪幾種?
44. 簡述 生成器、迭代器、可迭代對象 以及應用場景?
45. 用Python實現一個二分查找的函數。
46. 談談你對閉包的理解?
47. os和sys模塊的作用?
48. 談談你對面向對象的理解?
49. Python面向對象中的繼承有什么特點?
50. 面向對象深度優先和廣度優先是什么?
61. 面向對象中super的作用?
52. 是否使用過functools中的函數?其作用是什么?
53. 列舉面向對象中帶爽下劃線的特殊方法,如:\_\_new\_\_、\_\_init\_\_
54. 如何判斷是函數還是方法?
55. 靜態方法和類方法區別?
56. 列舉面向對象中的特殊成員以及應用場景
57. 什么是反射?以及應用場景?
58. metaclass作用?以及應用場景?
59. 用盡量多的方法實現單例模式。
60. 裝飾器的寫法以及應用場景。
61. 異常處理寫法以及如何主動跑出異常(應用場景)
62. 什么是面向對象的mro
63. isinstance作用以及應用場景?
64. json序列化時,可以處理的數據類型有哪些?如何定制支持datetime類型?
65. json序列化時,默認遇到中文會轉換成unicode,如果想要保留中文怎么辦?
66. 什么是斷言?應用場景?
67. 有用過with statement嗎?它的好處是什么?
## 第二部分,網絡編程和并發
1. 簡述 OSI 七層協議。
2. 什么是C/S和B/S架構?
3. 簡述 三次握手、四次揮手的流程。
4. 什么是arp協議?
5. TCP和UDP的區別?
6. 什么是局域網和廣域網?
7. 為何基于tcp協議的通信比基于udp協議的通信更可靠?
8. 什么是socket?簡述基于tcp協議的套接字通信流程。
9. 什么是粘包? socket 中造成粘包的原因是什么? 哪些情況會發生粘包現象?
10. IO多路復用的作用?
11. select、poll、epoll 模型的區別?
12. 簡述 進程、線程、協程的區別 以及應用場景?
13. GIL鎖是什么鬼?
14. Python中如何使用線程池和進程池?
15. threading.local的作用?
16. 進程之間如何進行通信?
17. 什么是并發和并行?
18. 進程鎖和線程鎖的作用?
19. 如何修改本地hosts文件?
20. 生產者消費者模型應用場景及優勢?
21. 什么是cdn?
22. Nginx是什么及作用?
23. haproxy是什么以及作用?
24. 什么是負載均衡?
25. 什么是rpc及應用場景?
26. 簡述 asynio模塊的作用和應用場景。
27. 簡述 gevent模塊的作用和應用場景。
## 第三部分、數據庫和緩存
1. 列舉常見的關系型數據庫和非關系型都有那些?
2. MySQL常見數據庫引擎及比較?
3. 簡述數據三大范式?
4. 什么是事務?MySQL如何支持事務?
5. 簡述數據庫設計中一對多和多對多的應用場景?
6. 簡述觸發器、函數、視圖、存儲過程?
7. MySQL索引種類
8. 索引在什么情況下遵循最左前綴的規則?
9. 主鍵和外鍵的區別?
10. MySQL常見的函數?
11. 列舉 創建索引但是無法命中索引的8種情況。
12. 如何開啟慢日志查詢?
13. 數據庫導入導出命令(結構+數據)?
14. 數據庫優化方案?
15. char和varchar的區別?
16. 簡述MySQL的執行計劃?
17. 在對name做了唯一索引前提下,簡述以下區別:select \* from tb where name = ‘Oldboy-Wupeiqi’ 和select \* from tb where name = ‘Oldboy-Wupeiqi’ limit 1
18. 1000w條數據,使用limit offset 分頁時,為什么越往后翻越慢?如何解決?
19. 什么是索引合并?
20. 什么是覆蓋索引?
21. 簡述數據庫讀寫分離?
22. 簡述數據庫分庫分表?(水平、垂直)
23. redis和memcached比較?
24. redis中數據庫默認是多少個db 及作用?
25. python操作redis的模塊?
26. 如果redis中的某個列表中的數據量非常大,如果實現循環顯示每一個值?
27. redis如何實現主從復制?以及數據同步機制?
28. redis中的sentinel的作用?
29. 如何實現redis集群?
30. redis中默認有多少個哈希槽?
31. 簡述redis的有哪幾種持久化策略及比較?
32. 列舉redis支持的過期策略。
33. MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中都是熱點數據?
34. 如何基于redis實現消息隊列?
35. 如何基于redis實現發布和訂閱?以及發布訂閱和消息隊列的區別?
36. redis中的watch的命令的作用?
37. 什么是一致性哈希?Python中是否有相應模塊?
## 第四部分、前端、框架和其他
1. 談談你對http協議的認識。
2. 談談你對websocket協議的認識。
3. 是什么cors ?
4. 列舉Http請求中常見的請求方式?
5. 列舉Http請求中的狀態碼?
6. 列舉Http請求中常見的請求頭?
7. django、flask、tornado框架的比較?
8. 什么是wsgi?
9. django請求的生命周期?
10. 列舉django的內置組件?
11. 列舉django中間件的5個方法?以及django中間件的應用場景?
12. 簡述什么是FBV和CBV?
13. django的request對象是在什么時候創建的?
14. 如何給CBV的程序添加裝飾器?
15. 列舉django orm 中所有的方法(QuerySet對象的所有方法)
16. only和defer的區別?
17. select\_related和prefetch\_related的區別?
18. filter和exclude的區別?
19. 列舉django orm中三種能寫sql語句的方法。
20. django orm 中如何設置讀寫分離?
21. F和Q的作用?
22. values和values\_list的區別?
23. 如何使用django orm批量創建數據?
24. django的Form和ModeForm的作用?
25. django的Form組件中,如果字段中包含choices參數,請使用兩種方式實現數據源實時更新。
26. django的Model中的ForeignKey字段中的on\_delete參數有什么作用?
27. django中csrf的實現機制?
28. django如何實現websocket?
29. 基于django使用ajax發送post請求時,都可以使用哪種方法攜帶csrf token?
30. django中如何實現orm表中添加數據時創建一條日志記錄。
31. django緩存如何設置?
32. django的緩存能使用redis嗎?如果可以的話,如何配置?
33. django路由系統中name的作用?
34. django的模板中filter和simple\_tag的區別?
35. django-debug-toolbar的作用?
36. django中如何實現單元測試?
37. 解釋orm中 db first 和 code first的含義?
38. django中如何根據數據庫表生成model中的類?
39. 使用orm和原生sql的優缺點?
40. 簡述MVC和MTV
41. django的contenttype組件的作用?
42. 談談你對restfull 規范的認識?
43. 接口的冪等性是什么意思?
44. 什么是RPC?
45. Http和Https的區別?
46. 為什么要使用django rest framework框架?
47. django rest framework框架中都有那些組件?
48. django rest framework框架中的視圖都可以繼承哪些類?
49. 簡述 django rest framework框架的認證流程。
50. django rest framework如何實現的用戶訪問頻率控制?
51. Flask框架的優勢?
52. Flask框架依賴組件?
53. Flask藍圖的作用?
54. 列舉使用過的Flask第三方組件?
55. 簡述Flask上下文管理流程?
56. Flask中的g的作用?
57. Flask中上下文管理主要涉及到了那些相關的類?并描述類主要作用?
58. 為什么要Flask把Local對象中的的值stack 維護成一個列表?
59. Flask中多app應用是怎么完成?
60. 在Flask中實現WebSocket需要什么組件?
61. wtforms組件的作用?
62. Flask框架默認session處理機制?
63. 解釋Flask框架中的Local對象和threading.local對象的區別?
64. Flask中 blinker 是什么?
65. SQLAlchemy中的 session和scoped\_session 的區別?
66. SQLAlchemy如何執行原生SQL?
67. ORM的實現原理?
68. DBUtils模塊的作用?
69. SQLAchemy中如何為表設置引擎和字符編碼?
70. SQLAchemy中如何設置聯合唯一索引?
71. git常見命令作用:
72. 簡述以下git中stash命令作用以及相關其他命令。
73. git 中 merge 和 rebase命令 的區別。
74. 公司如何基于git做的協同開發?
75. 如何基于git實現代碼review?
76. git如何實現v1.0 、v2.0 等版本的管理?
77. 什么是敏捷開發?
78. 簡述 jenkins 工具的作用?
79. 簡述 RabbitMQ、Kafka、ZeroMQ的區別?
80. RabbitMQ如何在消費者獲取任務后未處理完前就掛掉時,保證數據不丟失?
81. RabbitMQ如何對消息做持久化?
82. RabbitMQ如何控制消息被消費的順序?
83. 以下RabbitMQ的exchange type分別代表什么意思?如:fanout、direct、topic。
84. 簡述 celery 是什么以及應用場景?
85. 簡述celery運行機制。
86. celery如何實現定時任務?
87. celery中裝飾器 @app.task 和 @shared_task的區別?
88. 簡述 vitualenv 及應用場景?
89. 簡述 pipreqs 及應用場景?
90. 在Python中使用過什么代碼檢查工具?
91. B Tree和B+ Tree的區別?
92. 請列舉常見排序并通過代碼實現任意三種。
93. 請列舉常見查找并通過代碼實現任意三種。
94. 請列舉你熟悉的設計模式?
95. 列舉熟悉的的Linux命令。
96. 解釋 PV、UV 的含義?
97. 解釋 QPS的含義?
98. uwsgi和wsgi的區別?
99. supervisor的作用?
100. 什么是反向代理?
- Python學習
- Python基礎
- Python初識
- 列表生成式,生成器,可迭代對象,迭代器詳解
- Python面向對象
- Python中的單例模式
- Python變量作用域、LEGB、閉包
- Python異常處理
- Python操作正則
- Python中的賦值與深淺拷貝
- Python自定義CLI三方庫
- Python并發編程
- Python之進程
- Python之線程
- Python之協程
- Python并發編程與IO模型
- Python網絡編程
- Python之socket網絡編程
- Django學習
- 反向解析
- Cookie和Session操作
- 文件上傳
- 緩存的配置和使用
- 信號
- FBV&&CBV&&中間件
- Django補充
- 用戶認證
- 分頁
- 自定義搜索組件
- Celery
- 搭建sentry平臺監控
- DRF學習
- drf概述
- Flask學習
- 項目拆分
- 三方模塊使用
- 爬蟲學習
- Http和Https區別
- 請求相關庫
- 解析相關庫
- 常見面試題
- 面試題
- 面試題解析
- 網絡原理
- 計算機網絡知識簡單介紹
- 詳解TCP三次握手、四次揮手及11種狀態
- 消息隊列和數據庫
- 消息隊列之RabbitMQ
- 數據庫之Redis
- 數據庫之初識MySQL
- 數據庫之MySQL進階
- 數據庫之MySQL補充
- 數據庫之Python操作MySQL
- Kafka常用命令
- Linux學習
- Linux基礎命令
- Git
- Git介紹
- Git基本配置及理論
- Git常用命令
- Docker
- Docker基本使用
- Docker常用命令
- Docker容器數據卷
- Dockerfile
- Docker網絡原理
- docker-compose
- Docker Swarm
- HTML
- CSS
- JS
- VUE