第一部分 Python基礎(chǔ)篇(80題)
1、為什么學(xué)習(xí)Python?
語(yǔ)言本身簡(jiǎn)潔,優(yōu)美,功能超級(jí)強(qiáng)大
跨平臺(tái)
非?;鸨纳鐓^(qū)
很多有名的大公司在用
2、通過(guò)什么途徑學(xué)習(xí)的Python?
自學(xué)成才
3、Python和Java、PHP、C、C#、C++等其他語(yǔ)言的對(duì)比?
4、簡(jiǎn)述解釋型和編譯型編程語(yǔ)言?
編譯型語(yǔ)言:把做好的源程序全部編譯成二進(jìn)制代碼的可運(yùn)行程序。然后,可直接運(yùn)行這個(gè)程序。
解釋型語(yǔ)言:把做好的源程序翻譯一句,然后執(zhí)行一句,直至結(jié)束!python是一門解釋型語(yǔ)言
5、Python解釋器種類以及特點(diǎn)?
Cpython(最常用的版本)
Python的官方版本,使用C語(yǔ)言實(shí)現(xiàn),使用最為廣泛,CPython實(shí)現(xiàn)會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。
Jyhton
Python的Java實(shí)現(xiàn),Jython會(huì)將Python代碼動(dòng)態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行。
IronPython
Python的C#實(shí)現(xiàn),IronPython將Python代碼編譯成C#字節(jié)碼,然后在CLR上運(yùn)行。(與Jython類似)
PyPy(特殊)
Python實(shí)現(xiàn)的Python,將Python的字節(jié)碼字節(jié)碼再編譯成機(jī)器碼。
6、位和字節(jié)的關(guān)系?
數(shù)據(jù)存儲(chǔ)是以“字節(jié)”(Byte)為單位,數(shù)據(jù)傳輸是以大多是以“位”(bit,又名“比特”)為單位,位只能容納兩個(gè)值(0或1),位是計(jì)算機(jī)存儲(chǔ)的基本單位,是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位,也表示一些計(jì)算機(jī)編程語(yǔ)言中的數(shù)據(jù)類型和語(yǔ)言字符;8位 = 1字節(jié),一個(gè)8位的字節(jié)包含256種可能的0,1組合。
7、b、B、KB、MB、GB 的關(guān)系?
1GB = 1024MB;1MB = 1024KB;1KB = 1024B;1B = 8b
8、請(qǐng)至少列舉5個(gè) PEP8 規(guī)范(越多越好)。
1. 縮進(jìn)。4個(gè)空格的縮進(jìn)(編輯器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。
2. 每行最大長(zhǎng)度79,換行可以使用反斜杠,最好使用圓括號(hào)。換行點(diǎn)要在操作符的后邊敲回車。
3. 類和top-level函數(shù)定義之間空兩行;類中的方法定義之間空一行;函數(shù)內(nèi)邏輯無(wú)關(guān)段落之間空一行;其他地方盡量不要再空行。
4. 不要在一句import中多個(gè)庫(kù),比如import os, sys不推薦。
5. 避免不必要的空格。
9、通過(guò)代碼實(shí)現(xiàn)如下轉(zhuǎn)換:
二進(jìn)制轉(zhuǎn)換成十進(jìn)制:v = “0b1111011”
>>> int('0b1111011',2)
123
十進(jìn)制轉(zhuǎn)換成二進(jìn)制:v =18
>>> bin(18)
'0b10010'
八進(jìn)制轉(zhuǎn)換成十進(jìn)制:v = “011”
>>> int('011',8)
9
十進(jìn)制轉(zhuǎn)換成八進(jìn)制:v =30
>>> oct(30)
'0o36
十六進(jìn)制轉(zhuǎn)換成十進(jìn)制:v = “0x12”
>>> int('0x12',16)
18
十進(jìn)制轉(zhuǎn)換成十六進(jìn)制:v = 87
>>> hex(87)
'0x57'
10、請(qǐng)編寫一個(gè)函數(shù)實(shí)現(xiàn)將IP地址轉(zhuǎn)換成一個(gè)整數(shù)
如:10.3.9.12 轉(zhuǎn)換規(guī)則為:
10? ? ? ? ? 00001010
3? ? ? ? ? ? 00000011
9? ? ? ? ? ? 00001001
12? ? ? ? ? 00001100
再將以上二進(jìn)制拼接起來(lái)計(jì)算十進(jìn)制結(jié)果:00001010 00000011 00001001 00001100 = ?
def ip(value):
temp = value.split(".")
s =""
? ? for iin temp:
i = (bin(int(i)).lstrip("0b"))
if len(i) !=8:
i = i.zfill(8)
s += i
print(int(s,2))
11、python遞歸的最大層數(shù)?
python默認(rèn)遞歸最大的層數(shù)是998,可以通過(guò)sys.setrecursionlimit(1000)來(lái)設(shè)置
12、求結(jié)果:
v1 =1 or 3
1
v2 = 1 and 3
3
v3 = 0 and 2 and 1
0
v4 = 0 and 2 or 1
1
v5 = 0 and 2 or 1 or 4
1
v6 = 0 or False and 1
False
13、ascii、unicode、utf-8、gbk 區(qū)別?
ASCII碼使用一個(gè)字節(jié)編碼,所以它的范圍基本是只有英文字母、數(shù)字和一些特殊符號(hào) ,只有256個(gè)字符。
在表示一個(gè)Unicode的字符時(shí),通常會(huì)用“U+”然后緊接著一組十六進(jìn)制的數(shù)字來(lái)表示這一個(gè)字符。在基本多文種平面(英文為 Basic Multilingual Plane,簡(jiǎn)寫 BMP。它又簡(jiǎn)稱為“零號(hào)平面”, plane 0)里的所有字符,要用四位十六進(jìn)制數(shù)(例如U+4AE0,共支持六萬(wàn)多個(gè)字符);在零號(hào)平面以外的字符則需要使用五位或六位十六進(jìn)制數(shù)了。舊版的Unicode標(biāo)準(zhǔn)使用相近的標(biāo)記方法,但卻有些微的差異:在Unicode 3.0里使用“U-”然后緊接著八位數(shù),而“U+”則必須隨后緊接著四位數(shù)。
Unicode能夠表示全世界所有的字節(jié)
GBK是只用來(lái)編碼漢字的,GBK全稱《漢字內(nèi)碼擴(kuò)展規(guī)范》,使用雙字節(jié)編碼。
UTF-8(8-bit Unicode Transformation Format)是一種針對(duì)Unicode的可變長(zhǎng)度字符編碼,又稱萬(wàn)國(guó)碼。由Ken Thompson于1992年創(chuàng)建?,F(xiàn)在已經(jīng)標(biāo)準(zhǔn)化為RFC 3629。UTF-8用1到6個(gè)字節(jié)編碼UNICODE字符。用在網(wǎng)頁(yè)上可以同一頁(yè)面顯示中文簡(jiǎn)體繁體及其它語(yǔ)言(如英文,日文,韓文)。
14、字節(jié)碼和機(jī)器碼的區(qū)別?
機(jī)器碼就是計(jì)算機(jī)可以直接執(zhí)行,并且執(zhí)行速度最快的代碼。
字節(jié)碼是一種中間狀態(tài)(中間碼)的二進(jìn)制代碼(文件)。需要直譯器轉(zhuǎn)譯后才能成為機(jī)器碼。
15、三元運(yùn)算規(guī)則以及應(yīng)用場(chǎng)景?
三元運(yùn)算符就是在賦值變量的時(shí)候,可以直接加判斷,然后賦值
格式:[on_true] if [expression] else [on_false]
res = 值1 if 條件 else 值2
16、列舉 Python2和Python3的區(qū)別?菜鳥(niǎo)教程|python 2.x與3.x的區(qū)別
17、用一行代碼實(shí)現(xiàn)數(shù)值交換
a =1
b = 2
a,b =b, a
18、Python3和Python2中 int 和 long的區(qū)別?
int(符號(hào)整數(shù)):通常被稱為是整數(shù)或整數(shù),沒(méi)有小數(shù)點(diǎn)的正或負(fù)整數(shù)
long(長(zhǎng)整數(shù)):無(wú)限大小的整數(shù),這樣寫整數(shù)和一個(gè)大寫或小寫的L。
19、xrange和range的區(qū)別?
1. range和xrange都是在循環(huán)中使用,輸出結(jié)果一樣。
2. range返回的是一個(gè)list對(duì)象,而xrange返回的是一個(gè)生成器對(duì)象(xrange object)。
3. xrange則不會(huì)直接生成一個(gè)list,而是每次調(diào)用返回其中的一個(gè)值,內(nèi)存空間使用極少,因而性能非常好。
注意:Python 3.x已經(jīng)去掉xrange,全部用range代替。
20、文件操作時(shí):xreadlines和readlines的區(qū)別?
二者使用時(shí)相同,但返回類型不同,xreadlines返回的是一個(gè)生成器,readlines返回的是list
21、列舉布爾值為False的常見(jiàn)值?
0 , [ ] , " , ( ) , { }
22、字符串、列表、元組、字典每個(gè)常用的5個(gè)方法?
字符串:
words = ‘today is a wonderfulday‘
print(words.strip(‘today‘))#如果strip方法指定一個(gè)值的話,那么會(huì)去掉這兩個(gè)值
print(words.count(‘a(chǎn)‘))#統(tǒng)計(jì)字符串出現(xiàn)的次數(shù)
print(words.index(‘is‘))#找下標(biāo)
print(words.index(‘z‘))#找下標(biāo)如果元素不找不到的話,會(huì)報(bào)錯(cuò)
print(words.find(‘z‘))#找下標(biāo),如果元素找不到的話,返回-1
列表:
sample_list = [‘a(chǎn)‘,1,(‘a(chǎn)‘,‘b‘)]? #創(chuàng)建列表
sample_list = [‘a(chǎn)‘,‘b‘,0,1,3]? #? Python 列表操作
value_start = sample_list[0]? #得到列表中的某一個(gè)值
end_value = sample_list[-1]? #得到列表中的某一個(gè)值
del sample_list[0]? #刪除列表的第一個(gè)值
sample_list[0:0] = [‘sample value‘]? #在列表中插入一個(gè)值
元組:
#元組也是一個(gè)list,他和list的區(qū)別是元組的元素?zé)o法修改
tuple1 = (2,3,4,5,6,4,7)
print(type(tuple1))
print(tuple1[:7])
print(tuple1[:5:-1])
字典
dict = {‘ob1‘:‘computer‘, ‘ob2‘:‘mouse‘, ‘ob3‘:‘printer‘}
#每一個(gè)元素是pair,包含key、value兩部分。key是Integer或string類型,value 是任意類型。鍵是唯一的,字典只認(rèn)最后一個(gè)賦的鍵值。
D.get(key, 0)? ? ? #同dict[key],多了個(gè)沒(méi)有則返回缺省值,0。[]沒(méi)有則拋異常
D.has_key(key)? ? ? #有該鍵返回TRUE,否則FALSE
D.keys()? ? ? ? ? ? #返回字典鍵的列表
D.values()
23、lambda表達(dá)式格式以及應(yīng)用場(chǎng)景?
lambda表達(dá)式,通常是在需要一個(gè)函數(shù),但是又不想費(fèi)神去命名一個(gè)函數(shù)的場(chǎng)合下使用,也就是指匿名函數(shù)。
lambda所表示的匿名函數(shù)的內(nèi)容應(yīng)該是很簡(jiǎn)單的,如果復(fù)雜的話,干脆就重新定義一個(gè)函數(shù)了,使用lambda就有點(diǎn)過(guò)于執(zhí)拗了。
lambda就是用來(lái)定義一個(gè)匿名函數(shù)的,如果還要給他綁定一個(gè)名字的話,就會(huì)顯得有點(diǎn)畫蛇添足,通常是直接使用lambda函數(shù)。如下所示:
# 需求:將列表中的元素按照絕對(duì)值大小進(jìn)行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
print(sorted(list1, key=lambda x: abs(x)))? #[0, -1, -2, 3, -4, 5, -6]
24、pass的作用?
1、空語(yǔ)句
2、保證格式完整
3、占位語(yǔ)句
25、*arg和**kwarg作用
1、函數(shù)調(diào)用里的*arg和**kwarg:
(1)*arg:元組或列表“出現(xiàn)”
**kwarg:字典“出沒(méi)”
(2)分割參數(shù)
2、函數(shù)定義時(shí)傳的*arg /**kwarg:
(1)接收參數(shù)
26、is和==的區(qū)別
== 是python標(biāo)準(zhǔn)操作符中的比較操作符,用來(lái)比較判斷兩個(gè)對(duì)象的value(值)是否相等
is 也被叫做同一性運(yùn)算符,這個(gè)運(yùn)算符比較判斷的是對(duì)象間的唯一身份標(biāo)識(shí),也就是id是否相同。
27、簡(jiǎn)述Python的深淺拷貝以及應(yīng)用場(chǎng)景?
字面理解:淺拷貝指僅僅拷貝數(shù)據(jù)集合的第一層數(shù)據(jù),深拷貝指拷貝數(shù)據(jù)集合的所有層。所以對(duì)于只有一層的數(shù)據(jù)集合來(lái)說(shuō)深淺拷貝的意義是一樣的,比如字符串,數(shù)字,還有僅僅一層的字典、列表、元祖等.
應(yīng)用場(chǎng)景:比如在CMDB系統(tǒng)中,我們定義了一個(gè)報(bào)警模版call給所有的服務(wù)器使用,此時(shí)有一批特殊應(yīng)用的服務(wù)器需要不通的報(bào)警參數(shù),我們既不想單獨(dú)新建模版來(lái)一個(gè)一個(gè)添加報(bào)警參數(shù),又不想修改默認(rèn)模版而影響其他機(jī)器的報(bào)警閾值。此時(shí)我們就需要用深拷貝來(lái)完成。
28、Python垃圾回收機(jī)制?
Python的GC模塊主要運(yùn)用了“引用計(jì)數(shù)”(reference
counting)來(lái)跟蹤和回收垃圾。在引用計(jì)數(shù)的基礎(chǔ)上,還可以通過(guò)“標(biāo)記-清除”(mark and
sweep)解決容器對(duì)象可能產(chǎn)生的循環(huán)引用的問(wèn)題。通過(guò)“分代回收”(generation
collection)以空間換取時(shí)間來(lái)進(jìn)一步提高垃圾回收的效率。
29、Python的可變類型和不可變類型?
可變:列表、字典
對(duì)于可變類型,無(wú)論創(chuàng)建多少個(gè)可變類型,只要值相同,都不指向同個(gè)內(nèi)存地址(除非進(jìn)行復(fù)制操作,那么他們將會(huì)指向同一個(gè)地址)。
不可變:數(shù)字、字符串、元祖?
對(duì)不可變類型的變量重新賦值,實(shí)際上是重新創(chuàng)建一個(gè)不可變類型的對(duì)象,并將原來(lái)的變量重新指向新創(chuàng)建的對(duì)象(如果沒(méi)有其他變量引用原有對(duì)象的話(即引用計(jì)數(shù)為0),原有對(duì)象就會(huì)被回收)。
30、求結(jié)果:
v = dict.fromkeys(['k1','k2'],[])
v[‘k1’].append(666)
print(v)
v[‘k1’] = 777
print(v)
{'k1': [666], 'k2': [666]}
{'k1': 777, 'k2': [666]}
31、求結(jié)果:
def? num():
? ? return [lambda x:i*x for i in range(4)]
print([ m(2) for m in num()])
[6, 6, 6, 6]
32、列舉常見(jiàn)的內(nèi)置函數(shù)?
33、filter、map、reduce的作用?
34、一行代碼實(shí)現(xiàn)9*9乘法表
print('\n'.join(['\t'.join(["%2s*%2s=%2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
35、如何安裝第三方模塊?以及用過(guò)哪些第三方模塊?
pip install
36、至少列舉8個(gè)常用模塊都有那些?
time;re;os;sys;datetime;hashlib;pickle;random
37、re的match和search區(qū)別?
match 從第一個(gè)開(kāi)始匹配
search 從任何位置匹配
38、什么是正則的貪婪匹配?
盡量多的匹配
39、求結(jié)果:
a. [ i % 2 for i in range(10) ]
[0,1,0,1,0,1,0,1,0,1]
b. ( i % 2 for i in range(10) )

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