Python面試中可能會問到的大部分問題
面試的幾家:北京的兩家創(chuàng)業(yè)公司,規(guī)模均在40-50人之間;果殼(止步于電話面,拉鉤投的);知乎(止步于電話面,論壇發(fā)帖后的內(nèi)推);愛奇藝(拉鉤上投的);杭州的網(wǎng)易(同學(xué)內(nèi)推)。
面試這一輪下來,最大的感受就一個:平時一定要堅持每天都碼點(diǎn)代碼。就算再爛的項(xiàng)目,也要堅持上傳github……真的,只要你能堅持一周有5天以上都能持續(xù)上傳Git,半年下來,面試官絕對對你刮目相看。
我就是因?yàn)槠綍r只關(guān)注做自己的小博客系統(tǒng),而沒做其他的部分,導(dǎo)致愛奇藝倒在了手寫代碼上面……哎,憂傷……平時多刷刷leetcode,看看劍指offer/面試金典,都是套路啊~~
面試這幾家公司所遇到的面試/筆試題,目前還能記住的如下。雖然可能絕大部分都是基礎(chǔ),但希望大家不要只是看看就過去了,最好還是假裝你被問到這個問題,你來把答案說出來或?qū)懗鰜恚海ú话垂痉至耍?br style="max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;">
Python語法以及其他基礎(chǔ)部分
1.可變與不可變類型;?
2.淺拷貝與深拷貝的實(shí)現(xiàn)方式、區(qū)別;deepcopy如果你來設(shè)計,如何實(shí)現(xiàn);?
3.__new__() 與 __init__()的區(qū)別;?
4.你知道幾種設(shè)計模式;?
5.編碼和解碼你了解過么;?
6.列表推導(dǎo)list comprehension和生成器的優(yōu)劣;?
7.什么是裝飾器;如果想在函數(shù)之后進(jìn)行裝飾,應(yīng)該怎么做;?
8.手寫個使用裝飾器實(shí)現(xiàn)的單例模式;?
9.使用裝飾器的單例和使用其他方法的單例,在后續(xù)使用中,有何區(qū)別;?
10.手寫:正則郵箱地址;?
11.介紹下垃圾回收:引用計數(shù)/分代回收/孤立引用環(huán);?
12.多進(jìn)程與多線程的區(qū)別;CPU密集型適合用什么;?
13.進(jìn)程通信的方式有幾種;?
14.介紹下協(xié)程,為何比線程還快;?
15.range和xrange的區(qū)別(他妹的我學(xué)的py3…);?
16.由于我有C/C++背景,因此要求用C來手寫:將IP地址字符串(比如“172.0.0.1”)轉(zhuǎn)為32位二進(jìn)制數(shù)的函數(shù)。
算法排序部分
1.手寫快排;堆排;幾種常用排序的算法復(fù)雜度是多少;快排平均復(fù)雜度多少,最壞情況如何優(yōu)化;?
2.手寫:已知一個長度n的無序列表,元素均是數(shù)字,要求把所有間隔為d的組合找出來,你寫的解法算法復(fù)雜度多少;?
3.手寫:一個列表A=[A1,A2,…,An],要求把列表中所有的組合情況打印出來;?
4.手寫:用一行python寫出1+2+3+…+10**8 ;?
5.手寫python:用遞歸的方式判斷字符串是否為回文;?
6.單向鏈表長度未知,如何判斷其中是否有環(huán);?
7.單向鏈表如何使用快速排序算法進(jìn)行排序;?
8.手寫:一個長度n的無序數(shù)字元素列表,如何求中位數(shù),如何盡快的估算中位數(shù),你的算法復(fù)雜度是多少;?
9.如何遍歷一個內(nèi)部未知的文件夾(兩種樹的優(yōu)先遍歷方式)
網(wǎng)絡(luò)基礎(chǔ)部分
1.TCP/IP分別在模型的哪一層;?
2.socket長連接是什么意思;?
3.select和epoll你了解么,區(qū)別在哪;?
4.TCP UDP區(qū)別;三次握手四次揮手講一下;?
5.TIME_WAIT過多是因?yàn)槭裁矗?
6.http一次連接的全過程:你來說下從用戶發(fā)起request——到用戶接收到response;?
7.http連接方式。get和post的區(qū)別,你還了解其他的方式么;?
8.restful你知道么;?
9.狀態(tài)碼你知道多少,比如200/403/404/504等等;
數(shù)據(jù)庫部分
1.MySQL鎖有幾種;死鎖是怎么產(chǎn)生的;?
2.為何,以及如何分區(qū)、分表;?
3.MySQL的char varchar text的區(qū)別;?
4.了解join么,有幾種,有何區(qū)別,A LEFT JOIN B,查詢的結(jié)果中,B沒有的那部分是如何顯示的(NULL);?
5.索引類型有幾種,BTree索引和hash索引的區(qū)別(我沒答上來這倆在磁盤結(jié)構(gòu)上的區(qū)別);?
6.手寫:如何對查詢命令進(jìn)行優(yōu)化;?
7.NoSQL了解么,和關(guān)系數(shù)據(jù)庫的區(qū)別;redis有幾種常用存儲類型;
Linux部分
1.講一下你常用的Linux/git命令和作用;?
2.查看當(dāng)前進(jìn)程是用什么命令,除了文件相關(guān)的操作外,你平時還有什么操作命令;?
(因?yàn)槲冶救薒inux本身就很水,只會基本的操作,所以這部分面試官也基本沒怎么問。。反正問了就大眼瞪小眼唄)
django項(xiàng)目部分
1.都是讓簡單的介紹下你在公司的項(xiàng)目,不管是不是后端相關(guān)的,主要是要體現(xiàn)出你干了什么;?
2.你在項(xiàng)目中遇到最難的部分是什么,你是怎么解決的;?
3.你看過django的admin源碼么;看過flask的源碼么;你如何理解開源;?
4.MVC / MTV;?
5.緩存怎么用;?
6.中間件是干嘛的;?
7.CSRF是什么,django是如何避免的;XSS呢;?
8.如果你來設(shè)計login,簡單的說一下思路;?
9.session和cookie的聯(lián)系與區(qū)別;session為什么說是安全的;?
10.uWSGI和Nginx的作用;?
(我發(fā)現(xiàn)基本不問django實(shí)現(xiàn)細(xì)節(jié)相關(guān)的東西。?;蛘邌栆矄柕暮苌?,哎,之前準(zhǔn)備的方向完全錯了)
作者:Summer憶
來源:https://blog.csdn.net/yunfupei0434/article/details/79322425

