摘要:內(nèi)存池機(jī)制提供了對(duì)內(nèi)存的垃圾收集機(jī)制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。為了加速的執(zhí)行效率,引入了一個(gè)內(nèi)存池機(jī)制,用于管理對(duì)小塊內(nèi)存的申請(qǐng)和釋放。
注:答案一般在網(wǎng)上都能夠找到。
1.對(duì)if __name__ == "main"的理解陳述
2.python是如何進(jìn)行內(nèi)存管理的?
3.請(qǐng)寫(xiě)出一段Python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素
4.Python里面如何拷貝一個(gè)對(duì)象?(賦值,淺拷貝,深拷貝的區(qū)別)
5.介紹一下except的用法和作用?
6.Python中__new__與__init__方法的區(qū)別
7.常用的網(wǎng)絡(luò)數(shù)據(jù)爬取方法
8.遇到過(guò)得反爬蟲(chóng)策略以及解決方法
9.urllib 和 urllib2 的區(qū)別
10.設(shè)計(jì)一個(gè)基于session登錄驗(yàn)證的爬蟲(chóng)方案
11.列舉網(wǎng)絡(luò)爬蟲(chóng)所用到的網(wǎng)絡(luò)數(shù)據(jù)包,解析包
12.熟悉的爬蟲(chóng)框架
13.Python在服務(wù)器的部署流程,以及環(huán)境隔離
14.Django 和 Flask 的相同點(diǎn)與不同點(diǎn),如何進(jìn)行選擇?
15.寫(xiě)一個(gè)Python中的單例模式
16.Linux部署服務(wù)腳本命令(包括啟動(dòng)和停止的shell腳本)
17.你用過(guò)多線程和異步嘛?除此之外你還用過(guò)什么方法來(lái)提高爬蟲(chóng)效率?
18.POST 與 GET的區(qū)別
對(duì)if __name__ == "main"的理解陳述
__name__是當(dāng)前模塊名,當(dāng)模塊被直接運(yùn)行時(shí)模塊名為__main__,也就是當(dāng)前的模塊,當(dāng)模塊被導(dǎo)入時(shí),模塊名就不是__main__,即代碼將不會(huì)執(zhí)行。
python是如何進(jìn)行內(nèi)存管理的?
a、對(duì)象的引用計(jì)數(shù)機(jī)制
python內(nèi)部使用引用計(jì)數(shù),來(lái)保持追蹤內(nèi)存中的對(duì)象,Python內(nèi)部記錄了對(duì)象有多少個(gè)引用,即引用計(jì)數(shù),當(dāng)對(duì)象被創(chuàng)建時(shí)就創(chuàng)建了一個(gè)引用計(jì)數(shù),當(dāng)對(duì)象不再需要時(shí),這個(gè)對(duì)象的引用計(jì)數(shù)為0時(shí),它被垃圾回收。
b、垃圾回收
1>當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)歸零時(shí),它將被垃圾收集機(jī)制處理掉。
2>當(dāng)兩個(gè)對(duì)象a和b相互引用時(shí),del語(yǔ)句可以減少a和b的引用計(jì)數(shù),并銷毀用于引用底層對(duì)象 的名稱。然而由于每個(gè)對(duì)象都包含一個(gè)對(duì)其他對(duì)象的應(yīng)用,因此引用計(jì)數(shù)不會(huì)歸零,對(duì)象也不會(huì)銷毀。(從而導(dǎo)致內(nèi)存泄露)。為解決這一問(wèn)題,解釋器會(huì)定期執(zhí)行一個(gè)循環(huán)檢測(cè)器,搜索不可訪問(wèn)對(duì)象的循環(huán)并刪除它們。
c、內(nèi)存池機(jī)制
Python提供了對(duì)內(nèi)存的垃圾收集機(jī)制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。
1>Pymalloc機(jī)制。為了加速Python的執(zhí)行效率,Python引入了一個(gè)內(nèi)存池機(jī)制,用于管理 對(duì)小塊內(nèi)存的申請(qǐng)和釋放。
2>Python中所有小于256個(gè)字節(jié)的對(duì)象都使用pymalloc實(shí)現(xiàn)的分配器,而大的對(duì)象則使用 系統(tǒng)的malloc。
3>對(duì)于Python對(duì)象,如整數(shù),浮點(diǎn)數(shù)和List,都有其獨(dú)立的私有內(nèi)存池,對(duì)象間不共享他們的內(nèi)存池。也就是說(shuō)如果你分配又釋放了大量的整數(shù),用于緩存這些整數(shù)的內(nèi)存就不能再分配給浮點(diǎn)數(shù)。
請(qǐng)寫(xiě)出一段Python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素
# 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
Python里面如何拷貝一個(gè)對(duì)象?(賦值,淺拷貝,深拷貝的區(qū)別)
賦值(=),就是創(chuàng)建了對(duì)象的一個(gè)新的引用,修改其中任意一個(gè)變量都會(huì)影響到另一個(gè)。
淺拷貝:創(chuàng)建一個(gè)新的對(duì)象,但它包含的是對(duì)原始對(duì)象中包含項(xiàng)的引用(如果用引用的方式修改其中一個(gè)對(duì)象,另外一個(gè)也會(huì)修改改變){1,完全切片方法;2,工廠函數(shù),如list();3,copy模塊的copy()函數(shù)}
深拷貝:創(chuàng)建一個(gè)新的對(duì)象,并且遞歸的復(fù)制它所包含的對(duì)象(修改其中一個(gè),另外一個(gè)不會(huì)改變){copy模塊的deep.deepcopy()函數(shù)}
介紹一下except的用法和作用?
try…except…except…else…
執(zhí)行try下的語(yǔ)句,如果引發(fā)異常,則執(zhí)行過(guò)程會(huì)跳到except語(yǔ)句。對(duì)每個(gè)except分支順序嘗試執(zhí)行,如果引發(fā)的異常與except中的異常組匹配,執(zhí)行相應(yīng)的語(yǔ)句。如果所有的except都不匹配,則異常會(huì)傳遞到下一個(gè)調(diào)用本代碼的最高層try代碼中。
try下的語(yǔ)句正常執(zhí)行,則執(zhí)行else塊代碼。如果發(fā)生異常,就不會(huì)執(zhí)行如果存在finally語(yǔ)句,最后總是會(huì)執(zhí)行。
Python中__new__與__init__方法的區(qū)別
__new__:它是創(chuàng)建對(duì)象時(shí)調(diào)用,會(huì)返回當(dāng)前對(duì)象的一個(gè)實(shí)例,可以用__new__來(lái)實(shí)現(xiàn)單例
__init__:它是創(chuàng)建對(duì)象后調(diào)用,對(duì)當(dāng)前對(duì)象的一些實(shí)例初始化,無(wú)返回值
常用的網(wǎng)絡(luò)數(shù)據(jù)爬取方法
正則表達(dá)式
Beautiful Soup
Lxml
遇到過(guò)得反爬蟲(chóng)策略以及解決方法
1.通過(guò)headers反爬蟲(chóng)
2.基于用戶行為的發(fā)爬蟲(chóng):(同一IP短時(shí)間內(nèi)訪問(wèn)的頻率)
3.動(dòng)態(tài)網(wǎng)頁(yè)反爬蟲(chóng)(通過(guò)ajax請(qǐng)求數(shù)據(jù),或者通過(guò)JavaScript生成)
4.對(duì)部分?jǐn)?shù)據(jù)進(jìn)行加密處理的(數(shù)據(jù)是亂碼)
解決方法:
對(duì)于基本網(wǎng)頁(yè)的抓取可以自定義headers,添加headers的數(shù)據(jù)
使用多個(gè)代理ip進(jìn)行抓取或者設(shè)置抓取的頻率降低一些,
動(dòng)態(tài)網(wǎng)頁(yè)的可以使用selenium + phantomjs 進(jìn)行抓取
對(duì)部分?jǐn)?shù)據(jù)進(jìn)行加密的,可以使用selenium進(jìn)行截圖,使用python自帶的pytesseract庫(kù)進(jìn)行識(shí)別,但是比較慢最直接的方法是找到加密的方法進(jìn)行逆向推理。
urllib 和 urllib2 的區(qū)別
urllib 和urllib2都是接受URL請(qǐng)求的相關(guān)模塊,但是urllib2可以接受一個(gè)Request類的實(shí)例來(lái)設(shè)置URL請(qǐng)求的headers,urllib僅可以接受URL。urllib不可以偽裝你的User-Agent字符串。
urllib提供urlencode()方法用來(lái)GET查詢字符串的產(chǎn)生,而urllib2沒(méi)有。這是為何urllib常和urllib2一起使用的原因。
設(shè)計(jì)一個(gè)基于session登錄驗(yàn)證的爬蟲(chóng)方案
列舉網(wǎng)絡(luò)爬蟲(chóng)所用到的網(wǎng)絡(luò)數(shù)據(jù)包,解析包
網(wǎng)絡(luò)數(shù)據(jù)包 urllib、urllib2、requests
解析包 re、xpath、beautiful soup、lxml
熟悉的爬蟲(chóng)框架
Scrapy框架 根據(jù)自己的實(shí)際情況回答
Python在服務(wù)器的部署流程,以及環(huán)境隔離
Django 和 Flask 的相同點(diǎn)與不同點(diǎn),如何進(jìn)行選擇?
寫(xiě)一個(gè)Python中的單例模式
class Singleton(object): _instance = None def __new__(cls, *args, **kw): if not cls._instance: cls._instance = super(Singleton, cls).__new__(cls, *args, **kw) return cls._instance class MyClass(Singleton): a = 1 one = MyClass() two = MyClass() id(one) = id(two) >>> True
Linux部署服務(wù)腳本命令(包括啟動(dòng)和停止的shell腳本)
你用過(guò)多線程和異步嘛?除此之外你還用過(guò)什么方法來(lái)提高爬蟲(chóng)效率?
scrapy-redis 分布式爬取
對(duì)于定向爬取可以用正則取代xpath
POST與 GET的區(qū)別
GET數(shù)據(jù)傳輸安全性低,POST傳輸數(shù)據(jù)安全性高,因?yàn)閰?shù)不會(huì)被保存在瀏覽器歷史或web服務(wù)器日志中;
在做數(shù)據(jù)查詢時(shí),建議用GET方式;而在做數(shù)據(jù)添加、修改或刪除時(shí),建議用POST方式;
GET在url中傳遞數(shù)據(jù),數(shù)據(jù)信息放在請(qǐng)求頭中;而POST請(qǐng)求信息放在請(qǐng)求體中進(jìn)行傳遞數(shù)據(jù);
GET傳輸數(shù)據(jù)的數(shù)據(jù)量較小,只能在請(qǐng)求頭中發(fā)送數(shù)據(jù),而POST傳輸數(shù)據(jù)信息比較大,一般不受限制;
在執(zhí)行效率來(lái)說(shuō),GET比POST好
什么是lambda函數(shù)?它有什么好處?
lambda 表達(dá)式,通常是在需要一個(gè)函數(shù),但是又不想費(fèi)神去命名一個(gè)函數(shù)的場(chǎng)合下使用,也就是指匿名函數(shù)
lambda函數(shù):首要用途是指點(diǎn)短小的回調(diào)函數(shù)
lambda [arguments]:expression >>> a=lambdax,y:x+y >>> a(3,11)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44645.html
摘要:面試的心得體會(huì)簡(jiǎn)歷制作我做了兩份簡(jiǎn)歷,用兩個(gè)手機(jī)賬號(hào),兩個(gè)簡(jiǎn)歷名字,分別在各個(gè)招聘網(wǎng)站投了雙份簡(jiǎn)歷,一個(gè)是數(shù)據(jù)分析的簡(jiǎn)歷一個(gè)是全棧開(kāi)發(fā)的簡(jiǎn)歷,我真正接觸快年,不管是學(xué)習(xí)還是工作學(xué)到的東西,這兩年大概掌握了前端爬蟲(chóng)數(shù)據(jù)分析機(jī)器學(xué)習(xí)技術(shù), showImg(https://upload-images.jianshu.io/upload_images/13090773-b96aac7e974c...
摘要:接下來(lái)我們就來(lái)看看學(xué)到什么程度才算是真正學(xué)會(huì)可以去一展身手。一確立目標(biāo)了解需求做什么事情都要先確定好目標(biāo),才不至于迷失方向。 大家在學(xué)習(xí)Python的時(shí)候,有人會(huì)問(wèn)Python要學(xué)到什么程度才能出去找工作,對(duì)于在Python培訓(xùn)機(jī)構(gòu)學(xué)習(xí)Python的同學(xué)來(lái)說(shuō)這都不是問(wèn)題,因?yàn)榘凑誔ython課程大綱來(lái),一般都不會(huì)有什么問(wèn)題,而對(duì)于自學(xué)Python來(lái)說(shuō),那就比較難掌握,冒然出去找工作非常...
摘要:今天是年月號(hào),是我實(shí)習(xí)的第二天,記錄一下找工作的歷程,本來(lái)準(zhǔn)備昨晚寫(xiě)的,但是第一天來(lái)實(shí)習(xí),有點(diǎn)累了,就早點(diǎn)睡了,早上醒了,洗漱一下就來(lái)寫(xiě)這篇文章了。 showImg(https://hqx.oss-cn-beijing.aliyuncs.com/image/beautiful/pexels-photo-428320.jpeg?x-oss-process=style/jixn); 今天是...
摘要:最近看前端都展開(kāi)了幾場(chǎng)而我大知乎最熱語(yǔ)言還沒(méi)有相關(guān)。有關(guān)書(shū)籍的介紹,大部分截取自是官方介紹。但從開(kāi)始,標(biāo)準(zhǔn)庫(kù)為我們提供了模塊,它提供了和兩個(gè)類,實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫(xiě)線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書(shū), 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來(lái)說(shuō), 基礎(chǔ)大概也就夠用了...
摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...
閱讀 2473·2021-11-24 09:39
閱讀 3406·2021-11-15 11:37
閱讀 2251·2021-10-08 10:04
閱讀 3965·2021-09-09 11:54
閱讀 1883·2021-08-18 10:24
閱讀 1033·2019-08-30 11:02
閱讀 1793·2019-08-29 18:45
閱讀 1651·2019-08-29 16:33