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