花了24個小時整理的309道Python面試題
有緣人如果看到這些題,只有問題沒有答案,如果你知道答案不妨把答案寫到下面(記得帶上問題序號),來證明下你到底有多水,哈哈哈哈哈哈哈哈哈哈哈。
第一部分 Python基礎(chǔ)篇(80題)
1.為什么學(xué)習(xí)Python?
2.通過什么途徑學(xué)習(xí)的Python?
3.Python和Java、PHP、C、C#、C++等其他語言的對比?
4.簡述解釋型和編譯型編程語言?
5.Python解釋器種類以及特點?
6.位和字節(jié)的關(guān)系?
7.b、B、KB、MB、GB 的關(guān)系?
8.請至少列舉5個 PEP8 規(guī)范(越多越好)。
9.通過代碼實現(xiàn)如下轉(zhuǎn)換:
二進制轉(zhuǎn)換成十進制:v = “0b1111011”
十進制轉(zhuǎn)換成二進制:v = 18
八進制轉(zhuǎn)換成十進制:v = “011”
十進制轉(zhuǎn)換成八進制:v = 30
十六進制轉(zhuǎn)換成十進制:v = “0x12”
十進制轉(zhuǎn)換成十六進制:v = 87
10.請編寫一個函數(shù)實現(xiàn)將IP地址轉(zhuǎn)換成一個整數(shù)。
如 10.3.9.12 轉(zhuǎn)換規(guī)則為:
- 10 00001010
- 3 00000011
- 9 00001001
- 12 00001100
再將以上二進制拼接起來計算十進制結(jié)果:00001010 00000011 00001001 00001100 = ?
11.python遞歸的最大層數(shù)?
12.求結(jié)果:
- 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
13.ascii、unicode、utf-8、gbk 區(qū)別?
14.字節(jié)碼和機器碼的區(qū)別?
15.三元運算規(guī)則以及應(yīng)用場景?
16.列舉 Python2和Python3的區(qū)別?
17.用一行代碼實現(xiàn)數(shù)值交換:
- a = 1
- b = 2
18.Python3和Python2中 int 和 long的區(qū)別?
19.xrange和range的區(qū)別?
20.文件操作時:xreadlines和readlines的區(qū)別?
21.列舉布爾值為False的常見值?
22.字符串、列表、元組、字典每個常用的5個方法?
23.lambda表達式格式以及應(yīng)用場景?
24.pass的作用?
25.*arg和**kwarg作用
26.is和==的區(qū)別
27.簡述Python的深淺拷貝以及應(yīng)用場景?
28.Python垃圾回收機制?
29.Python的可變類型和不可變類型?
30.求結(jié)果:
- v = dict.fromkeys(['k1','k2'],[])v[‘k1’].append(666)print(v)v[‘k1’] = 777print(v)
31.求結(jié)果:
- def num(): return[lambda x:i*x for i in range(4)]print([m(2) for m in num()])
32.列舉常見的內(nèi)置函數(shù)?
33.filter、map、reduce的作用?
34.一行代碼實現(xiàn)9*9乘法表
35.如何安裝第三方模塊?以及用過哪些第三方模塊?
36.至少列舉8個常用模塊都有那些?
37.re的match和search區(qū)別?
38.什么是正則的貪婪匹配?
39.求結(jié)果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )
40.求結(jié)果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
41.def func(a,b=[]) 這種寫法有什么坑?
42.如何實現(xiàn) “1,2,3” 變成 [‘1’,’2’,’3’] ?
43.如何實現(xiàn)[‘1’,’2’,’3’]變成[1,2,3] ?
44.比較: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的區(qū)別?
45.如何用一行代碼生成[1,4,9,16,25,36,49,64,81,100] ?
46.一行代碼實現(xiàn)刪除列表中重復(fù)的值 ?
47.如何在函數(shù)中設(shè)置一個全局變量 ?
48.logging模塊的作用?以及應(yīng)用場景?
49.請用代碼簡答實現(xiàn)stack 。
50.常用字符串格式化哪幾種?
51.簡述 生成器、迭代器、可迭代對象 以及應(yīng)用場景?
52.用Python實現(xiàn)一個二分查找的函數(shù)。
53.談?wù)勀銓﹂]包的理解?
54.os和sys模塊的作用?
55.如何生成一個隨機數(shù)?
56.如何使用python刪除一個文件?
57.談?wù)勀銓γ嫦驅(qū)ο蟮睦斫猓?/p>
58.Python面向?qū)ο笾械睦^承有什么特點?
59.面向?qū)ο笊疃葍?yōu)先和廣度優(yōu)先是什么?
60.面向?qū)ο笾衧uper的作用?
61.是否使用過functools中的函數(shù)?其作用是什么?
62.列舉面向?qū)ο笾袔聞澗€的特殊方法,如:__new__、__init__
63.如何判斷是函數(shù)還是方法?
64.靜態(tài)方法和類方法區(qū)別?
65.列舉面向?qū)ο笾械奶厥獬蓡T以及應(yīng)用場景
66.1、2、3、4、5 能組成多少個互不相同且無重復(fù)的三位數(shù)
67.什么是反射?以及應(yīng)用場景?
68.metaclass作用?以及應(yīng)用場景?
69.用盡量多的方法實現(xiàn)單例模式。
70.裝飾器的寫法以及應(yīng)用場景。
71.異常處理寫法以及如何主動跑出異常(應(yīng)用場景)
72.什么是面向?qū)ο蟮膍ro
73.isinstance作用以及應(yīng)用場景?
74.寫代碼并實現(xiàn):
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same element twice.Example: Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]
75.json序列化時,可以處理的數(shù)據(jù)類型有哪些?如何定制支持datetime類型?
76.json序列化時,默認遇到中文會轉(zhuǎn)換成unicode,如果想要保留中文怎么辦?
77.什么是斷言?應(yīng)用場景?
78.有用過with statement嗎?它的好處是什么?
79.使用代碼實現(xiàn)查看列舉目錄下的所有文件。
80.簡述 yield和yield from關(guān)鍵字。
第二部分 網(wǎng)絡(luò)編程和并發(fā)(34題)
- 簡述 OSI 七層協(xié)議。
- 什么是C/S和B/S架構(gòu)?
- 簡述 三次握手、四次揮手的流程。
- 什么是arp協(xié)議?
- TCP和UDP的區(qū)別?
- 什么是局域網(wǎng)和廣域網(wǎng)?
- 為何基于tcp協(xié)議的通信比基于udp協(xié)議的通信更可靠?
- 什么是socket?簡述基于tcp協(xié)議的套接字通信流程。
- 什么是粘包? socket 中造成粘包的原因是什么? 哪些情況會發(fā)生粘包現(xiàn)象?
- IO多路復(fù)用的作用?
- 什么是防火墻以及作用?
- select、poll、epoll 模型的區(qū)別?
- 簡述 進程、線程、協(xié)程的區(qū)別 以及應(yīng)用場景?
- GIL鎖是什么鬼?
- Python中如何使用線程池和進程池?
- threading.local的作用?
- 進程之間如何進行通信?
- 什么是并發(fā)和并行?
- 進程鎖和線程鎖的作用?
- 解釋什么是異步非阻塞?
- 路由器和交換機的區(qū)別?
- 什么是域名解析?
- 如何修改本地hosts文件?
- 生產(chǎn)者消費者模型應(yīng)用場景及優(yōu)勢?
- 什么是cdn?
- LVS是什么及作用?
- Nginx是什么及作用?
- keepalived是什么及作用?
- haproxy是什么以及作用?
- 什么是負載均衡?
- 什么是rpc及應(yīng)用場景?
- 簡述 asynio模塊的作用和應(yīng)用場景。
- 簡述 gevent模塊的作用和應(yīng)用場景。
- twisted框架的使用和應(yīng)用?
第三部分 數(shù)據(jù)庫和緩存(46題)
- 列舉常見的關(guān)系型數(shù)據(jù)庫和非關(guān)系型都有那些?
- MySQL常見數(shù)據(jù)庫引擎及比較?
- 簡述數(shù)據(jù)三大范式?
- 什么是事務(wù)?MySQL如何支持事務(wù)?
- 簡述數(shù)據(jù)庫設(shè)計中一對多和多對多的應(yīng)用場景?
- 如何基于數(shù)據(jù)庫實現(xiàn)商城商品計數(shù)器?
- 常見SQL(必備)
- 詳見武沛齊博客:https://www.cnblogs.com/wupeiqi/articles/5729934.html
- 簡述觸發(fā)器、函數(shù)、視圖、存儲過程?
- MySQL索引種類
- 索引在什么情況下遵循最左前綴的規(guī)則?
- 主鍵和外鍵的區(qū)別?
- MySQL常見的函數(shù)?
- 列舉 創(chuàng)建索引但是無法命中索引的8種情況。
- 如何開啟慢日志查詢?
- 數(shù)據(jù)庫導(dǎo)入導(dǎo)出命令(結(jié)構(gòu)+數(shù)據(jù))?
- 數(shù)據(jù)庫優(yōu)化方案?
- char和varchar的區(qū)別?
- 簡述MySQL的執(zhí)行計劃?
- 在對name做了唯一索引前提下,簡述以下區(qū)別:
- select * from tb where name = ‘Oldboy-Wupeiqi’ select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1
- 1000w條數(shù)據(jù),使用limit offset 分頁時,為什么越往后翻越慢?如何解決?
- 什么是索引合并?
- 什么是覆蓋索引?
- 簡述數(shù)據(jù)庫讀寫分離?
- 簡述數(shù)據(jù)庫分庫分表?(水平、垂直)
- redis和memcached比較?
- redis中數(shù)據(jù)庫默認是多少個db 及作用?
- python操作redis的模塊?
- 如果redis中的某個列表中的數(shù)據(jù)量非常大,如果實現(xiàn)循環(huán)顯示每一個值?
- redis如何實現(xiàn)主從復(fù)制?以及數(shù)據(jù)同步機制?
- redis中的sentinel的作用?
- 如何實現(xiàn)redis集群?
- redis中默認有多少個哈希槽?
- 簡述redis的有哪幾種持久化策略及比較?
- 列舉redis支持的過期策略。
- MySQL 里有 2000w 數(shù)據(jù),redis 中只存 20w 的數(shù)據(jù),如何保證 redis 中都是熱點數(shù)據(jù)?
- 寫代碼,基于redis的列表實現(xiàn) 先進先出、后進先出隊列、優(yōu)先級隊列。
- 如何基于redis實現(xiàn)消息隊列?
- 如何基于redis實現(xiàn)發(fā)布和訂閱?以及發(fā)布訂閱和消息隊列的區(qū)別?
- 什么是codis及作用?
- 什么是twemproxy及作用?
- 寫代碼實現(xiàn)redis事務(wù)操作。
- redis中的watch的命令的作用?
- 基于redis如何實現(xiàn)商城商品數(shù)量計數(shù)器?
- 簡述redis分布式鎖和redlock的實現(xiàn)機制。
- 什么是一致性哈希?Python中是否有相應(yīng)模塊?
- 如何高效的找到redis中所有以oldboy開頭的key?
第四部分 前端、框架和其他(149題)
- 談?wù)勀銓ttp協(xié)議的認識。
- 談?wù)勀銓ebsocket協(xié)議的認識。
- 什么是magic string ?
- 如何創(chuàng)建響應(yīng)式布局?
- 你曾經(jīng)使用過哪些前端框架?
- 什么是ajax請求?并使用jQuery和XMLHttpRequest對象實現(xiàn)一個ajax請求。
- 如何在前端實現(xiàn)輪訓(xùn)?
- 如何在前端實現(xiàn)長輪訓(xùn)?
- vuex的作用?
- vue中的路由的攔截器的作用?
- axios的作用?
- 列舉vue的常見指令。
- 簡述jsonp及實現(xiàn)原理?
- 是什么cors ?
- 列舉Http請求中常見的請求方式?
- 列舉Http請求中的狀態(tài)碼?
- 列舉Http請求中常見的請求頭?
- django、flask、tornado框架的比較?
- 什么是wsgi?
- django請求的生命周期?
- 列舉django的內(nèi)置組件?
- 列舉django中間件的5個方法?以及django中間件的應(yīng)用場景?
- 簡述什么是FBV和CBV?
- django的request對象是在什么時候創(chuàng)建的?
- 如何給CBV的程序添加裝飾器?
- 列舉django orm 中所有的方法(QuerySet對象的所有方法)
- only和defer的區(qū)別?
- select_related和prefetch_related的區(qū)別?
- filter和exclude的區(qū)別?
- 列舉django orm中三種能寫sql語句的方法。
- django orm 中如何設(shè)置讀寫分離?
- F和Q的作用?
- values和values_list的區(qū)別?
- 如何使用django orm批量創(chuàng)建數(shù)據(jù)?
- django的Form和ModeForm的作用?
- django的Form組件中,如果字段中包含choices參數(shù),請使用兩種方式實現(xiàn)數(shù)據(jù)源實時更新。
- django的Model中的ForeignKey字段中的on_delete參數(shù)有什么作用?
- django中csrf的實現(xiàn)機制?
- django如何實現(xiàn)websocket?
- 基于django使用ajax發(fā)送post請求時,都可以使用哪種方法攜帶csrf token?
- django中如何實現(xiàn)orm表中添加數(shù)據(jù)時創(chuàng)建一條日志記錄。
- django緩存如何設(shè)置?
- django的緩存能使用redis嗎?如果可以的話,如何配置?
- django路由系統(tǒng)中name的作用?
- django的模板中filter和simple_tag的區(qū)別?
- django-debug-toolbar的作用?
- django中如何實現(xiàn)單元測試?
- 解釋orm中 db first 和 code first的含義?
- django中如何根據(jù)數(shù)據(jù)庫表生成model中的類?
- 使用orm和原生sql的優(yōu)缺點?
- 簡述MVC和MTV
- django的contenttype組件的作用?
- 談?wù)勀銓estfull 規(guī)范的認識?
- 接口的冪等性是什么意思?
- 什么是RPC?
- Http和Https的區(qū)別?
- 為什么要使用django rest framework框架?
- django rest framework框架中都有那些組件?
- django rest framework框架中的視圖都可以繼承哪些類?
- 簡述 django rest framework框架的認證流程。
- django rest framework如何實現(xiàn)的用戶訪問頻率控制?
- Flask框架的優(yōu)勢?
- Flask框架依賴組件?
- Flask藍圖的作用?
- 列舉使用過的Flask第三方組件?
- 簡述Flask上下文管理流程?
- Flask中的g的作用?
- Flask中上下文管理主要涉及到了那些相關(guān)的類?并描述類主要作用?
- 為什么要Flask把Local對象中的的值stack 維護成一個列表?
- Flask中多app應(yīng)用是怎么完成?
- 在Flask中實現(xiàn)WebSocket需要什么組件?
- wtforms組件的作用?
- Flask框架默認session處理機制?
- 解釋Flask框架中的Local對象和threading.local對象的區(qū)別?
- Flask中 blinker 是什么?
- SQLAlchemy中的 session和scoped_session 的區(qū)別?
- SQLAlchemy如何執(zhí)行原生SQL?
- ORM的實現(xiàn)原理?
- DBUtils模塊的作用?
- 以下SQLAlchemy的字段是否正確?如果不正確請更正:
from datetime import datetimefrom sqlalchemy.ext.declarativeimport declarative_basefrom sqlalchemy import Column, Integer, String, DateTimeBase = declarative_base()class UserInfo(Base): __tablename__ = 'userinfo' id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(64), unique=True) ctime = Column(DateTime, default=datetime.now())
87.SQLAchemy中如何為表設(shè)置引擎和字符編碼?
88.SQLAchemy中如何設(shè)置聯(lián)合唯一索引?
89.簡述Tornado框架的特點。
90.簡述Tornado框架中Future對象的作用?
91.Tornado框架中如何編寫WebSocket程序?
92.Tornado中靜態(tài)文件是如何處理的?如: <link href="{{static_url("commons.css")}}" rel="stylesheet" />
93.Tornado操作MySQL使用的模塊?
94.Tornado操作redis使用的模塊?
95.簡述Tornado框架的適用場景?
96.git常見命令作用:
97.簡述以下git中stash命令作用以及相關(guān)其他命令。
98.git 中 merge 和 rebase命令 的區(qū)別。
99.公司如何基于git做的協(xié)同開發(fā)?
100.如何基于git實現(xiàn)代碼review?
101.git如何實現(xiàn)v1.0 、v2.0 等版本的管理?
102.什么是gitlab?
103.github和gitlab的區(qū)別?
104.如何為github上牛逼的開源項目貢獻代碼?
105.git中 .gitignore文件的作用?
106.什么是敏捷開發(fā)?
107.簡述 jenkins 工具的作用?
108.公司如何實現(xiàn)代碼發(fā)布?
109.簡述 RabbitMQ、Kafka、ZeroMQ的區(qū)別?
110.RabbitMQ如何在消費者獲取任務(wù)后未處理完前就掛掉時,保證數(shù)據(jù)不丟失?
111.RabbitMQ如何對消息做持久化?
112.RabbitMQ如何控制消息被消費的順序?
113.以下RabbitMQ的exchange type分別代表什么意思?如:fanout、direct、topic。
114.簡述 celery 是什么以及應(yīng)用場景?
115.簡述celery運行機制。
116.celery如何實現(xiàn)定時任務(wù)?
117.簡述 celery多任務(wù)結(jié)構(gòu)目錄?
118.celery中裝飾器 @app.task 和 @shared_task的區(qū)別?
119.簡述 requests模塊的作用及基本使用?
120.簡述 beautifulsoup模塊的作用及基本使用?
121.簡述 seleninu模塊的作用及基本使用?
122.scrapy框架中各組件的工作流程?
123在scrapy框架中如何設(shè)置代理(兩種方法)?
124.scrapy框架中如何實現(xiàn)大文件的下載?
125.scrapy中如何實現(xiàn)限速?
126.scrapy中如何實現(xiàn)暫定爬蟲?
127.scrapy中如何進行自定制命令?
128.scrapy中如何實現(xiàn)的記錄爬蟲的深度?
129.scrapy中的pipelines工作原理?
130.scrapy的pipelines如何丟棄一個item對象?
131.簡述scrapy中爬蟲中間件和下載中間件的作用?
132.scrapy-redis組件的作用?
133.scrapy-redis組件中如何實現(xiàn)的任務(wù)的去重?
134.scrapy-redis的調(diào)度器如何實現(xiàn)任務(wù)的深度優(yōu)先和廣度優(yōu)先?
135.簡述 vitualenv 及應(yīng)用場景?
136.簡述 pipreqs 及應(yīng)用場景?
137.在Python中使用過什么代碼檢查工具?
138.簡述 saltstack、ansible、fabric、puppet工具的作用?
139.B Tree和B+ Tree的區(qū)別?
140.請列舉常見排序并通過代碼實現(xiàn)任意三種。
141.請列舉常見查找并通過代碼實現(xiàn)任意三種。
142.請列舉你熟悉的設(shè)計模式?
143.有沒有刷過leetcode?
144.列舉熟悉的的Linux命令。
145.公司線上服務(wù)器是什么系統(tǒng)?
146.解釋 PV、UV 的含義?
147.解釋 QPS的含義?
148.uwsgi和wsgi的區(qū)別?
149.supervisor的作用?
150.什么是反向代理?
151.簡述SSH的整個過程。
152.有問題都去那些找解決方案?
153.是否有關(guān)注什么技術(shù)類的公眾號?
154.最近在研究什么新技術(shù)?
155.是否了解過領(lǐng)域驅(qū)動模型?
統(tǒng)計:80 + 34 + 46 + 149 = 309題