關(guān)于Python爬蟲面試170道題(推薦)
#背景
今天在癡海的公眾號(hào)看到了170道爬蟲相關(guān)的題目,打算自己在這里先回答能夠回答的部分,等6月23日出正式結(jié)果了對(duì)比一下看看,自己和大佬之間的天埑有多寬
#答題部分
##語言特性
1.談?wù)剬?duì) Python 和其他語言的區(qū)別
答:Python屬于比較“自由”的語言,首先變量使用前不需要聲明類型,其次語句結(jié)束不需要使用分號(hào)作為結(jié)尾,同時(shí)不需要大括號(hào)進(jìn)行代碼塊的標(biāo)注,使用縮進(jìn)對(duì)大括號(hào)進(jìn)行代替。
2.簡述解釋型和編譯型編程語言
答:編譯型語言是將代碼編譯成機(jī)器碼,然后執(zhí)行,通過編譯可以使得程序直接以機(jī)器碼的形式進(jìn)行工作。通俗一點(diǎn)就是將整個(gè)程序一次性編譯后再執(zhí)行。解釋型語言則是編譯一句執(zhí)行一句,編譯到哪里執(zhí)行到哪里,每次執(zhí)行前都要逐句編譯。通常情況下編譯型語言執(zhí)行速度比解釋型快,但是現(xiàn)在的解釋器經(jīng)常會(huì)針對(duì)語言進(jìn)行優(yōu)化,所以有時(shí)候解釋型語言速度反而比編譯型快。
3.Python 的解釋器種類以及相關(guān)特點(diǎn)?
答:CPython,官方使用的解釋器,用C語言編寫。IPython,基于CPython開發(fā),增強(qiáng)了交互性。JPython,將Python編譯成Java字節(jié)碼。IronPython,將Python編譯為.Net的字節(jié)碼。
4.說說你知道的Python3 和 Python2 之間的區(qū)別?
答:1、print由關(guān)鍵字變?yōu)榱撕瘮?shù)。2、Python3默認(rèn)使用utf-8,解決了Python2中使用ACSII導(dǎo)致的中文亂碼問題。3、將xrange與range進(jìn)行合并,在Python3中只存在range一種寫法,本質(zhì)上是xrange。
5.Python3 和 Python2 中 int 和 long 區(qū)別?
答:Python2中,int型能表示的數(shù)字長度取決于系統(tǒng)位數(shù),32位系統(tǒng)長度為32位,64位系統(tǒng)長度為64位,long型則不受長度限制。在Python3中,所有的整型都為長整型。
6.xrange 和 range 的區(qū)別?
答:兩關(guān)鍵字都是用于生成指定范圍的列表,在Python3中已經(jīng)合并為range了。在Python2中,xrange生成結(jié)果為迭代器,占用空間小,range生成結(jié)果為列表,占據(jù)空間較大。
##編碼規(guī)范
7.什么是 PEP8?
答:PEP8是Python編程的一種格式要求,為了提高程序的可讀性和規(guī)范性,在程序員之間互相約定好的一種代碼格式,詳情可見小歪的博客
8.了解 Python 之禪么?
答:在Python的交互模式下輸入 import this 就能看到Python之禪的內(nèi)容了。
9.了解 dosctring 么?
答:Python推崇代碼即文檔,通常在函數(shù)中第一個(gè)語句即表明了函數(shù)的用法及接受的參數(shù),可以通過functiong.__doc__屬性來獲得。
10.了解類型注解么?
答:類型注解是Python3中引入的新特性,通過def(x:int, y:int) -> int: 這樣的方式,標(biāo)記參數(shù)及返回值的類型,這里要注意,即使添加了了類型注解也不會(huì)對(duì)代碼產(chǎn)生影響,它的作用更像是注釋,只是方便其他程序員了解參數(shù)及返回值類型。
11.例舉你知道 Python 對(duì)象的命名規(guī)范,例如方法或者類等
答:
12.Python 中的注釋有幾種?
答:2種,單行的使用#的注釋方式,跨行的使用使用三個(gè)雙引號(hào)或三個(gè)單引號(hào)的的注釋方式。
13.如何優(yōu)雅的給一個(gè)函數(shù)加注釋?
答:函數(shù)注釋通常在 def 語句下方,第一行表示函數(shù)用法,接下來對(duì)函數(shù)接受的參數(shù)進(jìn)行解釋,最后對(duì)函數(shù)的返回值進(jìn)行注釋,方便他人理解函數(shù)的用法。
14.如何給變量加注釋?
15.Python 代碼縮進(jìn)中是否支持 Tab 鍵和空格混用。
答:不支持,同時(shí)盡量使用4個(gè)空格代替Tab縮進(jìn)。
16.是否可以在一句 import 中導(dǎo)入多個(gè)庫?
答:可以,但不建議。
17.在給 Py 文件命名的時(shí)候需要注意什么?
答:使用全小寫或者下劃線進(jìn)行命名。
18.例舉幾個(gè)規(guī)范 Python 代碼風(fēng)格的工具
答:YAPF,谷歌開發(fā)的代碼規(guī)范工具。Black,依賴Python3.6+的第三方庫,可以直接將原代碼變?yōu)榉螾EP8標(biāo)準(zhǔn)的代碼
##數(shù)據(jù)類型
###字符串
19.列舉 Python 中的基本數(shù)據(jù)類型?
答:字符串string、數(shù)字number、字典dictionary、列表list、元組tuple、集合set。
20.如何區(qū)別可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
答:可變的數(shù)據(jù)類型有 列表、字典、集合,不可變的有字符串、數(shù)字、元組。
21.將"hello world"轉(zhuǎn)換為首字母大寫"Hello World"
答:string.title()將每個(gè)單詞首字母大寫。
22.如何檢測字符串中只含有數(shù)字?
答:Python的語法糖,字符串類型自帶函數(shù)isdigit(),當(dāng)字符串中只存在數(shù)字返回True,反之返回False。
23.將字符串"ilovechina"進(jìn)行反轉(zhuǎn)
答:“ilovechina”[::-1]
24.Python 中的字符串格式化方式你知道哪些?
答:format()
25.有一個(gè)字符串開頭和末尾都有空格,比如“ adabdw ”,要求寫一個(gè)函數(shù)把這個(gè)字符串的前后空格都去掉。
答:string.replace(’ ’ ,’’)
26.獲取字符串”123456“最后的兩個(gè)字符。
答:“123456”[4:6:]或“123456"[-2::]
27.一個(gè)編碼為 GBK 的字符串 S,要將其轉(zhuǎn)成 UTF-8 編碼的字符串,應(yīng)如何操作?
答:先編碼為Unicode,再解碼為 UTF-8,具體操作為 string.decode(),str.encode(encoding=‘utf-8’)該條存疑,有待驗(yàn)證
28.s=“info:xiaoZhang 33 shandong”,用正則切分字符串輸出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]
答:re.split(r’[: ]’, s)
27.怎樣將字符串轉(zhuǎn)換為小寫?
答:string.lower()
28.單引號(hào)、雙引號(hào)、三引號(hào)的區(qū)別?
答:單引號(hào)表示的字符串中不能帶有雙引號(hào)。雙引號(hào)表示的字符串中可以存在單引號(hào)。三引號(hào)中可以存在單引號(hào)和雙引號(hào),并且可以跨行表示字符串,而單雙引號(hào)皆不能跨行。
29.a = "你好 中國 ",去除多余空格只留一個(gè)空格。
答:re.sub(’ +’,’ ', a)
###列表
30.已知 AList = [1,2,3,1,2],對(duì) AList 列表元素去重,寫出具體過程。
答:list(set(AList)) 可以利用集合中不能存在相同元素的特性,利用類型轉(zhuǎn)換進(jìn)行去重。也可使用循環(huán)遍歷進(jìn)行判斷。
31.如何實(shí)現(xiàn) “1,2,3” 變成 [“1”,“2”,“3”]
答:“1,2,3”.split(’,’)
32.給定兩個(gè) list,A 和 B,找出相同元素和不同元素
答:如果列表內(nèi)不存在重復(fù)元素的話,可以轉(zhuǎn)化為集合,利用集合的 “&&” 找出相同元素,再利用 “a-b","a^b"找出不同元素。若列表內(nèi)存在重復(fù)元素,暫時(shí)只能想到兩個(gè)for循環(huán)進(jìn)行查找。
33.[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]
答:sum([[1,2],[3,4],[5,6]], [])
34.合并列表[1,5,7,9]和[2,2,6,8]
答:這題沒理解,字面上合并相加就好了吧。。。。難道暗示要排序?
35.如何打亂一個(gè)列表的元素?
答:使用random庫中的random.shuffle(list)函數(shù),該函數(shù)無返回值,會(huì)將傳入的參數(shù)列表隨機(jī)排序。
###字典
36.字典操作中 del 和 pop 有什么區(qū)別
答:pop()函數(shù)會(huì)返回刪除的值,而del()函數(shù)直接刪除元素,沒有返回值。
37.按照字典的內(nèi)的年齡排序
d1 = [
{‘name’:‘alice’, ‘age’:38},
{‘name’:‘bob’, ‘age’:18},
{‘name’:‘Carl’, ‘age’:28},
]
答:d1.sort(key=lambda x: x[‘age’])
38.請(qǐng)合并下面兩個(gè)字典 a = {“A”:1,“B”:2},b = {“C”:3,“D”:4}
答:a.update(b)。
39.如何使用生成式的方式生成一個(gè)字典,寫一段功能代碼。
答:這道題不能理解題目意思,暫時(shí)不答。
40.如何把元組(“a”,“b”)和元組(1,2),變?yōu)樽值鋥“a”:1,“b”:2}
答:zip((“a”,“b”),(1,2))
###綜合
41.Python 常用的數(shù)據(jù)結(jié)構(gòu)的類型及其特性?
A:{1:0,2:0,3:0}
B:{“a”:0, “b”:0, “c”:0}
C: {(1,2):0, (2,3):0}
D: {[1,2]:0, [2,3]:0}
答:A為字典類型,無序key值不可重復(fù),通過key值來取對(duì)應(yīng)的value值。B也是字典類型,key值為string類型,也是通過dict[‘key’]的方式來取值。C也為字典類型,但key為元組
42.如何將元組(“A”,“B”)和元組(1,2),合并成字典{“A”:1,“B”:2}
答:dict(zip((“A”,“B”), (1,2)))即可。
43.Python 里面如何實(shí)現(xiàn) tuple 和 list 的轉(zhuǎn)換?
答:使用tuple()和list()函數(shù)實(shí)現(xiàn)轉(zhuǎn)換
44.我們知道對(duì)于列表可以使用切片操作進(jìn)行部分元素的選擇,那么如何對(duì)生成器類型的對(duì)象實(shí)現(xiàn)相同的功能呢?
答:使用自帶的itertools庫進(jìn)行實(shí)現(xiàn),具體實(shí)現(xiàn)方式 itertools.islice(生成器對(duì)象,起始位置,結(jié)束位置),即可實(shí)現(xiàn)切片功能。
45.請(qǐng)將[i for i in range(3)]改成生成器
答: iter(range(3))
46.a="hello"和 b="你好"編碼成 bytes 類型
答:a.encode()
47.下面的代碼輸出結(jié)果是什么?
a = (1,2,3,[4,5,6,7],8)
a[2] = 2
答:報(bào)錯(cuò),元組元素不支持修改。
48.下面的代碼輸出的結(jié)果是什么?
a = (1,2,3,[4,5,6,7],8)
a[5] = 2
答:報(bào)錯(cuò),列表看作是一個(gè)元素,5已經(jīng)下標(biāo)越界。
##操作類題目
49.Python 交換兩個(gè)變量的值
答:語法糖 a, b = b, a。
50.在讀文件操作的時(shí)候會(huì)使用 read、readline 或者 readlines,簡述它們各自的作用
答:read將整個(gè)文本都讀取為一個(gè)字符串,占用內(nèi)存大,readline讀取為一個(gè)生成器,支持遍歷和迭代,占用空間小。readlines將文本讀取為列表,占用空間大。
51.json 序列化時(shí),可以處理的數(shù)據(jù)類型有哪些?如何定制支持 datetime 類型?
答:字符串、數(shù)字(整數(shù)和浮點(diǎn)數(shù))、字典、列表、布爾值、None。使用strftime將datetime格式化為標(biāo)準(zhǔn)字符串類型即可。
52.json 序列化時(shí),默認(rèn)遇到中文會(huì)轉(zhuǎn)換成 unicode,如果想要保留中文怎么辦?
答:使用json.dumps函數(shù)時(shí),添加參數(shù)ensure_ascii=False,如果想顯示的更美觀,可以添加indent=2參數(shù),會(huì)在每個(gè)key值前添加兩個(gè)空格。
53.有兩個(gè)磁盤文件 A 和 B,各存放一行字母,要求把這兩個(gè)文件中的信息合并(按字母順序排列),輸出到一個(gè)新文件 C 中。
答:讀取兩個(gè)文件,利用split函數(shù)將字符串切割成列表,再將兩個(gè)列表合并,利用sort函數(shù)對(duì)合并后的列表進(jìn)行排序,最后將列表內(nèi)容拼接成字符串寫入即可。
54.如果當(dāng)前的日期為 20190530,要求寫一個(gè)函數(shù)輸出 N 天后的日期,(比如 N 為 2,則輸出 20190601)。
答:利用自帶的datetime庫即可實(shí)現(xiàn),
55.寫一個(gè)函數(shù),接收整數(shù)參數(shù) n,返回一個(gè)函數(shù),函數(shù)的功能是把函數(shù)的參數(shù)和 n 相乘并把結(jié)果返回。
答:
56.下面代碼會(huì)存在什么問題,如何改進(jìn)?
def strappend(num):
str='first'
for i in range(num):
str+=str(i)
return str
答:沒有對(duì)num進(jìn)行校驗(yàn),num應(yīng)該為一整數(shù),添加一個(gè)type類型校驗(yàn)。
57.一行代碼輸出 1-100 之間的所有偶數(shù)。
答:print(list(i for i in range(1, 101) if i%2 == 0))
58.with 語句的作用,寫一段代碼?
答:常用于打開文本后的自動(dòng)關(guān)閉,例如:
with open("file_name", 'w') as f:
dong sth.
59.python 字典和 json 字符串相互轉(zhuǎn)化方法
答:使用 json庫,字典-> json:json.dumps(dict),json->字典:json.loads(json_file)
60.請(qǐng)寫一個(gè) Python 邏輯,計(jì)算一個(gè)文件中的大寫字母數(shù)量
答:
with open(file_name, 'r') as f:
count = 0
for i in f.read():
if i.isupper():
count += 1
print('大寫字母數(shù)量為%d'%count)
##高級(jí)特效
70.函數(shù)裝飾器有什么作用?請(qǐng)列舉說明?
答:裝飾器可以在不修改函數(shù)的情況下,對(duì)函數(shù)的功能進(jìn)行補(bǔ)充,例如對(duì)函數(shù)接受的參數(shù)進(jìn)行檢查更加詳細(xì)的內(nèi)容點(diǎn)此查看極客時(shí)間解答
71.Python 垃圾回收機(jī)制?
答:最簡單的,Python每個(gè)變量上都有一個(gè)引用計(jì)數(shù)器,當(dāng)引用計(jì)數(shù)器為0時(shí),自動(dòng)銷毀變量。復(fù)雜一些的,例如存在互相引用的情況,這時(shí)Python依靠兩個(gè)鏈表(標(biāo)記-清除算法)進(jìn)行垃圾回收。點(diǎn)擊這里獲得更詳細(xì)的資料
72.魔法函數(shù) __call__怎么使用?
答:__call__是將類創(chuàng)建為一個(gè)實(shí)例進(jìn)行調(diào)用,多用在類裝飾器中??梢詫⑦壿嫶a寫在__call__下,不需要實(shí)例化類也可直接使用其中的代碼。
73.如何判斷一個(gè)對(duì)象是函數(shù)還是方法?
答:可以使用type()函數(shù)進(jìn)行判斷,函數(shù)與方法本質(zhì)上沒有差別,僅僅通過是否與類進(jìn)行綁定進(jìn)行區(qū)分。綁定后通過類實(shí)例化進(jìn)行調(diào)用則為方法,未綁定直接調(diào)用即為函數(shù)。
74.@classmethod 和@staticmethod 用法和區(qū)別
答:classmethod必須實(shí)例化類以后才能使用,同時(shí)第一個(gè)參數(shù)由self變化為cls,staticmethod稱為靜態(tài)方法類似于全局函數(shù),不需要實(shí)例化也能調(diào)用。
75.Python 中的接口如何實(shí)現(xiàn)?
答:在類中提前設(shè)置好方法,利用NotImplementedError錯(cuò)誤,當(dāng)子類沒有覆寫方法的時(shí)候進(jìn)行報(bào)錯(cuò)。也可使用@abstractmethod對(duì)需要覆寫的方法進(jìn)行裝飾,任何沒有覆寫該方法的子類都會(huì)報(bào)錯(cuò)。
76.Python 中的反射了解么?
答:反射是用于在類中尋找值的一種方式,有以下幾種用法:hasattr(class, key)在實(shí)例中尋找是否存在key名的函數(shù)或是變量返回布爾值。getattr(class, key, tips)獲得實(shí)例中變量或是方法的內(nèi)存地址,可傳入第三個(gè)參數(shù)修改報(bào)錯(cuò)提示。setattr(class, name, function)將函數(shù)以name為名字傳入類中,通過 class.name(class) 的方式進(jìn)行調(diào)用,setattr(class, name, value)傳入變量及變量值,以class.name的形式調(diào)用。delattr(class, name)刪除類中變量,不能刪除函數(shù)。
77.metaclass 作用?以及應(yīng)用場景?
答:該題不會(huì),等正確答案
78.hasattr() getattr() setattr()的用法
答:hasattr(object,name)查詢類中是否存在符合關(guān)鍵字的函數(shù)或者方法,返回布爾值。getattr(object, name, [default])查詢函數(shù)是否存在指定名字的變量或是方法,返回變量的值或者函數(shù)內(nèi)存地址,若不存在報(bào)錯(cuò)或是返回 default 中的自定義內(nèi)容。
79.請(qǐng)列舉你知道的 Python 的魔法方法及用途。
答:init 初始化類中的部分屬性,new 最先執(zhí)行的部分,可用來實(shí)現(xiàn)單例類,功能與78題類似的 __getattr__試圖訪問類中不存在的屬性時(shí)會(huì)調(diào)用該方法,可自定義返回值, setattr 對(duì)類的屬性進(jìn)行新增和賦值,可以進(jìn)行簡單的條件篩選, __delattr__用于刪除類中的方法或是屬性。
80.如何知道一個(gè) Python 對(duì)象的類型?
答:利用type()和isinstance(),前者用于區(qū)分對(duì)象的類型,后者主要用于區(qū)分子類與父類是否一致。
81.Python 的傳參是傳值還是傳址?
答:都不是,Python當(dāng)中所有東西都視作一個(gè)對(duì)象,每次的綁定都是在對(duì)象上增加一個(gè)引用,在使用過程中如果改變變量的值其實(shí)是將變量綁定到一個(gè)新對(duì)象上,如果修改對(duì)象的值那所有綁定在該對(duì)象的變量,在調(diào)用時(shí)都返回新值。詳情點(diǎn)擊這里查看
82.Python 中的元類(metaclass)使用舉例
答:元類真的是盲區(qū),現(xiàn)在還不是能理解元類的意義。
83.簡述 any()和 all()方法
答:any(object)與all(object)區(qū)別,any主要判斷對(duì)象中是否全為空值(0、’’、None、Flase)若對(duì)象內(nèi)全部為空值則返回False否則返回True, all則是判斷對(duì)象中是否存在空值,只要存在任一個(gè)空值則返回False否則返回True
84.filter 方法求出列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
答:list(filter(lambda x:x if x%2 == 1 else None, a))
85.什么是猴子補(bǔ)丁?
86.在 Python 中是如何管理內(nèi)存的?
87.當(dāng)退出 Python 時(shí)是否釋放所有內(nèi)存分配?
##正則表達(dá)式
88.使用正則表達(dá)式匹配出
www.baidu.com
中的地址
a=“張明 98 分”,用 re.sub,將 98 替換為 100
89.正則表達(dá)式匹配中(.)和(.?)匹配區(qū)別?
90.寫一段匹配郵箱的正則表達(dá)式
##其他內(nèi)容
91.解釋一下 python 中 pass 語句的作用?
92.簡述你對(duì) input()函數(shù)的理解
93.python 中的 is 和==
94.Python 中的作用域
95.三元運(yùn)算寫法和應(yīng)用場景?
96.了解 enumerate 么?
97.列舉 5 個(gè) Python 中的標(biāo)準(zhǔn)模塊
98.如何在函數(shù)中設(shè)置一個(gè)全局變量
99.pathlib 的用法舉例
100.Python 中的異常處理,寫一個(gè)簡單的應(yīng)用場景
101.Python 中遞歸的最大次數(shù),那如何突破呢?
102.什么是面向?qū)ο蟮?mro
103.isinstance 作用以及應(yīng)用場景?
104.什么是斷言?應(yīng)用場景?
105.lambda 表達(dá)式格式以及應(yīng)用場景?
106.新式類和舊式類的區(qū)別
107.dir()是干什么用的?
108.一個(gè)包里有三個(gè)模塊,demo1.py, demo2.py, demo3.py,但使用 from tools import 導(dǎo)入模塊時(shí),如何保證只有 demo1、demo3 被導(dǎo)入了。
109.列舉 5 個(gè) Python 中的異常類型以及其含義
110.copy 和 deepcopy 的區(qū)別是什么?
111.代碼中經(jīng)常遇到的args, **kwargs 含義及用法。
112.Python 中會(huì)有函數(shù)或成員變量包含單下劃線前綴和結(jié)尾,和雙下劃線前綴結(jié)尾,區(qū)別是什么?
113.w、a+、wb 文件寫入模式的區(qū)別
114.舉例 sort 和 sorted 的區(qū)別
115.什么是負(fù)索引?
116.pprint 模塊是干什么的?
117.解釋一下 Python 中的賦值運(yùn)算符
118.解釋一下 Python 中的邏輯運(yùn)算符
119.講講 Python 中的位運(yùn)算符
120.在 Python 中如何使用多進(jìn)制數(shù)字?
121.怎樣聲明多個(gè)變量并賦值?
##算法和數(shù)據(jù)結(jié)構(gòu)
122.已知:
AList = [1,2,3]
BSet = {1,2,3}
(1) 從 AList 和 BSet 中 查找 4,最壞時(shí)間復(fù)雜度那個(gè)大?
(2) 從 AList 和 BSet 中 插入 4,最壞時(shí)間復(fù)雜度那個(gè)大?
123.用 Python 實(shí)現(xiàn)一個(gè)二分查找的函數(shù)
124.python 單例模式的實(shí)現(xiàn)方法
125.使用 Python 實(shí)現(xiàn)一個(gè)斐波那契數(shù)列
126.找出列表中的重復(fù)數(shù)字
127.找出列表中的單個(gè)數(shù)字
128.寫一個(gè)冒泡排序
129.寫一個(gè)快速排序
130.寫一個(gè)拓?fù)渑判?br />
131.python 實(shí)現(xiàn)一個(gè)二進(jìn)制計(jì)算
132.有一組“+”和“-”符號(hào),要求將“+”排到左邊,“-”排到右邊,寫出具體的實(shí)現(xiàn)方法。
133.單鏈表反轉(zhuǎn)
134.交叉鏈表求交點(diǎn)
135.用隊(duì)列實(shí)現(xiàn)棧
136.找出數(shù)據(jù)流的中位數(shù)
137.二叉搜索樹中第 K 小的元素
##爬蟲相關(guān)
138.在 requests 模塊中,requests.content 和 requests.text 什么區(qū)別
139.簡要寫一下 lxml 模塊的使用方法框架
140.說一說 scrapy 的工作流程
141.scrapy 的去重原理
142.scrapy 中間件有幾種類,你用過哪些中間件
143.你寫爬蟲的時(shí)候都遇到過什么?反爬蟲措施,你是怎么解決的?
144.為什么會(huì)用到代理?
145.代理失效了怎么處理?
146.列出你知道 header 的內(nèi)容以及信息
147.說一說打開瀏覽器訪問 www.baidu.com 獲取到結(jié)果,整個(gè)流程。
148.爬取速度過快出現(xiàn)了驗(yàn)證碼怎么處理
149.scrapy 和 scrapy-redis 有什么區(qū)別?為什么選擇 redis 數(shù)據(jù)庫?
150.分布式爬蟲主要解決什么問題
151.寫爬蟲是用多進(jìn)程好?還是多線程好? 為什么?
152.解析網(wǎng)頁的解析器使用最多的是哪幾個(gè)
153.需要登錄的網(wǎng)頁,如何解決同時(shí)限制 ip,cookie,session(其中有一些是動(dòng)態(tài)生成的)在不使用動(dòng)態(tài)爬取的情況下?
154.驗(yàn)證碼的解決(簡單的:對(duì)圖像做處理后可以得到的,困難的:驗(yàn)證碼是點(diǎn)擊,拖動(dòng)等動(dòng)態(tài)進(jìn)行的?)
155.使用最多的數(shù)據(jù)庫(mysql,mongodb,redis 等),對(duì)他的理解?
##網(wǎng)絡(luò)編程
156.TCP 和 UDP 的區(qū)別?
157.簡要介紹三次握手和四次揮手
158.什么是粘包? socket 中造成粘包的原因是什么? 哪些情況會(huì)發(fā)生粘包現(xiàn)象?
##并發(fā)
159.舉例說明 conccurent.future 的中線程池的用法
160.說一說多線程,多進(jìn)程和協(xié)程的區(qū)別。
161.簡述 GIL
162.進(jìn)程之間如何通信
163.IO 多路復(fù)用的作用?
164.select、poll、epoll 模型的區(qū)別?
165.什么是并發(fā)和并行?
167.解釋什么是異步非阻塞?
168.threading.local 的作用?
##Git 面試題
169.說說你知道的 git 命令
170.git 如何查看某次提交修改的內(nèi)容x
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了Python經(jīng)典面試題與參考答案,總結(jié)分析了Python面試中各種常見的概念、數(shù)據(jù)結(jié)構(gòu)、算法等相關(guān)操作技巧,需要的朋友可以參考下2019-11-04
- 這篇文章主要介紹了兩道阿里python面試題與參考答案,結(jié)合具體實(shí)例形式分析了Python數(shù)組創(chuàng)建、遍歷、拆分及隨機(jī)數(shù)等相關(guān)操作技巧,需要的朋友可以參考下2019-09-02
- 這篇文章主要介紹了60道硬核Python面試題,論面霸是如何煉成的,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-08-28
Python是目前編程領(lǐng)域最受歡迎的語言。在本文中,我將總結(jié)Python面試中最常見的50個(gè)問題。每道題都提供參考答案,感興趣的可以了解下2019-06-26- 這篇文章主要為大家介紹了Python常見的面試題與相應(yīng)的Python知識(shí)點(diǎn),包括Python變量、函數(shù)、對(duì)象、數(shù)據(jù)類型等,需要的朋友可以參考下2019-06-25
這篇文章主要介紹了110道Python面試題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-24- 本文給大家分享Python高頻面試題及其答案,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-12-26



