溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

常見的Python爬蟲面試題

發(fā)布時(shí)間:2020-09-24 12:40:59 來源:億速云 閱讀:255 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關(guān)常見的Python爬蟲面試題,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

語言特性

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.簡(jiǎn)述解釋型和編譯型編程語言

答:編譯型語言是將代碼編譯成機(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ù)字長(zhǎng)度取決于系統(tǒng)位數(shù),32位系統(tǒng)長(zhǎng)度為32位,64位系統(tǒng)長(zhǎng)度為64位,long型則不受長(zhǎng)度限制。在Python3中,所有的整型都為長(zhǎng)整型。

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.如何檢測(cè)字符串中只含有數(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ū)別?

答:?jiǎn)我?hào)表示的字符串中不能帶有雙引號(hào)。雙引號(hào)表示的字符串中可以存在單引號(hào)。三引號(hào)中可以存在單引號(hào)和雙引號(hào),并且可以跨行表示字符串,而單雙引號(hào)皆不能跨行。

29.a = "你好 中國(guó) ",去除多余空格只留一個(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’:‘a(chǎn)lice’, ‘a(chǎn)ge’:38},

{‘name’:‘bob’, ‘a(chǎn)ge’:18},

{‘name’:‘Carl’, ‘a(chǎn)ge’:28},

]

答:d1.sort(key=lambda x: x[‘a(chǎn)ge’])

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,簡(jiǎn)述它們各自的作用

答:read將整個(gè)文本都讀取為一個(gè)字符串,占用內(nèi)存大,readline讀取為一個(gè)生成器,支持遍歷和迭代,占用空間小。readlines將文本讀取為列表,占用空間大。

以上就是常見的Python爬蟲面試題,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI