python面試題測試
1. python後端工程師面試題目有哪些
一.語言
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是啥鳥?
是否緊跟時代潮流?逛不逛微博,刷不刷知乎?
可能你覺得我問的好細,但這好多都是平常經常遇到,並需要解決的,細節更能體現一個人。
如果你覺得小kiss,歡迎投簡歷給我[email protected],龍圖游戲運營支持中心數據分析部招人;覺得有點問題,那還等什麼,趕快來和我交流交流。
更新:討論區挺熱鬧,有人說好簡單,有人說好難,其實我覺得這只適合面試2~3年工作經驗的後端工程師。真的沒有問
很難的題目,只是可能你平時沒有注意。
在這里我推薦幾本書吧
python參考手冊,絕對讓你更上一層樓
圖解密碼技術,密碼入門不二之選
mysql技術內幕第五版,有點厚當手冊讀讀,要有耐心,高性能mysql也強烈建議讀讀
effective tcp/ip programming
為什麼評論區有這么大差異?我想是個人經歷不一樣吧,如果是搞web的對操作系統這塊和密碼技術會偏弱,但如果是系統工程師或是游戲服務端這塊會明顯偏強。
六.後記
最近我也面試了不少童鞋,我發現能達到要求的真的少之又少,很多hr都說Python是最難招聘的崗位,我想是有道理的,這真的很值得我們去深思?
我想有一部分原因是Python這門語言造成的,會寫Python的人很多,但寫的好的人很少,大部分都把Python當做腳本來寫,缺乏面向對 象,模式的思想。想想java,大家都習慣了介面,實現分離,設計模式在Java中也喊了很多年,尤其是ssh三大框架一出,用著用著就理所當然的認為就 該這么做,雖然也有點壞處,但對企業級Java開發無疑是一大進步。
反觀Python,尤其是生成器,協程,元類給Python注入了很大的靈活性,想寫的Pythonic有不小難度,但其實Python高級特性就那麼幾個,幹掉了也就沒有了。
當你覺得Python遇到了瓶頸,不妨停下來好好想想。研究研究設計模式,想想重構,了解領域驅動設計,敏捷開發,再回來讀讀以前寫的代碼,當眼界變高了,代碼也就美了。
當然思想的提高不是一朝一夕,模式,原則會經常讓你糾結,糾結就會思索,思考就走出了自己的路,當然條條大路通羅馬。
資料庫等存儲技術是研發工程師邁不過的坎,對關系資料庫以mysql舉例來說,你必須清楚的知道什麼欄位選擇什麼類型,類型位元組大小,限制條件,這 東西也很容易理解,多想想即可,比如set類型,要支持交並等操作,1個位元組只能存8個類別。數據類型搞定了,下面就是索引了,mysql索引種類?主 鍵,唯一索引,普通索引。索引類別,BTree索引,hash索引。索引的優缺點,mysql的索引查找原理,join原理(大部分都是nested loop),以及一些特殊的情況,比如mysql子查詢慢等。其實到這里研發工程師就差不多,當然你可以繼續深入下去,比如讀寫分離,集群管理,甚至一些 參數調優。
2. 軟體測試Pytest面試題(附答案)
對於軟體測試工程師的求職者,了解Pytest面試題是非常重要的。在這里,我們將提供一些關鍵知識點,幫助你准備面試。首先,讓我們來看看關於pytest環境安裝的常見問題。
在眾多的pytest安裝方法中,選擇正確的那一個至關重要。正確的安裝步驟包括:
- 確保你的Python環境已經配置好,可以通過命令行輸入`python --version`檢查版本。
- 使用pip進行安裝,命令為`pip install pytest`,這將全局安裝pytest及其插件。
- 如果你需要在特定項目中使用,可以在項目目錄下執行`pip install pytest --user`,這樣pytest只會安裝在你的用戶目錄,不會影響全局環境。
准備這些基礎內容,將有助於你在面試中展現出扎實的技能和對工具的理解。此外,一份全面的軟體測試資料庫也能為你的求職之路提供強有力的支持。如果你正在尋找資源,可以考慮獲取業界推薦的200G軟體測試資料包,它包含了大量的實戰案例和理論知識。
最後,別忘了關注內推機會,一線名企大廠的測試崗位通常對專業技能和實踐經驗有著高要求,抓住內推通道,能大大提高你的就業成功率。祝你面試順利,早日找到理想的測試崗位。
3. 面試題:你為什麼選擇python
為什麼Python比MATLAB、R語言好呢?
其實,這三種語言都很多數據分析師在用,但更推薦python,主要是有以下幾點:
1、python易學、易讀、易維護,處理速度也比R語言要快,無需把資料庫切割;
2、python勢頭猛,眾多大公司需要,市場前景廣闊;而MATLAB語言比較局限,專注於工程和科學計算方面,而且MATLAB價格貴,免費版或盜版都只能玩玩學慣用;
3、python具有豐富的擴展庫,這個是其他兩個不能比的;
python版本選擇
初學者版本選擇是很多人都會問的,我們也不會偏向某個版本,主要根據自己的所需,但建議是選擇最新版本Python3.x,這樣很多新功能和舊功能都會有的,但是目前很多第三方庫仍然不支持Python3,因為Python2.x已經停止繼續開發,不意味著不能使用。
4. python面試必備題目有哪些
Q:你做一個自我介紹吧?
旁白:其實遇到好幾家面試官都讓我做自我介紹了,該如何自我介紹陽哥估計都會背了,好玩(惡心)的是在萬達信息面試,面試了3個技術官,每個人都分別讓我做了自我介紹,尼瑪,他們3個就不會溝通一下要問我啥嗎,一個問題至於問我3遍嗎~:funk:陽哥是敢怒不敢言,畢竟在人家的地盤。
PS:自我介紹的內容就不說了,每個人都是獨特的,我就跟大家說一下應該如何自我介紹吧。
一個優良的自我介紹會給面試官留下深刻的印象,大部分情況下,所謂的面試好壞其實看的就是你給面試官留下的印象怎麼樣了,我們用俗語叫感覺。
自我介紹應該分以下幾個部分,按照一定的邏輯連貫起來。如果連貫不起來,或者不夠熟練一定在台下多背幾遍,多講幾遍,但是面試的時候不要說的跟背過似的,高境界就是讓面試官感覺你是臨場發揮的,卻又比背的都好。
1)個人基本信息(姓名、年齡、老家、居住地等)
2)自己來自哪裡(工作地點),是干什麼的(給自己一個清晰的定位,比如:我是一名Android開發工程師),擔任過什麼職務、做過什麼樣的項目
3)自己為何來貴公司面試
4)最後祝願(希望能得到貴公司的認可等等,不用太多,一兩句話就ok)
Q:介紹一下你做過的項目吧?
PS:黑馬那麼多項目,隨便准備3個就ok了。
介紹項目大概的思路如下:
1)這個項目是干什麼的(比如是一個類似網易新聞的地方新聞客戶端,或者類似美團的o2o,或者類似豌豆莢的一個應用市場,或者類似淘寶的購物平台)?解釋就是拿一個市場上耳熟能詳的應用跟自己的應用做類比,省的面試官聽的雲里霧里的。
2)自己負責了哪些模塊(功能)的職責(比如負責系統的架構,核心代碼的編寫,xx功能模塊的開發等等)
3)自己在這個項目中擔當的責任(比如,這個項目是自己獨立開發的,這個項目是和另外一個同事一起架構一起開發的,這個項目是自己負責了幾個核心模塊)
4)項目中都用到了哪些技術
5)從項目中學到了哪些東西(可以從技術方向和業務兩個方向入手)
旁白:面試官問的很多技術性問題跟之前問的都大同小異,因此這里只給出有特色且技術含量高的。陽哥正在寫面試寶典,該寶典核心內容針對的還是技術問題,陽哥會從javase基礎到javase高級,從Android基礎到Android高級以及到Android項目依次展開分析,其次也會寫一些常見的非技術性問題,敬請期待~
Q:①在Listview的優化中,我們為何使用ConvertView?②為何使用ViewHolder?③你認為哪個更能解決問題?④你認為view.inflate和view.findviewById哪個更耗時,為什麼?⑤如果這兩個AP讓你重新寫,你怎麼寫?
PS:上面的問題,陽哥認為是面試以來遇到很難的一個,也是很有技術含量的一道題。前一半問題還好回答,最後一個問題真的需要發揮想像了。
A:①使用ConvertView可以實現對view的復用,這樣大大節約了每次創建對象的時間,提升了ListView的顯示效率。②使用ViewHolder作為內部類,可以將view的子控制項封裝在ViewHolder類中,然後通過View.setTag(ViewHolder)將view和ViewHolder進行綁定,這樣我們就不用每次都調用view的findViewById(id)方法來查找控制項。③使用ConvertView解決了一大部分問題,使用ViewHolder實現了控制項換時間的問題,因為給View對象設置一個Tag本身就是佔用內存的,因此ViewHolder的使用還是需要區分不同的應用場景的, 沒有絕對的好與不好。如果內存足夠需要高效則ViewHolder建議使用,否則不建議使用。④當然是view.inflate耗時,這個函數完成的功能是把xml布局文件通過pullParser的形式給解析到內存中,需要io,需要遞歸子節點。⑤我其實還不太相信我寫出來的代碼比Google官方寫的好,如果讓我寫的話我可能會這樣考慮,當用戶在使用view.inflate的時候將多個id作為數組添加到形參中,這樣在初始化view的使用我就可以給這個view直接調用setTag方法綁定需要的子控制項。不過這個原生方法其實也應該保留共不同的需求使用。
PS:技術面試時間並不長,我回答了幾個之後,他們兩個大眼瞪小眼,A看看B問:你還有什麼問的嗎?B說我沒有,你還有嗎?A說我也沒了。那行,接下來,他們就讓我等人事了。
5. 介面自動化測試面試題大全(合適各級軟體測試人員),建議收藏
這篇文章由白楠楠整理,內容豐富實用,對測試人員頗具參考價值。本文僅為分享。
由於篇幅原因,未在文中詳述的Python自動化測試面試問題,已整理成文檔,可在作者的公眾號獲取,搜索關鍵字「【Python自動化測試面試題,暗號知乎】」獲取更多信息。
章節一:get與post的區別
HTTP協議規定了客戶端與伺服器的交互方式。get在url中附參數,post則通過請求體發送,get通常用於獲取資源,而post發送數據。
get和post在數據傳輸和響應機制上有所不同,get請求可能產生額外的tcp數據包,安全性上post優於get,避免參數暴露。
章節二:HTTP狀態碼解析
302代表臨時重定向,403表示許可權不足,503表明服務不可用,500則表示伺服器內部錯誤。狀態碼根據不同范圍,反映了請求的不同狀態和處理結果。
章節三:自動化測試結果驗證
通過斷言對比預期與實際結果,資料庫校驗也是一項重要手段,對比測試前後數據狀態。
章節四:post請求參數形式
post請求支持多種參數格式,包括url編碼、文件上傳、json數據和xml等。
章節五:介面自動化測試流程
從需求分析到測試執行,涉及用例設計、腳本編寫、結果分析等步驟。
章節六:常用介面測試工具
Postman、JMeter和SoapUI是常用的介面測試工具。
章節七:HTTP介面參數類型
包括查詢字元串參數和請求體參數,根據介面需求選擇合適的參數傳遞方式。
章節八:介面數據傳遞
通過解析上一介面的響應數據,存儲並傳遞到下一介面,實現數據鏈路的連續性。
章節九:測試用例編寫要點
涵蓋必填項、合法性、邊界值、容錯、響應數據和邏輯校驗,以及性能和安全性的測試考慮。
章節十:登錄狀態介面測試
測試需確保每次請求都帶有有效的Session或Cookie信息,模擬登錄狀態。
章節十一:依賴第三方數據介面
通過MOCK工具模擬第三方數據,降低對外部介面的依賴,便於獨立測試。
6. python web框架django面試題收藏
在深入探索Django框架及其在Web開發中的應用之前,了解Django的常見面試題是必要的。以下問題涵蓋了從基礎概念到實際應用的各個方面,幫助你准備Django的面試。
1. 對Django的認識?
2. Django、Flask、Tornado之間的對比。
3. wsgi、uwsgi、uWSGI的解釋。
4. Django請求生命周期的概述。
5. FBV與CBV簡述。
6. 添加裝飾器給CBV程序的方法。
7. MVC與MTV的區別。
8. Django路由系統中name的作用。
9. 列出Django的內置組件。
10. Django MIDDLEWARES中間件的作用與應用場景。
11. 列舉Django中間件的五個方法。
12. Django請求對象的創建時間。
13. Django重定向的實現及使用的狀態碼。
14. XSS攻擊的簡介。
15. Django中CSRF的實現機制。
16. 使用AJAX發送POST請求時,攜帶CSRF token的常用方法。
17. Django runserver與uWSGI的區別。
18. Cookie與Session的區別。
19. Django ORM中QuerySet對象的所有方法。
20. only與defer的區別。
21. select_related與prefetch_related的區別。
22. filter與exclude的區別。
23. F與Q的作用。
24. values與values_list的區別。
25. 使用ORM批量創建數據的途徑。
26. Django中的Form與ModelForm的作用。
27. 實現數據源實時更新的兩種方式。
28. ForeignKey欄位中on_delete參數的解釋。
29. 列出三種能寫SQL語句的ORM方法。
30. 如何設置Django ORM的讀寫分離。
31. 實現ORM表中添加數據時創建日誌記錄的方法。
32. Django內置的緩存機制。
33. 配置Django使用Redis作為緩存。
34. 模板中filter與simple_tag的區別。
35. Django Debug Toolbar的功能。
36. 實現Django單元測試的步驟。
37. ORM中db first與code first的含義。
38. 根據資料庫表生成model中的類。
39. ORM與原生SQL的優缺點。
40. Django contenttype組件的作用。
41. 對RESTful規范的理解。
42. 介面的冪等性概念。
43. RPC(遠程過程調用)的介紹。
44. 使用API的原因。
45. 為何選擇Django REST Framework框架。
46. Django REST Framework框架中的組件。
47. 視圖可以繼承的REST Framework類。
48. REST Framework框架的認證流程概覽。
49. 實現用戶訪問頻率控制的方法。
50. 序列化組件的作用及外鍵關系的鉤子方法。
51. 提供介面前的准備工作。
52. PV與UV的定義。
53. 跨域的解釋與解決策略。
54. 實現用戶登錄認證的步驟。
55. 將字典轉換為URL格式的方法。
以上內容涵蓋了Django的多個核心概念和功能,希望對你在學習和面試過程中有所幫助。