日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python面试题网站有哪些_扣丁学堂解析Python爬虫工程师面试题汇总

發(fā)布時間:2024/1/1 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python面试题网站有哪些_扣丁学堂解析Python爬虫工程师面试题汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

扣丁學堂解析Python爬蟲工程師面試題匯總

2018-08-20 11:24:39

1664瀏覽

今天,扣丁學堂的小編來給大家總結一下Python爬蟲的面試技巧,希望給參加Python培訓的同學一點兒幫助。

1、對__if__name__=='main'的理解陳述

__name__是當前模塊名,當模塊被直接運行時模塊名為_main_,也就是當前的模塊,當模塊被導入時,模塊名就不是__main__,即代碼將不會執(zhí)行。

2、python是如何進行內(nèi)存管理的?

a、對象的引用計數(shù)機制

python內(nèi)部使用引用計數(shù),來保持追蹤內(nèi)存中的對象,Python內(nèi)部記錄了對象有多少個引用,即引用計數(shù),當對象被創(chuàng)建時就創(chuàng)建了一個引用計數(shù),當對象不再需要時,這個對象的引用計數(shù)為0時,它被垃圾回收。

b、垃圾回收

1>當一個對象的引用計數(shù)歸零時,它將被垃圾收集機制處理掉。

2>當兩個對象a和b相互引用時,del語句可以減少a和b的引用計數(shù),并銷毀用于引用底層對象的名稱。然而由于每個對象都包含一個對其他對象的應用,因此引用計數(shù)不會歸零,對象也不會銷毀。(從而導致內(nèi)存泄露)。為解決這一問題,解釋器會定期執(zhí)行一個循環(huán)檢測器,搜索不可訪問對象的循環(huán)并刪除它們。

c、內(nèi)存池機制

Python提供了對內(nèi)存的垃圾收集機制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。

1>Pymalloc機制。為了加速Python的執(zhí)行效率,Python引入了一個內(nèi)存池機制,用于管理對小塊內(nèi)存的申請和釋放。

2>Python中所有小于256個字節(jié)的對象都使用pymalloc實現(xiàn)的分配器,而大的對象則使用系統(tǒng)的malloc。

3>對于Python對象,如整數(shù),浮點數(shù)和List,都有其獨立的私有內(nèi)存池,對象間不共享他們的內(nèi)存池。也就是說如果你分配又釋放了大量的整數(shù),用于緩存這些整數(shù)的內(nèi)存就不能再分配給浮點數(shù)。

3、請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復元素

#1.使用set函數(shù)

list=[1,3,4,5,51,2,3]

set(list)

#2.使用字典函數(shù),

>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]

>>>b={}

>>>b=b.fromkeys(a)

>>>c=list(b.keys())

>>>c

4、Python里面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區(qū)別)

賦值(=),就是創(chuàng)建了對象的一個新的引用,修改其中任意一個變量都會影響到另一個。

淺拷貝:創(chuàng)建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變){1,完全切片方法;2,工廠函數(shù),如list();3,copy模塊的copy()函數(shù)}

深拷貝:創(chuàng)建一個新的對象,并且遞歸的復制它所包含的對象(修改其中一個,另外一個不會改變){copy模塊的deep.deepcopy()函數(shù)}

5、介紹一下except的用法和作用?

try…except…except…else…

執(zhí)行try下的語句,如果引發(fā)異常,則執(zhí)行過程會跳到except語句。對每個except分支順序嘗試執(zhí)行,如果引發(fā)的異常與except中的異常組匹配,執(zhí)行相應的語句。如果所有的except都不匹配,則異常會傳遞到下一個調(diào)用本代碼的最高層try代碼中。

try下的語句正常執(zhí)行,則執(zhí)行else塊代碼。如果發(fā)生異常,就不會執(zhí)行如果存在finally語句,最后總是會執(zhí)行。

6、Python中__new__與__init方法的區(qū)別

__new__:它是創(chuàng)建對象時調(diào)用,會返回當前對象的一個實例,可以用_new_來實現(xiàn)單例

__init__:它是創(chuàng)建對象后調(diào)用,對當前對象的一些實例初始化,無返回值

7、常用的網(wǎng)絡數(shù)據(jù)爬取方法

正則表達式

BeautifulSoup

Lxml

8、遇到過得反爬蟲策略以及解決方法

1.通過headers反爬蟲

2.基于用戶行為的發(fā)爬蟲:(同一IP短時間內(nèi)訪問的頻率)

3.動態(tài)網(wǎng)頁反爬蟲(通過ajax請求數(shù)據(jù),或者通過JavaScript生成)

4.對部分數(shù)據(jù)進行加密處理的(數(shù)據(jù)是亂碼)

解決方法:

對于基本網(wǎng)頁的抓取可以自定義headers,添加headers的數(shù)據(jù)

使用多個代理ip進行抓取或者設置抓取的頻率降低一些,

動態(tài)網(wǎng)頁的可以使用selenium+phantomjs進行抓取

對部分數(shù)據(jù)進行加密的,可以使用selenium進行截圖,使用python自帶的pytesseract庫進行識別,但是比較慢最直接的方法是找到加密的方法進行逆向推理。

9、urllib和urllib2的區(qū)別

urllib和urllib2都是接受URL請求的相關模塊,但是urllib2可以接受一個Request類的實例來設置URL請求的headers,urllib僅可以接受URL。urllib不可以偽裝你的User-Agent字符串。

urllib提供urlencode()方法用來GET查詢字符串的產(chǎn)生,而urllib2沒有。這是為何urllib常和urllib2一起使用的原因。

10、設計一個基于session登錄驗證的爬蟲方案

11、列舉網(wǎng)絡爬蟲所用到的網(wǎng)絡數(shù)據(jù)包,解析包

網(wǎng)絡數(shù)據(jù)包urllib、urllib2、requests

解析包re、xpath、beautifulsoup、lxml

12、熟悉的爬蟲框架

Scrapy框架根據(jù)自己的實際情況回答

13、Python在服務器的部署流程,以及環(huán)境隔離

14、Django和Flask的相同點與不同點,如何進行選擇?

15、寫一個Python中的單例模式

classSingleton(object):

_instance=None

def__new__(cls,*args,**kw):

ifnotcls._instance:

cls._instance=super(Singleton,cls).__new__(cls,*args,**kw)

returncls._instance

classMyClass(Singleton):

a=1

one=MyClass()

two=MyClass()

id(one)=id(two)

>>>True

16、Linux部署服務腳本命令(包括啟動和停止的shell腳本)

17、你用過多線程和異步嘛?除此之外你還用過什么方法來提高爬蟲效率?

scrapy-redis分布式爬取

對于定向爬取可以用正則取代xpath

18、POST與GET的區(qū)別

GET數(shù)據(jù)傳輸安全性低,POST傳輸數(shù)據(jù)安全性高,因為參數(shù)不會被保存在瀏覽器歷史或web服務器日志中;

在做數(shù)據(jù)查詢時,建議用GET方式;而在做數(shù)據(jù)添加、修改或刪除時,建議用POST方式;

GET在url中傳遞數(shù)據(jù),數(shù)據(jù)信息放在請求頭中;而POST請求信息放在請求體中進行傳遞數(shù)據(jù);

GET傳輸數(shù)據(jù)的數(shù)據(jù)量較小,只能在請求頭中發(fā)送數(shù)據(jù),而POST傳輸數(shù)據(jù)信息比較大,一般不受限制;

在執(zhí)行效率來說,GET比POST好

19、什么是lambda函數(shù)?它有什么好處?

lambda表達式,通常是在需要一個函數(shù),但是又不想費神去命名一個函數(shù)的場合下使用,也就是指匿名函數(shù)

lambda函數(shù):首要用途是指點短小的回調(diào)函數(shù)

以上就是扣丁學堂Python在線學習小編給大家分享的文章,希望對小伙伴們有所幫助,想要了解更多關于Python開發(fā)方面內(nèi)容的小伙伴可以登錄扣丁學堂官網(wǎng)咨詢,扣丁學堂有專業(yè)的Python培訓班邀請有理想的你加入。扣丁學堂不僅有專業(yè)的Python培訓班供大家學習,還有與時俱進的課程體系和大量的Python在線視頻教程讓學員免費觀看學習,想要學好Python的小伙伴快到扣丁學堂來了解詳情吧。扣丁學堂Python技術交流群:279521237。

【關注微信公眾號獲取更多學習資料】

標簽:

Python培訓

Python爬蟲

總結

以上是生活随笔為你收集整理的python面试题网站有哪些_扣丁学堂解析Python爬虫工程师面试题汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。