python面試題一些知識點

1.數據庫大致可以分爲幾類?你使用過的數據庫有哪些?分別是什麼類型的數據庫?

答:數據庫大致可分爲:關係型數據庫和非關係型數據庫兩種,使用過的數據庫包括Mysql,sqlite3,redis,mongodb,PostgreSQL,oracle。其中mysql和sqlite3,oracle,PostgreSQL它們是關係型數據庫,mongodb,redis是非關型數據庫。
2.請列舉你使用過的網絡請求庫有哪些?

答:python自帶的urllib,第三方的requests,grequests
3.請列舉你使用過的網頁解析方式及解析用到的包?

答:使用過的解析包:lxml,BeautifulSoup4,pyquery;
使用過的數據解析方式:xpath語法,css選擇器,re

4.get請求和post請求的區別在哪裏?

答:1>get請求將參數設置在url中,以?和&的形式拼接;post請求將參數設置在請求體中
2>get請求沒有post請求安全,重要的數據容易暴露
3>get請求傳輸數據的大小受到限制,post請求傳輸數據的大小理論上不受到限制
4>get請求一般用於獲取服務器資源,post請求用於在服務器上創建資源。

5.cookie和session的區別是什麼?請詳細描述瀏覽器和服務器之間的cookie交互過程。

答:區別:
1>cookie是在瀏覽器端進行數據存儲,session是在服務器端進行數據存儲
2>cookie一般用來存儲數據,session一般用來跟蹤會話
3>session比cookie安全性高
交互過程:
1>首次訪問網站的時候,服務器會通過Set-Cookie字段向客戶端返回一些cookie信息;
2>客戶端在接收到服務器響應之後,會解析響應頭中得Set-Cookie字段,將數據緩存在本地;
3>客戶端再次訪問服務器得時候,會在請求頭中攜帶這些cookie信息,用於表明客戶端和服務器之間得連接狀態;

6.請列舉你遇到過的反爬蟲措施,以及你的應對措施。

答:遇到過的反爬蟲措施:
1>網站檢測請求頭和ip,發現異常則封禁請求頭和ip
2>網站設置登錄,必須登錄才能獲取頁面信息。
3>網站禁用cookie,禁止使用cookie進行登錄。
4>網站設置驗證碼
5>網站設置成js動態加載的頁面。
應對措施:
1>設置ip代理池和隨機請求頭
2>註冊多個賬戶搭建cookie池
3>破解登錄參數,進行模擬登錄
4>使用打碼平臺或者其他方式破解驗證碼
5>使用selenium進行爬取。

7.請列舉你使用過的css選擇器(至少五種)。

答:類選擇器,id選擇器,交集選擇器,父子選擇器,後代選擇器,屬性選擇器,僞類選擇器

8.簡述極驗驗證碼的破解流程。

答:1>通過分析網站找出能夠獲取極驗參數的url;
2>請求這個url獲取極驗參數gt和challenge,將獲得的極驗參數上傳到驗證碼識別接口;
3>將識別成功後的返回值challenge和validate,及其它表單數據一塊上傳至網站主服務器請求網站數據即可

9.請列舉常見的響應狀態碼,並解釋其含義(至少五個)。

答:1>200 get請求成功
2>201 post請求成功
3>301 url重定向
4>403 請求被拒絕
5>400 無效的請求
6>500 內部服務器錯誤
7>404 服務器無法找到被請求的頁面

10.Charles的作用是什麼?如何配置Charles抓取瀏覽器發起的http/https網絡請求?

答:Charles是一個抓包代理工具,用於攔截客戶端發起的http/https請求,然後Charles再將請求轉發至對方服務器,從而達到攔截請求和數據的目的。
配置:
1>先配置charles,它默認能過攔截http請求,讓其能夠監聽https請求需要添加443端口;
2>從charles中獲取一份證書保存下來,然後找到瀏覽器對應安裝證書的設置將證書安裝至瀏覽器即可。

11.mysql的端口號是?http的端口號是?https的端口號是?

答:3306,80,443

12.一個網頁的基本組成是什麼?

答:html,css,js

13.http的請求報文和響應報文的組成分別是什麼?

答:1>請求報文:請求行+請求頭+空行+請求數據
2>響應報文:狀態行+響應頭+空行+響應數據

14.json模塊中的dumps和loads的作用分別是什麼?

答:1>loads:將一個json字符串反序列化爲一個python對象
2>dumps:將一個python對象序列化爲一個json字符串

15.請列舉你使用過的python內置的裝飾器,並說明它們的作用。

答:1>@classmethod:將一個實例方法,轉換成一個類方法
2>@stacticmethod:將實例方法轉換成了一個靜態方法
3>@property是將name函數聲明爲一個getter函數

16.請說出一個爬蟲程序的最基本組成部分有哪些?

答:請求模塊,解析模塊,清理模塊,存儲模塊。

17.面向對象的三大特徵是什麼?類的繼承有什麼優勢?

答:三大特徵:封裝,繼承,多態
優勢:繼承可以實現代碼得重用,可以在父類已有功能得基礎上,擴展新得功能

18.yield和return的區別是什麼?

答:yield和return區別:
yield每次只返回一個值,而return會把最終的結果一次性返回。每當代碼執行到yield的時候就會直接將yield後面的值返回出去,下一次迭代的時候,會從上一次遇到yield之後的代碼開始執行。

19.python如何安裝第三方模塊(包),如何安裝指導版本的第三方包(模塊),如何查看python的安裝位置,請寫出相關命令。

答:pip install 第三方包的名字
pip install 第三方包的名字==版本號
where python

20.Mitmproxy是什麼,它的作用是什麼?
答:Mitmproxy是一個支持HTTP和HTTPS的抓包程序,類似Fiddler,Charles的功能,只不過它通過控制檯的形式操作。mitmproxy還有兩個關聯組件,一個是mitmdump,它是mitmproxy的命令行接口,利用它可以對接python腳本,實現監聽後的處理;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章