關於Python爬蟲面試50道題
語言特性
1.談談對 Python 和其他語言的區別
答:Python屬於比較“自由”的語言,首先變數使用前不需要宣告型別,其次語句結束不需要使用分號作為結尾,同時不需要大括號進行程式碼塊的標註,使用縮排對大括號進行代替。
2.簡述解釋型和編譯型程式語言
答:編譯型語言是將程式碼編譯成機器碼,然後執行,透過編譯可以使得程式直接以機器碼的形式進行工作。通俗一點就是將整個程式一次性編譯後再執行。解釋型語言則是編譯一句執行一句,編譯到哪裡執行到哪裡,每次執行前都要逐句編譯。通常情況下編譯型語言執行速度比解釋型快,但是現在的直譯器經常會針對語言進行最佳化,所以有時候解釋型語言速度反而比編譯型快。
3.Python 的直譯器種類以及相關特點?
答:CPython,官方使用的直譯器,用C語言編寫。IPython,基於CPython開發,增強了互動性。JPython,將Python編譯成Java位元組碼。IronPython,將Python編譯為.Net的位元組碼。
4.說說你知道的Python3 和 Python2 之間的區別?
答:1、print由關鍵字變為了函式。2、Python3預設使用utf-8,解決了Python2中使用ACSII導致的中文亂碼問題。3、將xrange與range進行合併,在Python3中只存在range一種寫法,本質上是xrange。
5.Python3 和 Python2 中 int 和 long 區別?
答:Python2中,int型能表示的數字長度取決於系統位數,32位系統長度為32位,64位系統長度為64位,long型則不受長度限制。在Python3中,所有的整型都為長整型。
6.xrange 和 range 的區別?
答:兩關鍵字都是用於生成指定範圍的列表,在Python3中已經合併為range了。在Python2中,xrange生成結果為迭代器,佔用空間小,range生成結果為列表,佔據空間較大。
編碼規範
7.什麼是 PEP8?
答:PEP8是Python程式設計的一種格式要求,為了提高程式的可讀性和規範性,在程式設計師之間互相約定好的一種程式碼格式
8.瞭解 Python 之禪麼?
答:在Python的互動模式下輸入 import this 就能看到Python之禪的內容了。
9.瞭解 dosctring 麼?
答:Python推崇程式碼即文件,通常在函式中第一個語句即表明了函式的用法及接受的引數,可以透過functiong.__doc__屬性來獲得。
10.瞭解型別註解麼?
答:型別註解是Python3中引入的新特性,透過def(x:int, y:int) -> int: 這樣的方式,標記引數及返回值的型別,這裡要注意,即使新增了了型別註解也不會對程式碼產生影響,它的作用更像是註釋,只是方便其他程式設計師瞭解引數及返回值型別。
11.例舉你知道 Python 物件的命名規範,例如方法或者類等
答:駝峰命名法
12.Python 中的註釋有幾種?
答:2種,單行的使用#的註釋方式,跨行的使用使用三個雙引號或三個單引號的的註釋方式。
13.如何優雅的給一個函式加註釋?
答:函式註釋通常在 def 語句下方,第一行表示函式用法,接下來對函式接受的引數進行解釋,最後對函式的返回值進行註釋,方便他人理解函式的用法。
14.如何給變數加註釋?
15.Python 程式碼縮排中是否支援 Tab 鍵和空格混用。
答:不支援,同時儘量使用4個空格代替Tab縮排。
16.是否可以在一句 import 中匯入多個庫?
答:可以,但不建議。
17.在給 Py 檔案命名的時候需要注意什麼?
答:使用全小寫或者下劃線進行命名。
18.例舉幾個規範 Python 程式碼風格的工具
答:YAPF,谷歌開發的程式碼規範工具。Black,依賴Python3.6+的第三方庫,可以直接將原始碼變為符合PEP8標準的程式碼
資料型別
字串
19.列舉 Python 中的基本資料型別?
答:字串string、數字number、字典dictionary、列表list、元組tuple、集合set。
20.如何區別可變資料型別和不可變資料型別
答:可變的資料型別有 列表、字典、集合,不可變的有字串、數字、元組。
21.將"hello world"轉換為首字母大寫"Hello World"
答:string.title()將每個單詞首字母大寫。
22.如何檢測字串中只含有數字?
答:Python的語法糖,字串型別自帶函式isdigit(),當字串中只存在數字返回True,反之返回False。
23.將字串"ilovechina"進行反轉
答:“ilovechina”[::-1]
24.Python 中的字串格式化方式你知道哪些?
答:format()
25.有一個字串開頭和末尾都有空格,比如“ adabdw ”,要求寫一個函式把這個字串的前後空格都去掉。
答:string.replace(’ ’ ,’’)
26.獲取字串”123456“最後的兩個字元。
答:“123456”[4:6:]或“123456"[-2::]
27.一個編碼為 GBK 的字串 S,要將其轉成 UTF-8 編碼的字串,應如何操作?
答:先編碼為Unicode,再解碼為 UTF-8,具體操作為 string.decode(),str.encode(encoding=‘utf-8’)該條存疑,有待驗證
28.s=“info:xiaoZhang 33 shandong”,用正則切分字串輸出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]
答:re.split(r’[: ]’, s)
27.怎樣將字串轉換為小寫?
答:string.lower()
28.單引號、雙引號、三引號的區別?
答:單引號表示的字串中不能帶有雙引號。雙引號表示的字串中可以存在單引號。三引號中可以存在單引號和雙引號,並且可以跨行表示字串,而單雙引號皆不能跨行。
29.a = "你好 中國 ",去除多餘空格只留一個空格。
答:re.sub(’ +’,’ ', a)
列表
30.已知 AList = [1,2,3,1,2],對 AList 列表元素去重,寫出具體過程。
答:list(set(AList)) 可以利用集合中不能存在相同元素的特性,利用型別轉換進行去重。也可使用迴圈遍歷進行判斷。
31.如何實現 “1,2,3” 變成 [“1”,“2”,“3”]
答:“1,2,3”.split(’,’)
32.給定兩個 list,A 和 B,找出相同元素和不同元素
答:如果列表內不存在重複元素的話,可以轉化為集合,利用集合的 “&&” 找出相同元素,再利用 “a-b","a^b"找出不同元素。若列表記憶體在重複元素,暫時只能想到兩個for迴圈進行查詢。
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.如何打亂一個列表的元素?
答:使用random庫中的random.shuffle(list)函式,該函式無返回值,會將傳入的引數列表隨機排序。
字典
36.字典操作中 del 和 pop 有什麼區別
答:pop()函式會返回刪除的值,而del()函式直接刪除元素,沒有返回值。
37.按照字典的內的年齡排序
d1 = [
{‘name’:‘alice’, ‘age’:38},
{‘name’:‘bob’, ‘age’:18},
{‘name’:‘Carl’, ‘age’:28},
]
答:d1.sort(key=lambda x: x[‘age’])
38.請合併下面兩個字典 a = {“A”:1,“B”:2},b = {“C”:3,“D”:4}
答:a.update(b)。
39.如何使用生成式的方式生成一個字典,寫一段功能程式碼。
答:這道題不能理解題目意思,暫時不答。
40.如何把元組(“a”,“b”)和元組(1,2),變為字典{“a”:1,“b”:2}
答:zip((“a”,“b”),(1,2))
綜合
41.Python 常用的資料結構的型別及其特性?
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值不可重複,透過key值來取對應的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 裡面如何實現 tuple 和 list 的轉換?
答:使用tuple()和list()函式實現轉換
44.我們知道對於列表可以使用切片操作進行部分元素的選擇,那麼如何對生成器型別的物件實現相同的功能呢?
答:使用自帶的itertools庫進行實現,具體實現方式 itertools.islice(生成器物件,起始位置,結束位置),即可實現切片功能。
45.請將[i for i in range(3)]改成生成器
答: iter(range(3))
46.a="hello"和 b="你好"編碼成 bytes 型別
答:a.encode()
47.下面的程式碼輸出結果是什麼?
a = (1,2,3,[4,5,6,7],8)
a[2] = 2
答:報錯,元組元素不支援修改。
48.下面的程式碼輸出的結果是什麼?
a = (1,2,3,[4,5,6,7],8)
a[5] = 2
答:報錯,列表看作是一個元素,5已經下標越界。
操作類題目
49.Python 交換兩個變數的值
答:語法糖 a, b = b, a。
50.在讀檔案操作的時候會使用 read、readline 或者 readlines,簡述它們各自的作用
答:read將整個文字都讀取為一個字串,佔用記憶體大,readline讀取為一個生成器,支援遍歷和迭代,佔用空間小。readlines將文字讀取為列表,佔用空間大。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2837163/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 又面試了Python爬蟲工程師,碰到這麼幾道面試題,Python面試題No9Python爬蟲工程師面試題
- 【彙總】Python爬蟲常見面試題!Python爬蟲面試題
- 關於爬蟲工具 colly 的問題爬蟲
- 最全的50道Redis面試題Redis面試題
- 搞定這套 Python 爬蟲面試題,面試會 so easyPython爬蟲面試題
- 【總結】Python爬蟲面試題及答案(二)Python爬蟲面試題
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 關於棧的幾道面試題目面試題
- 吐血總結!50道Python面試題集錦(附答案)Python面試題
- python實戰之爬蟲面試必備題目Python爬蟲面試
- Python爬蟲面試題分享!這三點很重要Python爬蟲面試題
- 阿里面試最最俱全的,50道Redis面試題阿里Redis面試題
- 50道CSS基礎面試題(附答案)CSS面試題
- 50道 CSS 基礎面試題(附答案CSS面試題
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 關於PHP字串的一道面試題PHP字串面試題
- Python爬蟲抓取技術的門道Python爬蟲
- 【python爬蟲】python爬蟲demoPython爬蟲
- 一道關於Promise應用的面試題Promise面試題
- python爬蟲如何爬知乎的話題?Python爬蟲
- python為什麼叫爬蟲?Python和爬蟲有什麼關係?Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python面試50題!面試鞏固必看!【轉】Python面試
- Python爬蟲亂碼問題Python爬蟲
- GitHub#algorithm#:《劍指offer》 的50道面試題GithubGo面試題
- python和爬蟲代理的關聯Python爬蟲
- 網路爬蟲之關於爬蟲 http 代理的常見使用方式爬蟲HTTP
- 關於非同步爬蟲排序的困惑非同步爬蟲排序
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- Python-爬蟲工程師-面試總結Python爬蟲工程師面試
- 關於global和$GLOBALS[]的一道經典面試題面試題
- python 爬蟲Python爬蟲
- python爬蟲Python爬蟲
- 20道流行的Python 面試題Python面試題
- 50道Redis面試題史上最全,以後面試再也不怕問Redis了Redis面試題
- 關於一道面試題的極其無聊的python演算法實現面試題Python演算法
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- Java爬蟲與Python爬蟲的區別?Java爬蟲Python