支付寶三面&字節跳動一面

支付寶

支付寶是前天晚上9點半我在洗jio的時候電話打過來的,足以看出支付寶這邊福報程度,P9大佬這個點還在加班,我吐。而且不預約是螞蟻金服一貫的傳統。這次面試應該也是過了,又面臨着支付寶和阿里金融兩難的選擇境地。

1. 項目中爲什麼要用Nginx

用nginx做反向代理和負責均衡

2. Nginx爲什麼可以做負載均衡

一般來說公網延遲高,客戶端與nginx之間的請求連接走公網,nginx先把這些請求緩存住,等這些請求數據全部完成之後nginx再向內網服務器請求,降低公網網絡延遲成本,同時也降低一個連接佔用服務端程序的時間。

因爲tcp不一定一次就能把全部數據傳輸完畢,所以一個連接可能需要等待很久才能把所有需要的數據都傳輸完畢,而這樣的空閒連接如果都直接連接到服務器上的話,會加重服務器負擔,而nginx在這方面做了很大的優化,可以承載更多的連接,空閒連接也不會佔據太多內存,所以nginx作爲反向代理能降低上游服務器的負載。
Nginx提升網站性能的原因

Nginx比tomcat好在哪裏?

主要有三個技術方面,master-worker進程模型,nio,協程機制

3. 正向代理和反向代理

正向代理隱藏真實客戶端,反向代理隱藏真實服務端。

我們常說的反向代理其實也就是在tomcat後面做集羣的時候,nginx隱藏了服務端的集羣,這便是反向代理

而正向代理其實就是nginx向後臺服務器隱藏了client端的browser,app,h5等等的請求,這便是正向代理

4. 兩階段提交

5. 4個任務,線程池參數爲2,2,4,如何執行

字節跳動

字節這邊效率挺高,hr聲音挺好聽(偏了)。整個面試過程大約1個小時,開放性的問題很多,面試官記錄也比較認真。項目幾乎沒問,算法只有一個,也不是很難。不過字節確實很實誠,我問實習生有人帶嗎,那邊說基本都是靠自己…

1. Java泛型原理

什麼是類型爆炸

2. HashMap結構

爲什麼1.8才加了紅黑樹 這個我比較懵逼?

3. 怎麼判斷一個對象要被回收

引用計數法和可達性分析法

有沒有用引用計數法的語言

Python和腳本領域,譬如ActionScript

4. 樂觀鎖和悲觀鎖

5. 讀多寫少的MySQL如何優化

優化索引,優化配置,換引擎爲MyISAM,分庫分表(hash,block,MyCat),加緩存

6. 如何分庫分表

可以先垂直分表,如果表中有列是text類型,則儘量把它拆開,避免查詢時,數據量太大造成的“跨頁”問題

水平拆分,可以先hash或者range,或者地理區域,時間來劃分

7. 分庫分表後如何保證ID自增

通過專門的一個表來保證ID,通過Redis單線程來生成ID

通過觸發器在業務層面上約束

  1. UUID:通過唯一識別碼16個字節128位的長數字;組成部分:當前日期和時間序列+全局的唯一性網卡mac地;優點:代碼實現簡單、不佔用寬帶、數據遷移不受影響;缺點:無序、無法保證趨勢遞增(要求3)字符存儲、傳輸、查詢慢、不可讀、可以逆向出mac地址不安全
  2. 雪花算法:表示符+時間戳+機器碼+12位毫秒計數器;優點:自增,靈活度高;缺點:依賴機器的時鐘,每個機器的時鐘不可能完全同步
  3. 通過mysql的auto_increment的間隔
  4. 通過redis的步長來保證

8. 如何保證緩存一致性

雙刪+MQ

9. Nginx的作用

10. 如何在服務器部署服務

11. LeetCode2 兩數相加

這個之前刷過,2分鐘就寫出來了

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