面试中遇到这 3 个SQL问题,最容易掉坑里!
作者 | Nathan R
譯者 | 天道酬勤,責編 | Carol
封圖 | CSDN下載自視覺中國
? ? ? ?
在本文中,作者將介紹來自3個在技術面試中的真實的SQL問題,這些問題都是在實際公司進行技術篩選時提出的。
?
最常見的讀者問題:我應該如何準備SQL面試?
準備 SQL 面試時,我會認真地做盡可能多的事情,這樣以來,寫查詢就變成了我的第二天性。我希望技術部分成為面試過程中比較容易的部分,這樣我就可以集中精力與面試官進行交流,并將我的精力花在用白板書寫我的方法和解決方案上。?
根據我在技術面試中的經驗,面試官測試的最大重點是理解代碼的在做什么,如何考慮各種場景或邊緣情況以及結果的含義。
與你在工作中編寫的冗長而復雜的查詢相比,SQL部分非常簡單。要么為你提供1個或2個表,并要求你創建一個需要進行聯接或自聯接的SQL查詢,要么為你提供了SQL代碼,并要求對其進行調試。
只要你了解JOINS和COALESCE之類的高級功能,就不會有問題。使面試變得困難的是,如何將代碼編寫與運行代碼后得到的結果聯系起來。
以下是在技術面試中被問到的3個真實的SQL問題
?
1、假設給你一個表,其中包含用戶的好友請求、接受和他們的日期。如何編寫一個查詢,以便隨著時間的推移可以獲得%的好友接受率?
這個查詢很容易創建(提示:使用自連接),但是你還需要在如何編寫查詢的權衡上進行額外的測試。你如何處理幾天后發生朋友的接受?你哪一天算驗收日期?你是在好友發送請求之日算起,還是在接受請求之日算起?為什么?
這當中沒有正確或錯誤的答案,但是你需要確定有兩種不同的方式來編寫查詢,然后討論這兩種選擇之間的取舍。
2、如果你做了一次AB實驗,并且由于在試點地區推出了一項新功能,朋友的接受度增加了2倍,且p <0.05,那么你會將其部署到生產環境中并推廣到所有用戶嗎??
大多數人會說是的,但是在面試中,最明顯的答案可能不是正確的答案。在這種情況下,正確的選擇是:這要看情況。然后,你應該談談其原因,以及你需要哪些額外信息來做決定。
這些都是你需要注意考慮的問題,要思考如何形成一個完整的答案。
3、你有一個主表,其中包含一個用戶ID及其最近的登錄日期,并且你還有第二張表,其中包含當天登錄的所有用戶(同一用戶當天可能有多次登錄)。編寫一個查詢,該查詢將使用用戶ID及其最新登錄日期來更新主表。?
很簡單,但是你需要練習理解所有不同的場景。在這種情況下,你有一個當天剛注冊新用戶的情況,以及當天有同一位用戶多次登錄的情況。你如何處理這些情況?? ? ? ?
?
更多建議
我相信你在閱讀本文時認為這些問題很簡單。但困難的是,你在面試過程中可能并沒有預料到這些問題,并且當下情況會要求你在面試官面前快速地分析和解決。你被要求編寫一些代碼,然后考慮所有不同的情況以及結果的含義。這可能是一個壓力很大的情況,大多數人會不知所措。
這就是為什么你的技術技能需要第二天性。你的SQL技能必須與中文寫作技能一樣好。
在準備SQL面試時,作者給你的主要建議是,了解為什么、如何編寫代碼來解決特定問題。準備好交流為什么要編寫特定的代碼行,為解決特定的極端情況和場景,你要添加什么邏輯以及輸出什么樣的結果。你的解釋與代碼本身同樣重要,甚至更重要。
另外,在構建解決方案時,請一定要和與面試官交談,并讓他們盡可能多地了解你的思考過程。?
SQL面試是為了測試你的技術技能。在你的面試中,你要把你的技能歸為零,并確保盡可能多地做練習題。?
原文鏈接:https://hackernoon.com/3-real-sql-questions-asked-during-technical-interviews-x22w3ysa
本文為 CSDN 翻譯,轉載請注明出處。
6月3日20:00,CSDN 創始人&董事長、極客幫創投創始合伙人蔣濤攜手全球頂級開源基金會主席、董事,聚焦中國開源現狀,直面開發者在開源技術、商業上的難題,你絕不可錯過的開源巔峰對談!立即免費圍觀:
推薦閱讀
因為一個跨域請求,我差點丟了飯碗
沒錯,你離分布式搜索只差一個Elasticsearch入門!
Python開發之:Django基于Docker實現Mysql數據庫讀寫分離、集群、主從同步詳解 | 原力計劃
全球Python調查報告:Python 2正在消亡,PyCharm比VS Code更受歡迎
無代碼來了,還要程序員嗎?
再見,Eclipse | 原力計劃
區塊鏈共識算法總結 | 原力計劃
真香,朕在看了!
總結
以上是生活随笔為你收集整理的面试中遇到这 3 个SQL问题,最容易掉坑里!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广东农信迁移上阿里云:系统建设从按月缩短
- 下一篇: 努力≠上进!那些“熬夜”持续精进的人有多