1,我的狀況 先介紹下個人狀況:通訊背景,工做一年多不到兩年。以前一直在作C++的MFC軟件界面開發工做,公司爲某不景氣的國企研究所(喏,個人工做經驗很水:1是方向不對;2是行業有誤差)。 目前是在尋找python後端開發這一塊的工做,使用的框架爲django;以前一直經過CSDN以及其餘幾家技術博客/論壇吸取你們的經驗,在感激之餘,也想輸出點什麼,造福你們,所以就有了這篇水文,但願你們可以多多吸收個人經驗教訓,早日找到一份本身滿意的工做! 2,面試狀況 北京的兩家創業公司,規模均在40-50人之間;果殼(止步於電話面,拉鉤投的);知乎(止步於電話面,論壇發帖後的內推);愛奇藝(拉鉤上投的);杭州的網易(同窗內推)。 面試這一輪下來,最大的感覺就一個:平時必定要堅持天天都碼點代碼。就算再爛的項目,也要堅持上傳github。。真的,只要你能堅持一週有5天以上都能持續上傳Git,半年下來,面試官絕對對你另眼相看。 其餘感覺:不一樣的公司着重點都不同,不過真的就如這篇博文的博主所說,木桶原理,哪塊都不能少。我就是由於平時只關注作本身的小博客系統,而沒作其餘的部分,致使愛奇藝倒在了手寫代碼上面…哎,憂傷。。平時多刷刷leetcode,看看劍指offer/面試金典,都是套路啊~~ 面試這幾家公司所遇到的面試/筆試題,目前還能記住的以下。雖然可能絕大部分都是基礎,但但願你們不要只是看看就過去了,最好仍是僞裝你被問到這個問題,你來把答案說出來或寫出來:(不按公司分了) 3,python語法以及其餘基礎部分 1).可變與不可變類型 2).淺拷貝與深拷貝的實現方式、區別;deepcopy若是你來設計,如何實現 new() 與 init()的區別 3).你知道幾種設計模式 4).編碼和解碼你瞭解過麼 5).列表推導list comprehension和生成器的優劣 6).什麼是裝飾器;若是想在函數以後進行裝飾,應該怎麼作 7).手寫個使用裝飾器實現的單例模式 8).使用裝飾器的單例和使用其餘方法的單例,在後續使用中,有何區別 9).手寫:正則郵箱地址 10).介紹下垃圾回收:引用計數/分代回收/孤立引用環 11).多進程與多線程的區別,CPU密集型適合用什麼 12).進程通訊的方式有幾種 13).介紹下協程,爲什麼比線程還快 14).range和xrange的區別 4,算法排序部分 1).手寫快排;堆排;幾種經常使用排序的算法複雜度是多少;快排平均複雜度多少,最壞狀況如何優化 2).手寫:已知一個長度n的無序列表,元素均是數字,要求把全部間隔爲d的組合找出來,你寫的解法算法複雜度多少 3).手寫:一個列表A=[A1,A2,…,An],要求把列表中全部的組合狀況打印出來; 4).手寫:用一行python寫出1+2+3+…+10**8 5).手寫python:用遞歸的方式判斷字符串是否爲迴文 6).單向鏈表長度未知,如何判斷其中是否有環 7).單向鏈表如何使用快速排序算法進行排序 8).手寫:一個長度n的無序數字元素列表,如何求中位數,如何儘快的估算中位數,9).你的算法複雜度是多少; 10).如何遍歷一個內部未知的文件夾(兩種樹的優先遍歷方式) 5,網絡基礎部分 1).TCP/IP分別在模型的哪一層 2).socket長鏈接是什麼意思 3).select和epoll你瞭解麼,區別在哪 4).TCP UDP區別;三次握手四次揮手講一下 5).TIME_WAIT過可能是由於什麼 6).http一次鏈接的全過程:你來講下從用戶發起request——到用戶接收到response 7).http鏈接方式。get和post的區別,你還了解其餘的方式麼 8).restful你知道麼 9).狀態碼你知道多少,好比200/403/404/504等等 6,數據庫部分 1).MySQL鎖有幾種;死鎖是怎麼產生的; 爲什麼,以及如何分區、分表; 2).MySQL的char varchar text的區別: 瞭解join麼,有幾種有何區別,A LEFT JOIN B,查詢的結果中,B沒有的那部分是如何顯示的(NULL) 3).索引類型有幾種,BTree索引和hash索引的區別(我沒答上來這倆在磁盤結構上的區別) 4).手寫:如何對查詢命令進行優化 5).NoSQL瞭解麼,和關係數據庫的區別,redis有幾種經常使用存儲類型 7,Linux部分 講一下你經常使用的Linux/git命令和做用;python
查看當前進程是用什麼命令,除了文件相關的操做外,你平時還有什麼操做命令; (由於我本人Linux自己就很水,只會基本的操做,因此這部分面試官也基本沒怎麼問。。反正問了就大眼瞪小眼唄) 8,Django項目部分 都是讓簡單的介紹下你在公司的項目,不論是不是後端相關的,主要是要體現出你幹了什麼 1).你在項目中遇到最難的部分是什麼,你是怎麼解決的; 你看過django的admin源碼麼 2).看過flask的源碼麼,你如何理解開源 3).MVC / MTV, 緩存怎麼用, 中間件是幹嗎的 4).CSRF是什麼,django是如何避免的,XSS 5).若是你來設計login,簡單的說一下思路 6).session和cookie的聯繫與區別,session爲何說是安全的 7).uWSGI和Nginx的做用;git