python實戰之爬蟲面試必備題目

suliver發表於2021-09-11

python實戰之爬蟲面試必備題目

我們在上學時,如果面試考試,最希望的是有一份知識點可以用來複習,雖然不一定全部和試卷吻合,但起碼有了去考試的信心,這點小編也是深有體會的。考慮到學習中有一部分小夥伴在找工作,小編特意整理出一份爬蟲面試的必備題目,當然以下內容僅作為參考,小夥伴們可以照著題目記一記。


1、Python 有哪些資料型別?

Python 有 6 種內建的資料型別,其中不可變資料型別是Number(數字), String(字串), Tuple(元組),可變資料型別是 List(列表),Dict(字典),Set(集合)。

 

2、列表和元組的區別

列表和元組都是可迭代物件,能夠對其進行迴圈、切片等,但元組 tuple 是不可變的。元組不可變的特性,使得它可以成為字典 Dict 中的鍵。

 

3、Python 是如何執行的CPython:

Python 程式執行時,會先進行編譯,將 .py 檔案中的程式碼編譯成位元組碼(byte code),編譯結果儲存在記憶體的 PyCodeObject 中,然後由 Python 虛擬機器解釋執行。當程式執行結束後,Python 直譯器會將 PyCodeObject 儲存到 pyc 檔案中。每一次執行時 Python 都會先尋找與檔案同名的 pyc 檔案,如果 pyc 存在則比對修改記錄,根據修改記錄決定直接執行或再次編譯後執行,最後生成 pyc 檔案 。

 

4、Python 執行速度慢的原因

a). Python 不是強型別的語言,所以直譯器執行時遇到變數以及資料型別轉換、比較操作、引用變數時都需要檢查其資料型別。

b). Python 的編譯器啟動速度比 JAVA 快,但幾乎每次都要啟動編譯。

c). Python 的物件模型會導致訪問記憶體效率變低。Numpy 的指標指向快取區資料的值,而 Python 的指標指向快取物件,再透過快取物件指向資料:

 

5.搜尋引擎的工作流程(通用爬蟲的工作流程)

(1)抓取網頁:透過搜尋引擎將待爬取的URL加入到通用爬蟲的URL佇列中,進行網頁內容的爬取。

2)資料儲存:將爬取下來的網頁儲存到本地,這個過程會有一定的去重操作,如果某個網頁的內 容大部分內容都會重複,搜尋引擎可能不會儲存。

3)預處理:提取文字,中文分詞,消除噪音(比如版權宣告文字,導航條,廣告等)。

(4)設定網站排名,為使用者提供服務。

 

6、什麼是棧溢位?怎麼解決?

因為棧一般預設為1-2m,一旦出現死迴圈或者是大量的遞迴呼叫,在不斷的壓棧過程中,造成棧容量超過1m而導致溢位。

棧溢位的情況有兩種:1)區域性陣列過大。當函式內部陣列過大時,有可能導致堆疊溢位。2)遞迴呼叫層次太多。遞迴函式在執行時會執行壓棧操作,當壓棧次數太多時,也會導致堆疊溢位。

解決方法:1)用棧把遞迴轉換成非遞迴。2)增大棧空間。

 

7、 MySQL的索引在什麼情況下失效?

1)如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什麼儘量少用or的原因)

要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引。

2)對於多列索引,不是使用的第一部分,則不會使用索引。

3)like查詢以%開頭。

4)如果列型別是字串,那一定要在條件中將資料使用引號引用起來,否則不使用索引。

5)如果MySQL估計使用全表掃描要比使用索引快,則不使用索引。

 

8、 HTTPS是如何實現安全傳輸資料的?

客戶端(通常是瀏覽器)先向伺服器發出加密通訊的請求;

伺服器收到請求,然後響應;

客戶端收到證照之後會首先會進行驗證;

伺服器收到使用公鑰加密的內容,在伺服器端使用私鑰解密之後獲得隨機數pre-master secret,然後根據radom1、radom2、pre-master secret透過一定的演算法得出session Key和MAC演算法秘鑰,作為後面互動過程中使用對稱秘鑰。同時客戶端也會使用radom1、radom2、pre-master secret,和同樣的演算法生成session Key和MAC演算法的秘鑰。

然後再後續的互動中就使用session Key和MAC演算法的秘鑰對傳輸的內容進行加密和解密。

以上的內容只是一些基本的爬蟲知識點,更多的還是需要小夥伴們自己挖掘。小編考慮到如果內容過大,大家也不能一下子學會,所以學習還是循序漸進的好一些。更多Python學習推薦:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2370/viewspace-2832104/,如需轉載,請註明出處,否則將追究法律責任。

相關文章