導航:首頁 > 編程語言 > python工程師面試經歷

python工程師面試經歷

發布時間:2023-03-18 18:07:40

『壹』 如何面試python後端工程師

你如果自己懂就很簡單面試了。 如果你自己對python不熟悉。那就找你熟悉的東西問。另外可以找人出幾道難些的題,讓他做。

後端工程師對於python來說太容易了。通常tornado要會。web開發框架找一種,比如django, web2py等,要「精通」。真正的熟練。 常見的性能問題,並發問題(進程,線程),插件管理,緩存,資料庫連接池,nginx等等都要知道。

曾經要有過獨立設計開發一整套後端平台的經驗。獨立編寫代碼量至少要在1萬行以上。能夠將後台的服務有機的分成各個層次,會搭建分布式計算環境。

對於系統的健壯性,系統的運維,系統運行狀態錯誤定位有直接深刻廣泛的經驗。

最好有帶隊經驗。可以出些簡單的題做。比如做模板,做個爬蟲,做個伺服器狀態監控,搭一個並發性能在每秒1000次訪問的平台等。

編程需要大膽,細心,沉靜,還有有熱情,對工作負責。這些性格因素也很重要。

『貳』 如何面試Python後端工程師

應屆及1年以內一般考察粗盯喚基本演算法與解決問題的思路,學習能力,python方面為考察基本內容及標准庫。
有經驗的考察實則凳際項目經驗,針對某些項目經驗深入考察細節,技術主要是後端相關的生態知識如資料庫,緩存、python的一些高岩凱階內容及第三方庫的應用等。

『叄』 如何面試Python後端工程師

1.我從來不問google可獲得的答案的問題, 只是問問面試者「在過去的工作中,遇到的Ta認為最有成就感的一件事情是什麼」和「如果出現了一個google不到的問題,你會怎麼解決」這樣的問題。
2. 我從來不問操作系統等和Python無關的話題,首先是我不怎麼問和工作太無關的話題,有些東西用不到很多就被會遺忘,挑起來這種問題其實挺無聊;其次我是非計算機專業畢業,問的東西說不定我自己都沒有把握,那就不出來獻丑了。我只關注面試者的學習能力和解決問題的方式,說白了,是不是就是看他是不是「聰明的人」。
3. 不問面試者的短處。我在自己被面試的時候有過這種精力,面試者問他擅長的內容,我不一定搞的定,如果反過來面試Ta,我也會滅掉Ta。所以我會盡力尋找面試者的優勢和優點,尤其是對方已經明確承認。其實很多經驗和能力,只是需要一個機會和環境,所以我不想放過任何一個合適的人。
4. 面試者不會Python也沒有關系。面試者的主動性和學習能力覺得更重要,如果他在其他領域能證明做的不錯或者能讓我感覺到這個一個未來有潛質成為優秀工程師的人,不會Python沒有關系。 嗯目前看來,我沒有看錯過。
5. 我從來不問Python語法這種看書和google就能學會的問題,我只想了解Ta是否願意去學。舉個例子,我會讓面試者「講講日常開發中都用到了那些Python內置的模塊」,原因在我的專欄「Python之美 - 知乎專欄」的 Python不能不知的模塊 - Python之美 - 知乎專欄中有寫,基本上說完我就能評估出他的能力和風格,繼而就是再問一些問題去驗證我的評估是不是准確。
6. 最後,我一般都會和面試者細聊一個Ta認為在過去的工作或者自己開源的項目中最熟悉的一個,從項目設計、踩過的坑兒、開發周期以及如何安排、如何確定需求、如何和其他人協作等方面,最後評估下Ta是否能很容易的融入到我們現在的團隊,大家是否可以接受Ta,對工作不負責的、沒有用心工作的、沒有團隊意識的、溝通能力有缺陷的就放棄掉,對性格上容易發生沖突的、不適合團隊合作的我就得考慮下,未來也會如實反饋給HR。

『肆』 成都UBISOFT-育碧面試(python工程師)

面試流程

1、電話面試
人事先簡單的電話面試,估計大公司都喜歡這樣,不過這種電話面試挺好的,先確定兩邊的意向和基本情況,再進行面試,可以省去很多時間,不得不給這個公司一個贊

電面:

感覺這個hr哥哥很牛,很多技術方面也知道,而且你邊說他邊記(我聽到電話那頭快速敲鍵盤的聲音)

2、筆試
過了2天,hr哥哥通知我把電話面試的情況報告上頭,說很滿意,安排過來筆試
他們公司在天府二街b區2樓,離我們公司很近,就幾分鍾。
約的是下午四點,去到那邊悉盯,前台會給你一份登記表和筆試題,他們都提前准備好了,確實很正規,而且裡面逼格有點高,前台屏幕放的是英文電影,報紙也是全英文的,偶爾又外國人進出

筆試題:

寫完,hr要我先回去,後面等通知

3、技術面試
過了2天,hr哥哥,我筆試過了,通知我復試,約的下午2點
面試官:hr哥哥+技術組長

面試完,說要我等下,他們需要討論下,如果可以還有終面

3、終面
沒等多久,他們說我進入終面

終面是他們技術總監和hr leader

面試完,說兩天之內有答復

4、offer
過稿陸燃了兩天,hr通知我被錄取了(不過感覺有鍵虛點壓工資。。)

『伍』 面試Python後端工程師,主要注意准備什麼

自我介紹
之前講過很多關於如何應對面試官提出的「自我介紹」這個問題,今天,針對Python程序員這個崗位,給大家重新梳理一下答題的結構。我們在做自我介紹時,可以按照:個人基本信息+基本技術構成+項目經驗(具體項目以及在項目中的負責部分)+自我評價的結構來回答。注意一定要緊緊圍繞招聘崗位的需求做介紹,在此之前要做好准備工作,看看招聘方具體需要什麼方向的研發工程師。目前針對Python,有自動化測試平台的設計與開發、數據的挖掘與清洗以及Python開發等具體崗位,所以面試Python方向的同學注意,可以多和運維以及自動化方面靠攏。當然,具體還是要看公司空缺崗位與你的專業是否對口。
不要給自己挖坑
確保你在回答面試官的過程中,回答的每個知識點都瞭然於胸,不然被問住,是很難堪的。如果遇到不會的問題,一定不要盲目亂答一通。比如有一次,有位同學在回答Web安全問題時,順嘴說了SQL注入,面試官便順水推舟,讓這位同學接著講講SQL的原理及解決方法。然而這位同學卻把XSS跨站注入攻擊和SQL注入搞混了,歸根結底,還是知識掌握得不夠牢固。所以,在面試時,要斟酌每一句話,聰明的同學還可以引導面試官,讓他問出自己想要被問的問題。當然,化被動為主動,就是面試中比較高的一種境界了。
有足夠的自信
如果你學歷不是特別高,在面試時,面試官很有可能會問你是怎樣看待學歷和能力的。學歷和能力在當今的社會都不可或缺,學歷往往是你面試的敲門磚,但敲完門用途就不大了,後面才是證明你能力的時刻。針對這個問題,我們一定要不卑不亢地說出自己看法:「我想只要完成了大學校園內的學業,就表明已經具備了一定的學習能力。如果我們努力學習代碼技能,並且有能力學好,那麼是學士還是博士就不是很重要。競爭這個崗位的關鍵是看你能在這個領域上發揮什麼作用,而不單單是學了多少書本上的知識。」
除了上述主觀性問題之外,很多專業性的問題也要瞭然於心。

『陸』 如何面試Python後端工程師

我覺得重點不是Python而是後端工程師,因為Python只是系統的一部分,linux基礎操作要熟吧,sql要懂吧,消息隊列要知道吧,git要熟悉吧木桶理論,每一環都不能落下,精通其中一兩環就更好了。基礎功扎實,新東西學得快,代碼寫得溜,命令敲得順,bug解的好,媽媽再也不用擔心我天天加班了~~~一.語言1.推薦一本看過最好的python書籍?拉開話題好扯淡2.談談python的裝飾器,迭代器,yield?3.標准庫線程安全的隊列是哪一個?不安全的是哪一個?logging是線程安全的嗎?4.python適合的場景有哪些?當遇到計算密集型任務怎亂旁么?5.python高並發解決方案?我希望聽到twisted->tornado->gevent,能扯到golang,erlang更好二.操作系統可以直接認為是linux,畢竟搞後端的多數是和linux打交道。1.tcp/udp的區別?tcp粘包是怎麼回事,如何處理?udp有粘包嗎?2.time_wait是什麼情況?出現過多的close_wait可能是什麼原因?3.epoll,select的區別?邊緣觸發,水平觸發區別?三.存儲存儲可能包含rdbms,nosql以及緩存等,我以mysql,redis舉例mysql相關1.談談mysql字元集和排序規則?2.varchar與char的區別是什麼?大小限制?utf8字元集下varchar最多能存多少個字元3.primarykey和unique的區別?4.外純冊鍵有什麼用,是否該用外鍵?外鍵一定需要索引嗎?5.myisam與innodb的區別?innodb的兩階段鎖定協議是什麼情況?6.索引有什麼用,大致原理是什麼?設計索引有什麼注意點?redis相關1.什麼場景用redis,為什麼mysql不適合?2.談談redis的事務?用事務模擬原子+1操作?原子操作還有其它解決方案嗎?3.redis內存滿了會怎麼樣?四.安全web安全相關1.sql注入是怎麼產生的,如何防止?2.xss如何預防?htmlescape後能否避免xss?3.csrf是什麼?django是如何防範的?五密碼技術1.什麼是分組加密?加密模式有哪些?ecb和cbc模式有什麼區別?為什麼需要iv向量?2.簡單說說https的過程?3.對稱加密與非對稱加密區別?3.如何生成共享秘鑰?如何防範中間人攻擊?六.雜是否關注新技術啊?golang,rust是否了解?numpy,pandas是啥鳥?是否緊跟時代潮流?逛不逛微博,刷不刷知乎?可能你覺得我問的好細,但這好多都是平常經常遇到,並需要解決的,細節更能體嘩褲橡現一個人。

『柒』 Python後端開發工程師面試

第一步:自我介紹

第二步:公司介紹

第三步:技術基礎

第四步:項目介紹

第五步:待遇

自我介紹,簡單直接,姓名,籍貫,大學,工作經歷

示例如下:

你好,面試官,我叫XX,來自XX,本科畢業於XX,主修XX專業,有X年工作經驗,在上一家公司擔任python後端開發工程師的職位。

公司名稱是XX、公司主要做外包軟體、都有軟體定製/商城定製、前端2個後端2個運維1個

主要是根據你簡歷中填寫的技術,根據我的簡歷中所寫的,總結幾點如下:

字典的查詢流程:

不可變對象可哈希, str , fronzenset , tuple ,自己實現的類,要重載 __hash__ 方法。

dict內存花銷大,但是查詢速度快,自定義的對象或者python內部的對象都是dict包裝的。

dict的存儲順序和元素添加順序有關,添加順序可能改變已有數據的順序。

集合:是一個可以存放任意數據類型的可變無序的映射集合。

set和dict類似,set的核心也是散列表,但是表元只包含值的引用。 由於散列表的特性,set的元素不能重復,且無序。 內部由哈希實現,查找的時間復雜度為O(1),所以性能很高,實現了魔法函數 __contains__ 可以使用in來查找。 set的去重是通過兩個函數 __hash__ 和 __eq__ 實現的。

(1)淺拷貝

定義:淺拷貝只是對另外一個變數的內存地址的拷貝,這兩個變數指向同一個內存地址的變數值。

淺拷貝的特點:

(2)深拷貝:

定義:一個變數對另外一個變數的值拷貝。

深拷貝的特點:

Python GC主要使用引用計數(reference counting)來跟蹤和回收垃圾。在引用計數的基礎上,通過「標記-清除」(mark and sweep)解決容器對象可能產生的循環引用問題,通過「分代回收」(generation collectio n)以空間換時間的方法提高垃圾回收效率。

GIL全稱 Global Interpreter Lock ,中文解釋為全局解釋器鎖。它並不是Python的特性,而是在實現python的主流Cpython解釋器時所引入的一個概念,GIL本質上就是一把互斥鎖,將並發運行變成串列,以此來控制同一時間內共享數據只能被一個任務所修改,從而保證數據的安全性。

GIL保護的是解釋器級別的數據,但是用戶自己的數據需要自己加鎖處理。

既然有了GIL的存在,一個進程中同一時刻只有一個線程能夠被執行,無法利用cpu的多核機制,導致多線程用於I/O密集型,多進程用於計算密集型,如金融分析等。

死鎖:兩個或兩個以上的進程或者線程在執行過程中,因為爭奪資源而造成的互相等待現象,若無外力的作用,都將一直處於阻塞狀態,這些互相等待的進程或者線程就被稱為死鎖。

解決方法,使用遞歸鎖(RLock)

這個RLock內部有一個Lock和一個counter變數,counter記錄著acquire的次數,從而使得資源可以被多次require。直到一個線程所有的acquire都被release,其他的線程才能獲得資源。上面的例子如果使用RLock代替Lock,則不會發生死鎖

可以直接認為是linux,畢竟搞後端的多數是和linux打交道。

那麼如何避免粘包問題呢? 歸根結底就是一句話, 明確兩個包之間的邊界.

UDP不存在粘包問題,是由於UDP發送的時候,沒有經過Negal演算法優化,不會將多個小包合並一次發送出去。另外,在UDP協議的接收端,採用了鏈式結構來記錄每一個到達的UDP包,這樣接收端應用程序一次recv只能從socket接收緩沖區中讀出一個數據包。也就是說,發送端send了幾次,接收端必須recv幾次(無論recv時指定了多大的緩沖區)。

存儲可能包含rdbms,nosql以及緩存等,我以mysql,redis舉例**

『捌』 餓了么企業的Python高級工程師職位面試經驗分享

餓了么框架部門技喚源術總監,前愛立信首席軟體工程師,10 年以上高可用性,高並發系統架構設計經銀仿驗。現餓了么框架工具部負責人,負責餓了么中間件的設計及實施,通過中間件以及研發工具的輔助提升研發人員的和搏態工作效率,提升網站的穩定性及性能。

『玖』 如何面試Python後端工程師

一.語言
1.推薦一本看過最好的python書籍? 拉開話題好扯淡
2.談談python的裝飾器,迭代器,yield?
3.標准庫線程安全的隊列是哪一個?不安全的是哪一個?logging是線程安全的嗎?
4.python適合的場景有哪些?當遇到計算密集型任務怎麼辦?
5.python高並發解決方案?我希望聽到twisted->tornado->gevent,能扯到golang,erlang更好
二.操作系統
可以直接認為是linux,畢竟搞後端的多數是和linux打交道。
1.tcp/udp的區別?tcp粘包是怎麼回事,如何處理?udp有粘包嗎?
2.time_wait是什麼情況?出現過多的close_wait可能是什麼原因?
3.epoll,select的區別?邊緣觸發,水平觸發區別?
三.存儲
存儲可能包敗指含rdbms,nosql以及緩存等,我以MySQL,Redis舉例
mysql相關
1.談談mysql字元集和排序規則?
2.varchar與char的區別是什麼?大小限制?utf8字元集下varchar最多能存多少個字元
3.primary key和unique的區別?
4.外鍵有什麼用,是否該用外鍵?外鍵一定需要索引嗎?
5.myisam與innodb的區別?innodb的兩階段鎖定協議是什麼情況?
6.索引有什麼用,大致原理是什麼?設計索引有什麼注意點?
redis相關
1.什麼場景用redis,為什麼mysql不適合?
2.談談redis的事務?用事務模擬原子+1操作?原子操作還有其它解決方案嗎?
3.redis內存滿了會怎麼樣?
四.安全
web安全相關
1.sql注入是怎麼產生的,如何防止?
2.xss如何預防?htmlescape後能否避免xss?
3.csrf是什麼?django是如何防範的?
密碼技術
1.什麼是分組加密?加密模式有哪些?ecb和cbc模式有什麼區別?為什麼需要iv向量?
2.簡單說說https的過程?
3.對稱加密與非對稱加密區別?
3.如何生成共享秘鑰? 如何防範中間人攻擊?
五.雜
是否關注新技術啊?golang,Rust是否了解?numpy,pandas是啥鳥?
是否緊跟時代潮流?逛不逛微博,刷不刷知乎?
可能你覺得我問的好細,但這好多都是平常經常遇到,並需要解決的,細節遲鉛更能體現一個人。
如果你覺得小kiss,歡迎投簡歷給我[email protected],龍圖游戲運營支持中心數據分析部招人;覺得有點問題,那還等什麼,趕快來和我交流交流。
更新:討論區挺熱鬧,有人說好簡單,有人說好難,其實我覺得這只適合面試2~3年工作經驗的後端工程師。真的沒有問
很難的題目,只是可能你平時沒有注意。
在這里我推薦幾本書吧
python參考手冊,絕對讓你更上一層樓
圖解密碼技術,密碼入門不二之選
mysql技術內幕第五版,有點厚當手冊讀讀,要有耐心,高性能mysql也強烈建議讀讀
effective tcp/ip programming
為什麼評論區有這么大差異?我想是個人經歷不一樣吧,如果是搞web的對操作系統這塊和密碼技術會偏弱,但如果是系統工程師或是游戲服務端這塊會明顯偏強。
六.後記
最近我也面試了不少童鞋,我發現能達到要求的真的少之又少,很多hr都說Python是最難招聘的崗位,我想是有道理的,這真的很值得我們去深思?
我想有一部分原因是Python這門語言造成的,會寫Python的人很多,但寫的好的人很少,大部分都把Python當做碼枯好腳本來寫,缺乏面向對象,模式的思想。想想Java,大家都習慣了介面,實現分離,設計模式在Java中也喊了很多年,尤其是ssh三大框架一出,用著用著就理所當然的認為就該這么做,雖然也有點壞處,但對企業級Java開發無疑是一大進步。
反觀Python,尤其是生成器,協程,元類給Python注入了很大的靈活性,想寫的Pythonic有不小難度,但其實Python高級特性就那麼幾個,幹掉了也就沒有了。
當你覺得Python遇到了瓶頸,不妨停下來好好想想。研究研究設計模式,想想重構,了解領域驅動設計,敏捷開發,再回來讀讀以前寫的代碼,當眼界變高了,代碼也就美了。
當然思想的提高不是一朝一夕,模式,原則會經常讓你糾結,糾結就會思索,思考就走出了自己的路,當然條條大路通羅馬。
資料庫等存儲技術是研發工程師邁不過的坎,對關系資料庫以mysql舉例來說,你必須清楚的知道什麼欄位選擇什麼類型,類型位元組大小,限制條件,這東西也很容易理解,多想想即可,比如set類型,要支持交並等操作,1個位元組只能存8個類別。數據類型搞定了,下面就是索引了,mysql索引種類?主鍵,唯一索引,普通索引。索引類別,BTree索引,hash索引。索引的優缺點,mysql的索引查找原理,join原理(大部分都是nested loop),以及一些特殊的情況,比如mysql子查詢慢等。其實到這里研發工程師就差不多,當然你可以繼續深入下去,比如讀寫分離,集群管理,甚至一些參數調優。

『拾』 如何面試Python後端工程師

面試題
1、Python是如何進行內存管理的?

Python的內存管理主要有三種機制:引用計數機制、垃圾回收機制和內存池機制。

a. 引用計數

當給一個對象分配一個新名稱或者將一個對象放入一個容器(列表、元組或字典)時,該對象的引用計數都會增加。

當使用del對對象顯示銷毀或者引用超出作用於或者被重新賦值時,該對象的引用計數就會減少。

可以使用sys.getrefcount()函數來獲取對象的當前引用計數。多數情況下,引用計數要比我們猜測的大的 多。對於不可變數據(數字和字元串),解釋器會在程序的不同部分共享內存,以便節約內存。

b. 垃圾回收

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


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

c. 內存池機制

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

1)Pymalloc機制。為了加速Python的執行效率,Python引入了一個內存池機制,用於管理對小塊內存的申請和釋放。

2)Python中所有小於256個位元組的對象都使用pymalloc實現的分配器,而大的對象則使用系統的 malloc。

3)對於Python對象,如整數,浮點數和List,都有其獨立的私有內存池,對象間不共享他們的內存池。也就是說如果你分配又釋放了大量的整數,用於緩存這些整數的內存就不能再分配給浮點數。
【Python環境】12道 Python面試題總結

2、什麼是lambda函數?它有什麼好處?

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

lambda函數:首要用途是指點短小的回調函數

lambda [arguments]: expression

>>> a=lambda x,y:x+y

>>> a(3,11)

3、Python裡面如何實現tuple和list的轉換?

直接使用tuple和list函數就行了,type()可以判斷對象的類型。

4、請寫出一段Python代碼實現刪除一個list裡面的重復元素。

這個地方用set可以實現。

5、Python裡面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區別)

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

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

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

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

try…except…except…[else…][finally…]

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

try下的語句正常執行,則執行else塊代碼。如果發生異常,就不會執行

如果存在finally語句,最後總是會執行。
【Python環境】12道 Python面試題總結

7、Python裡面match()和search()的區別?

re模塊中match(pattern,string [,flags]),檢查string的開頭是否與pattern匹配。

re模塊中research(pattern,string [,flags]),在string搜索pattern的第一個匹配值。

>>> print(re.match(『super』, 『superstition』).span())

(0, 5)

>>> print(re.match(『super』, 『insuperable』))

None

>>> print(re.search(『super』, 『superstition』).span())

(0, 5)

>>> print(re.search(『super』, 『insuperable』).span())

(2, 7)

8、用Python匹配HTML tag的時候,<.*>和<.*?>有什麼區別?

術語叫貪婪匹配( <.*> )和非貪婪匹配( <.*?> )

例如:

test

<.*> :

test

<.*?> :

9、以下的代碼的輸出將是什麼? 說出你的答案並解釋

輸出:

使你困惑或是驚奇的是關於最後一行的輸出是 3 2 3 而不是 3 2 1。為什麼改變了 Parent.x 的值還會改變 Child2.x 的值,但是同時 Child1.x 值卻沒有改變?


個答案的關鍵是,在 Python
中,類變數在內部是作為字典處理的。如果一個變數的名字沒有在當前類的字典中發現,將搜索祖先類(比如父類)直到被引用的變數名被找到(如果這個被引用的
變數名既沒有在自己所在的類又沒有在祖先類中找到,會引發一個 AttributeError 異常 )。

因此,在父類中設置 x = 1 會使得類變數 X 在引用該類和其任何子類中的值為 1。這就是因為第一個 print 語句的輸出是 1 1 1。

隨後,如果任何它的子類重寫了該值(例如,我們執行語句 Child1.x = 2),然後,該值僅僅在子類中被改變。這就是為什麼第二個 print 語句的輸出是 1 2 1。

最後,如果該值在父類中被改變(例如,我們執行語句 Parent.x = 3),這個改變會影響到任何未重寫該值的子類當中的值(在這個示例中被影響的子類是 Child2)。這就是為什麼第三個 print 輸出是 3 2 3。

10、以下代碼將輸出什麼?

答案

以上代碼將輸出 [],並且不會導致一個 IndexError。

正如人們所期望的,試圖訪問一個超過列表索引值的成員將導致 IndexError(比如訪問以上列表的 list[10])。盡管如此,試圖訪問一個列表的以超出列表成員數作為開始索引的切片將不會導致 IndexError,並且將僅僅返回一個空列表。
【Python環境】12道 Python面試題總結

一個討厭的小問題是它會導致出現 bug ,並且這個問題是難以追蹤的,因為它在運行時不會引發錯誤。

11、以下的代碼的輸出將是什麼? 說出你的答案並解釋?

你將如何修改 extendList 的定義來產生期望的結果

以上代碼的輸出為:

許多人會錯誤的認為 list1 應該等於 [10] 以及 list3 應該等於 ['a']。認為 list 的參數會在 extendList 每次被調用的時候會被設置成它的默認值 []。

盡管如此,實際發生的事情是,新的默認列表僅僅只在函數被定義時創建一次。隨後當 extendList 沒有被指定的列表參數調用的時候,其使用的是同一個列表。這就是為什麼當函數被定義的時候,表達式是用默認參數被計算,而不是它被調用的時候。

因此,list1 和 list3 是操作的相同的列表。而 ````list2是操作的它創建的獨立的列表(通過傳遞它自己的空列表作為list``` 參數的值)。

extendList 函數的定義可以做如下修改,但,當沒有新的 list 參數被指定的時候,會總是開始一個新列表,這更加可能是一直期望的行為。

12、以下程序輸出什麼?


吧,第一行代碼覺對是我第一次見,第一行輸出的是[[], [], [], [], []],一個含有5個空列表的列表,而第二行輸出的是[[10],
[10], [10], [10],
[10]],我只能解釋為這5個列表指向了同一個列表,所以修改任意一個其它4個都會改變,可以用list[0]=10 斷開一個連接試試。

閱讀全文

與python工程師面試經歷相關的資料

熱點內容
數控銑床編程簡單數字 瀏覽:786
編程電纜如何重啟 瀏覽:121
myqq命令行發消息 瀏覽:365
日產逍客怎麼使用app升窗 瀏覽:503
安卓系統怎麼快速刪除微信內容 瀏覽:653
csharppython 瀏覽:409
程序員脖子按摩儀 瀏覽:562
小米桌面文件夾亂碼怎麼回事 瀏覽:858
點歌台app怎麼連接 瀏覽:318
大學電腦編程學什麼好 瀏覽:348
上哪裡取消應用加密 瀏覽:172
電氣控制與可編程式控制制器pdf 瀏覽:87
cad圖紙不能跨文件夾粘貼 瀏覽:256
學生雲伺服器主機 瀏覽:889
單片機狀態周期 瀏覽:622
lua中的android 瀏覽:443
加密貴還是植發貴 瀏覽:664
陽光壓縮機繼電器 瀏覽:971
修改阿里雲伺服器密碼 瀏覽:817
lk4102加密晶元 瀏覽:588