先說簡單的:
1.是否了解互聯網協議七層模型
2.簡單說一下TCP協議
3.你寫的項目里用戶數據安全如何保證?(比如用戶密碼加密處理一下)
開放式問題,回答起來比較困難(套路)的:
1.對Django的掌握程度如何
2.對python掌握程度如何
3.對python有過系統的學習嗎
主要就是這幾個 還有一些我覺得可能會問到的,比如:
1.談談你對python這門語言的理解
2.django的優缺點
1 什么是Python?使用Python有什么好處?
Python是一種編程語言,它有對象、模塊、線程、異常處理和自動內存管理。
它簡潔、簡單、方便、容易擴展,有許多自帶的數據結構,而且它開源。
2 .Python是怎樣管理內存的?
Python的內存管理是由私有heap空間管理的。所有的Python對象和數據結構都在一個私有heap中。程序員沒有訪問該heap的權限,只有解釋器才能對它進行操作。為Python的heap空間分配內存是由Python的內存管理模塊進行的,其核心API會提供一些訪問該模塊的方法供程序員使用。Python有自帶的垃圾回收系統,它回收並釋放沒有被使用的內存,讓它們能夠被其他程序使用。在面試中都有可能回被問到的問題。下面分享面試的感受。
Python語法以及其他基礎部分
可變與不可變類型;
淺拷貝與深拷貝的實現方式、區別;deepcopy如果你來設計,如何實現;
__new__ 與 __init__的區別;
你知道幾種設計模式;
編碼和解碼你了解過么;
列表推導list comprehension和生成器的優劣;
什么是裝飾器;如果想在函數之后進行裝飾,應該怎么做;
手寫個使用裝飾器實現的單例模式;
使用裝飾器的單例和使用其他方法的單例,在后續使用中,有何區別;
問題一:以下的代碼的輸出將是什么?
介紹下垃圾回收:引用計數/分代回收/孤立引用環;
多進程與多線程的區別;CPU密集型適合用什么;
進程通信的方式有幾種;
介紹下協程,為何比線程還快;
range和xrange的區別(他妹的我學的py3…);
由於我有C/C++背景,因此要求用C來手寫:將IP地址字符串(比如“172.0.0.1”)轉為32位二進制數的函數。
算法排序部分
手寫快排;堆排;幾種常用排序的算法復雜度是多少;快排平均復雜度多少,最壞情況如何優化;
手寫:已知一個長度n的無序列表,元素均是數字,要求把所有間隔為d的組合找出來,你寫的解法算法復雜度多少;
手寫:一個列表A=[A1,A2,…,An],要求把列表中所有的組合情況打印出來;
問題二:以下的代碼的輸出將是什么?
手寫:用一行python寫出1+2+3+…+10**8 ;
手寫python:用遞歸的方式判斷字符串是否為回文;
單向鏈表長度未知,如何判斷其中是否有環;
單向鏈表如何使用快速排序算法進行排序;
手寫:一個長度n的無序數字元素列表,如何求中位數,如何盡快的估算中位數,你的算法復雜度是多少;
如何遍歷一個內部未知的文件夾(兩種樹的優先遍歷方式)
網絡基礎部分
TCP/IP分別在模型的哪一層;
socket長連接是什么意思;
TCP UDP區別;三次握手四次揮手講一下;
TIME_WAIT過多是因為什么;
http一次連接的全過程:你來說下從用戶發起request——到用戶接收到response;
http連接方式。get和post的區別,你還了解其他的方式么;
restful你知道么;
數據庫部分
MySQL鎖有幾種;死鎖是怎么產生的;
MySQL的char varchar text的區別;
了解join么,有幾種,有何區別,A LEFT JOIN B,查詢的結果中,B沒有的那部分是如何顯示的(NULL);
索引類型有幾種,BTree索引和hash索引的區別(我沒答上來這倆在磁盤結構上的區別);
手寫:如何對查詢命令進行優化;
NoSQL了解么,和關系數據庫的區別;redis有幾種常用存儲類型;
Linux部分
講一下你常用的Linux/git命令和作用;
查看當前進程是用什么命令,除了文件相關的操作外,你平時還有什么操作命令;
django項目部分
都是讓簡單的介紹下你在公司的項目,不管是不是后端相關的,主要是要體現出你干了什么;
你在項目中遇到最難的部分是什么,你是怎么解決的;
你看過django的admin源碼么;看過flask的源碼么;你如何理解開源;
面試中大部分都是問一下細節基礎的知識點,只要我門平時多敲代碼,多練習,面試基本是沒有問題的。好了,今天就分享到這里,有想學習Python編程的伙伴們,歡迎留言和小編交流學習,最后祝大家早日成為Python大牛!