程式員小李在沿海城市作業了8年,那里漲幅飛快的房價限制了程式員小李在一線城市安家的想法,再加上突然發生的疫情暴露了遠在他鄉作業的不便,在種種因素下,程式員小李決定回家作業,
既然已經下定決心告別一線城市回家鄉發展,那也就意味著,做好了降低工資標準的準備,
碰巧有一家互聯網公司在招人,Java開發工程師,薪資范圍18K~25K,
程式員小李一看,喲,也不算很低啊!于是投了簡歷,等著面試邀請,
不出兩天,面試邀約就來…程式員小李如期赴約,經過了前面兩場面試后,就有了如下的情形…

面試官:說一下sleep和wait的區別?
**程式員小李:**哦,這個簡單
1. 對于 sleep()方法,我們首先要知道該方法是屬于 Thread 類中的,而 wait()方法,則是屬于Object 類中的,
2. sleep()方法導致了程式暫停執行指定的時間,讓出 cpu 該其他執行緒,但是它的監控狀態依然保持著,當指定的時間到了又會自動恢復運行狀態,
3. 在呼叫 sleep()方法的程序中,執行緒不會釋放物件鎖,
4. 而當呼叫 wait()方法的時候,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫 notify()方法后本執行緒才進入物件鎖定池準備獲取物件鎖進入運行狀態,
面試官:嗯,不錯,說一下執行緒池,
**程式員小李:**額~是說那四種執行緒池嗎?還是執行緒池的作業原理、作業流程?
**面試官:**額~那換一個問題吧!什么是中間件?
程式員小李:
中間件是處于作業系統和應用程式之間軟體,使用時往往是一組中間件集成在一起,構成一個平臺(開發平臺+運行平臺),在這組中間件中必須要有一個通信中間件,即中間件=平臺+通信,該定義也限定了只有用于分布式系統中才能稱為中間件,
主要分類:遠程程序呼叫、面向訊息的中間件、物件請求代理、事物處理監控,
面試官:那如果要你自己設計一個中間件,你會怎么設計呢?
**程式員小李:**我會從以下幾個方面考慮:
1、遠程程序呼叫
**2、面向訊息:**利用高效的訊息傳遞機制進行平臺無關的資料交流,并給予資料通信來進行分布式系統的集成,有以下三個特點:
通訊程式可以在不同的時間運行
通訊晨旭之家可以一對一、一對多、多對一甚至是上述多種方式的混合
程式將訊息放入訊息佇列會從小吸毒列中取出訊息來進行通訊
3、物件請求代理:提供不同形式的通訊服務包括同步、排隊、訂閱發布、廣播等,
可構筑各種框架如:事物處理監控器、分布資料訪問、物件事務管理器 OTM 等,
4、事物處理監控有以下功能:
行程管理,包括啟動 server 行程、分配任務、監控其執行并對負載進行平衡
事務管理,保證在其監控下的事務處理的原子性、一致性、獨立性和持久性
通訊管理,為 client 和 server 之間提供多種通訊機制,包括請求回應、會話、排隊、訂閱發布和廣播等
面試官:嗯,很好,那個MySQL優化怎么做?
**程式員小李:**MySQL 的優化一般可以從存盤引擎的選擇、欄位型別的選擇、索引的選擇、磁區分表、主從復制、讀寫分離、SQL 優化等這里方面入手,
額,例如,儲存引擎方面,在創建表的時候我們使用sql陳述句…
**面試官:**行了行了,不用太細了,我聽不懂,那個,講一下Redis吧!

Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
**程式員小李:**Redisson、Jedis、lettuce 等等,官方推薦使用 Redisson,
面試官:Redis 如何做記憶體優化?
**程式員小李:**盡可能使用散串列(hashes),散串列(是說散串列里面存盤的數少)使用的記憶體非常小,所以應該盡可能的將資料模型抽象到一個散串列里面,
比如 web 系統中有一個用戶物件,不要為這個用戶的名稱,姓氏,郵箱,密碼設定單獨的 key,而是應該把這個用戶的所有資訊存盤到一張散串列里面,
面試官:那個Redis快取雪崩、穿透這些你是不是也知道?
**程式員小李:**嗯,知道,快取雪崩就是快取同一時間大面積的失效,所以…
**面試官:**可以了可以了,咳咳~
面試官左手掏出了右口袋的紙巾,擦了一把汗,

**面試官:**嗯,你的表現很好,技術功底也很扎實,包括我,前兩個面試官也很滿意…
程式員小李面露欣喜,心中也已經對這份作業十拿九穩了,
**面試官:**但是,事情是這樣的啊,就你現在的情況,我們招不起,想招一個更便宜的
**程式員小李:**啊?沒關系的,你就按照你們發的那個薪資范圍來就行…
**面試官:**實話告訴你吧,那就是寫在上面吸引人的,實際上我們連最低那個都達不到,這樣,如果你接受10K的話,明天就來上班
**程式員小李:**這樣啊~耽誤我這么久時間,那行吧,我先回家,你們等通知吧!

小編閑話
上面的故事中,程式員小李其實是具備很強的技術能力的,但是,所面試的互聯網公司只是一個小公司,養不起他這樣的人才,可以看出,甚至連面試官的技術水平都不高,但是,你會發現,不論公司多大,需不需要該技術,他們都會問一些更廣更深的問題,
無論如何,程式員只有掌握了更廣更深層的技術,才能做到碾壓面試官,把主動權掌握在自己手里,
下面給各位粉絲朋友分享一些電子書、一線互聯網大廠面試真題,需要的朋友可以點擊此處,獲取免費領取面試資料、技術視頻
電子書

大廠真題

真題專題分類

讀者福利
讀到這的朋友還可以免費領取一份收集的Java進階知識筆記和視頻資料,
資料免費領取方式:關注后,點擊這里即可免費領取

更多筆記分享


圖片轉存中…(img-CnSUihTr-1623419138846)]
更多筆記分享
[外鏈圖片轉存中…(img-Y289X4FV-1623419138847)]
[外鏈圖片轉存中…(img-Nued7G3P-1623419138848)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/286947.html
標籤:java
