網易java杭研院3面總結
9月27號,註定是個不平常的日子,今天迎來了網易期待已久的面試。
一,一面
1.簡述gc機制(gc演算法)
2.Fibonacci Sequence 演算法時間複雜度及非遞迴實現
3. 微信網頁版的登陸過程,從手機掃碼到瀏覽器登陸全過程
方法一:
CSC模式為:web客戶端 --> 服務端(騰訊) <--
移動客戶端
認證步驟:
1)開啟微信網頁版,在瀏覽器生成一個web客戶端,此客戶端並未任務授權,但服務端給它生成了一個唯一標識碼UUID,監聽服務端登入請求;
2) iPhone客戶端點選 [登入網頁版] 時,實際上此時客戶端是登入了且有訪問授權碼 access_token,掃描網頁二維碼,獲得UUID,將access_token 與UUID編碼後,傳自騰訊服務端,服務端生成登入授權碼,通知正在監聽中的網頁客戶端;
3)網頁客戶端通過偵聽器獲得授權碼,往伺服器請求使用者資訊,完成登入過程。
方法二:
非常簡單:
- web端生成一個appid,用appid向伺服器換一個uuid
- web端根據uuid生成一個QR碼,然後long polling詢問伺服器使用者是否通過手機app確認
- 手機微信掃到QR碼後通知伺服器:使用者A使用該QR碼驗證
- 伺服器通過long polling告訴web端使用者A驗證成功,併產生一個session cookie,登入完成
4.mysql使用的資料結構
5.簡述網路分層?tcp三次握手
6.執行緒併發怎麼實現
7.抽象類和介面的區別
二,二面
1. web開發中,資料庫併發訪問的控制及解決方案
2. 怎麼實現記憶體狀態的監控?(jvm虛擬機器中記憶體分配機制及優化)
3.使用hibernate的好處與壞處
4.一千臺機器,怎樣保證系統服務的高可用性?(比如說,一臺機器當掉,可繼續由另一臺提供服務)
5.struts的配置,底層實現?(比如攔截器等)
6.介紹自己最熟悉的一種技能或框架
7.具體專案的分工問題,比如負責業務介面設計的人員需要負責開發嗎?負責開發的人員可以負責介面的設計嗎?怎麼分配合理?
8.spring都使用了哪些配置?自己的實際專案中用的什麼版本?9.簡述MVC模型
10.網路抓包
三,三面