整理有關面試普遍問題和回答技巧 (持續更新~)

vasar發表於2019-10-30

在面試過程中沒有完美的答案,或許只有的一個清晰的解題思路,問題講清楚別人聽懂了,或許這才是面試的最好體現。還有面試不通過並不是你不優秀,只是你當時沒組織好你的思維去展現你的優秀。不要緊,整理好去下一家。

問題一:如何解決介面訪問慢的問題?

答:這個問題大家可能在工作中經常碰到,做功能開發的或許思維點沒開啟,會停留在業務點上面,或許一時解決了,過段時間又會出現....

面對這樣的問題,我們從哪個點開始呢?從程式碼?業務流程?瀏覽器dedug? ... 都不是。這裡我們從 日誌/資料 去分析。首先我們要知道,我們的專案架構,不要侷限於框架。我們要從大的整體範圍,作業系統(Linux),伺服器(Nginx),MySQL,PHP 等要素出發,這些都是看得見的東西,但裡面的構成關係是複雜的(LNMP)。到這裡或許思路開闊些了。剛說到日誌、資料我們就從LNMP日誌資料展開。

Linux:我們主要關注 磁碟 IO、網路 IO、記憶體消耗、CPU 負載的壓力等,可以用top , ps 命令觀察伺服器狀態,看看到底哪裡出了問題,具體問題具體分析。

MySQL:我們從觀察程式狀態,開啟慢日誌,分析執行語句等方面檢視日誌和資料分析,這裡可以具體展開說明。

Nginx: 我們可以檢視伺服器具體響應狀態碼(500,502,503..),檢視錯誤日誌來分析。

PHP: 使用 PHP-fpm 的慢執行日誌 slow_log 來分析,而不是僅限於功能程式碼。

通過這樣的分析,我們大致從根本上解決了問題。有了這些資料的分析,才有那些業務流程、功能場景的解決方案(用快取,用佇列,非同步框架)來做優化。日誌分析具體細節方法肯定還有很多,這裡就不具體展開了。感興趣的同學可以在白紙上寫寫畫畫,然後進行歸類總結。以便提高自己解決問題的思維。

問題二:InnoDB和MyISAM的不同之處

從一下從下面幾個方向去介紹:
特性:
    事務的支援:(InnoDB支援事務、MyISAM不支援事務);
    鎖粒度:(InnoDB行鎖應用、MyISAM表鎖);
儲存:
    儲存空間:(InnoDB既快取索引檔案,又快取資料檔案,MyISAM只能快取索引檔案);
    儲存結構:(MyISAM:資料檔案的副檔名為.MYD myData,索引檔案的副檔名是.MYI myIndex;InnoDB:所有的表都儲存在同一個資料檔案裡面,即.Ibd)
功能:
    備份:InnoDB 支援資料熱備份和安全恢復,MyISAM 不支援。
    統計記錄行數:(MyISAM:儲存有表的總行數,select count(*) from table會直接取出該值;InnoDB:沒有儲存表的總行數,select count(*) from table會遍歷整個表,消耗相當大)。

問題三:MySQL有哪些索引型別?

可以從三個角度去談:
  資料結構角度:可以分為B-tree索引hash索引fulltext索引(InnoDB、MyISAM都支援)。
   儲存角度:可以分為聚簇索引與非聚簇索引。
   邏輯角度:可以分為主鍵索引、唯一索引、普通索引、複合索引、外來鍵索引。

相關文章