1. 程式人生 > >珍藏版 Python 開發工程師面試試題

珍藏版 Python 開發工程師面試試題

epc lis 你是 lin 是否 顯示 後端 tex 要求

珍藏版 Python 開發工程師面試試題 說明:不拿到幾家公司的offer,那就是卑鄙的浪費

一.Python_基礎語法

1.可變與不可變類型;
2.淺拷貝與深拷貝的實現方式、區別;deepcopy如果你來設計,如何實現;
3.__new__() 與 __init__()的區別;
4.你知道幾種設計模式;
5.編碼和解碼你了解過麽;
6.列表推導list comprehension和生成器的優劣;
7.什麽是裝飾器;如果想在函數之後進行裝飾,應該怎麽做;
8.手寫個使用裝飾器實現的單例模式;
9.使用裝飾器的單例和使用其他方法的單例,在後續使用中,有何區別;
10.手寫:正則郵箱地址;
11.介紹下垃圾回收:引用計數/分代回收/孤立引用環;
12.多進程與多線程的區別;CPU密集型適合用什麽;
13.進程通信的方式有幾種;
14.介紹下協程,為何比線程還快;
15.range和xrange的區別(他妹的我學的py3…);
16.由於我有C/C++背景,因此要求用C來手寫:將IP地址字符串(比如“172.0.0.1”)轉為32位二進制數的函數。

二.Python_算法

1.手寫快排;堆排;幾種常用排序的算法復雜度是多少;快排平均復雜度多少,最壞情況如何優化;
2.手寫:已知一個長度n的無序列表,元素均是數字,要求把所有間隔為d的組合找出來,你寫的解法算法復雜度多少;
3.手寫:一個列表A=[A1,A2,…,An],要求把列表中所有的組合情況打印出來;
4.手寫:用一行python寫出1+2+3+…+10**8 ;
5.手寫python:用遞歸的方式判斷字符串是否為回文;
6.單向鏈表長度未知,如何判斷其中是否有環;
7.單向鏈表如何使用快速排序算法進行排序;
8.手寫:一個長度n的無序數字元素列表,如何求中位數,如何盡快的估算中位數,你的算法復雜度是多少;
9.如何遍歷一個內部未知的文件夾(兩種樹的優先遍歷方式)

三.Python_網絡基礎

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等等;

四.Python_數據庫

1.MySQL鎖有幾種;死鎖是怎麽產生的;
2.為何,以及如何分區、分表;
3.MySQL的char varchar text的區別;
4.了解join麽,有幾種,有何區別,A LEFT JOIN B,查詢的結果中,B沒有的那部分是如何顯示的(NULL);
5.索引類型有幾種,BTree索引和hash索引的區別(我沒答上來這倆在磁盤結構上的區別);
6.手寫:如何對查詢命令進行優化;
7.NoSQL了解麽,和關系數據庫的區別;redis有幾種常用存儲類型;

五.Python_系統部分

1.講一下你常用的Linux/git命令和作用;
2.查看當前進程是用什麽命令,除了文件相關的操作外,你平時還有什麽操作命令;

六.Python_django

1.都是讓簡單的介紹下你在公司的項目,不管是不是後端相關的,主要是要體現出你幹了什麽;
2.你在項目中遇到最難的部分是什麽,你是怎麽解決的;
3.你看過django的admin源碼麽;看過flask的源碼麽;你如何理解開源;
4.MVC / MTV;
5.緩存怎麽用;
6.中間件是幹嘛的;
7.CSRF是什麽,django是如何避免的;XSS呢;
8.如果你來設計login,簡單的說一下思路;
9.session和cookie的聯系與區別;session為什麽說是安全的;
10.uWSGI和Nginx的作用;

七.Python_AI

略。。。。。

珍藏版 Python 開發工程師面試試題