面試題

一面

自我介紹下自己,不超過3分鐘(實際上我的自我介紹不到一分鐘)
你感覺比本科階段自己進步了多少,有哪些進步
研究生期間最大的進步是什麼
你覺得你適合從事哪個方向的開發
synchronized與lock的區別,使用場景。看過synchronized的源碼沒
JVM自動內存管理,Minor GC與Full GC的觸發機制
瞭解過JVM調優沒,基本思路是什麼

如果CPU使用率較高,GC頻繁且GC時間長,可能就需要JVM調優了。
基本思路就是讓每一次GC都回收儘可能多的對象,
對於CMS來說,要合理設置年輕代和年老代的大小。該如何確定它們的大小呢?這是一個迭代的過程,可以先採用JVM的默認值,然後通過壓測分析GC日誌。

如果看年輕代的內存使用率處在高位,導致頻繁的Minor GC,而頻繁GC的效率又不高,說明對象沒那麼快能被回收,這時年輕代可以適當調大一點。

如果看年老代的內存使用率處在高位,導致頻繁的Full GC,這樣分兩種情況:如果每次Full GC後年老代的內存佔用率沒有下來,可以懷疑是內存泄漏;如果Full GC後年老代的內存佔用率下來了,說明不是內存泄漏,要考慮調大年老代。

對於G1收集器來說,可以適當調大Java堆,因爲G1收集器採用了局部區域收集策略,單次垃圾收集的時間可控,可以管理較大的Java堆。

如何設計存儲海量數據的存儲系統

海量數據的解決方案:
頁面上:
使用緩存;頁面靜態化技術;
數據庫層面:
分離數據庫中活躍的數據;批量讀取和延遲修改;讀寫分離;使用NoSQL和Hadoop等技術;分佈式部署數據庫;應用服務和數據服務分離;
其他方面:
使用搜索引擎搜索數據庫中的數據;進行業務的拆分;
高併發情況下的解決方案:
應用程序和靜態資源文件進行分離,靜態資源可以使用CDN;
集羣與分佈式;
使用Nginx反向代理;

緩存的實現原理,設計緩存要注意什麼
將熱點數據放在內存中,用戶查詢時命中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章