1. 程式人生 > >面試Python工程師會問哪些問題?需要準備什麼?

面試Python工程師會問哪些問題?需要準備什麼?

面試Python工程師會問哪些問題?需要準備什麼?

 

                學習Python中有不明白推薦加入交流群
                號:516107834
                群裡有志同道合的小夥伴,互幫互助,
                群裡有不錯的學習教程!

面試Python工程師會問哪些問題?需要準備什麼?

 

隨著網際網路的發展,python語言現在變得越來越火爆,Python程式設計師越來越受到大家的青睞!那麼想進入Python行業,面試時需要注意些什麼問題呢?我們在參加Python開發崗位面試的時候都要做哪些準備?一般Python技術方面的面試會問哪些問題?

今天,我們從2位面試官的角度來看看,參加 Python 開發崗面試需要做哪些準備。

(一)

我之前在豆瓣負責過一段時間我們組的技術面試。由於現在不再去面試,可以爆一爆。

1. 我從來不問google可獲得的答案的問題, 只是問問面試者「在過去的工作中,遇到的Ta認為較有成就感的一件事情是什麼」和「如果出現了一個google不到的問題,你會怎麼解決」這樣的問題。

2. 我從來不問作業系統等和Python無關的話題,優先是我不怎麼問和工作太無關的話題,有些東西用不到很多就被會遺忘,挑起來這種問題其實挺無聊;其次我是非計算機專業畢業,問的東西說不定我自己都沒有把握,那就不出來獻醜了。我只關注面試者的學習能力和解決問題的方式,說白了,是不是就是看他是不是「聰明的人」。

3. 不問面試者的短處。我在自己被面試的時候有過這種精力,面試者問他擅長的內容,我不一定搞的定,如果反過來面試Ta,我也會滅掉Ta。所以我會盡力尋找面試者的優勢和優點,尤其是對方已經明確承認。其實很多經驗和能力,只是需要一個機會和環境,所以我不想放過任何一個合適的人。

4. 面試者不會Python也沒有關係。面試者的主動性和學習能力覺得更重要,如果他在其他領域能證明做的不錯或者能讓我感覺到這個一個未來有潛質成為優秀工程師的人,不會Python沒有關係。 嗯目前看來,我沒有看錯過。

5. 我從來不問Python語法這種看書和google就能學會的問題,我只想了解Ta是否願意去學。舉個例子,我會讓面試者「講講日常開發中都用到了那些Python內建的模組」,基本上說完我就能評估出他的能力和風格,繼而就是再問一些問題去驗證我的評估是不是準確。

6. 較後,我一般都會和麵試者細聊一個Ta認為在過去的工作或者自己開源的專案中較熟悉的一個,從專案設計、踩過的坑兒、開發週期以及如何安排、如何確定需求、如何和其他人協作等方面,較後評估下Ta是否能很容易的融入到我們現在的團隊,大家是否可以接受Ta,對工作不負責的、沒有用心工作的、沒有團隊意識的、溝通能力有缺陷的就放棄掉,對性格上容易發生衝突的、不適合團隊合作的我就得考慮下,未來也會如實反饋給HR。

(二)

吃午飯的時候我就一直在想這個問題,我覺得重點不是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.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是啥鳥?

是否緊跟時代潮流?逛不逛微博,刷不刷知乎?

可能你覺得我問的好細,但這好多都是平常經常遇到,並需要解決的,細節更能體現一個人。

有人說好簡單,有人說好難,其實我覺得這隻適合面試2~3年工作經驗的後端工程師。真的沒有問很難的題目,只是可能你平時沒有注意。

在這裡我推薦幾本書吧

《python參考手冊》,絕對讓你更上一層樓

《圖解密碼技術》,密碼入門不二之選

《mysql技術內幕第五版》,有點厚當手冊讀讀,要有耐心

為什麼大家的意見有這麼大差異?我想是個人經歷不一樣吧,如果是搞web的對作業系統這塊和密碼技術會偏弱,但如果是系統工程師或是遊戲服務端這塊會明顯偏強。