疫情在家有些閑,發現自己的簡歷有1年半沒更新過了,上一次面試還是1年半以前。想看看外面的行情也順便摸一下自己的底,把自己的方向理清晰一些,就更新了自己的簡歷,公開出去了。公開的第二天收到了一些面試推薦。雖然在家,但是白天還是在遠程辦公,所以也沒有面試很多,選了其中兩家。一個是阿裡CBU技術部-C2M ...
疫情在家有些閑,發現自己的簡歷有1年半沒更新過了,上一次面試還是1年半以前。想看看外面的行情也順便摸一下自己的底,把自己的方向理清晰一些,就更新了自己的簡歷,公開出去了。公開的第二天收到了一些面試推薦。雖然在家,但是白天還是在遠程辦公,所以也沒有面試很多,選了其中兩家。一個是阿裡CBU技術部-C2M-java方向崗位(終止第三輪技術面),還有一個是鬥魚java後臺(拿到offer,考慮到時外包直接否掉了)。總結一下這次面試過程,以及自己的不足與後期的方向。
面試感受的話,阿裡給我的面試總體感覺是非常舒服,專業,都是中午打電話預約下一輪面試時間,每一輪面試在1個小時到2個半小時之間。每一輪面試官問了什麼問題,面試者回答結果都有記錄。所以後面的面試官都會看到前面面試官問了哪些內容,面試者回答的情況,多輪面試技術都不會重疊,技術廣度覆蓋比較全.記錄一下麵試內容:
一面主要聊了2個半小時吧,聊了快兩個小時,做題做了半個多小時
1.項目中對quartz的使用以及分散式調度任務的實現過程/方式。
2.redis相關。作為分散式鎖實現原理,調用的哪個命令,以及項目中使用的業務場景。作為緩存使用場景,cluster模式是如何實現的;主從數據同步過程,持久化方式,數據過期處理方式,cluster模式下某實例節點掛了,客戶端是否感知,是否有數據問題;一致性hash原理,一致性hash解決了具體什麼樣的問題。hashmap中擴容時rehash的過程。
3.mq相關。項目中rabbitMQ使用場景,交換機的幾種類型。
4.dubbo相關。dubbo的組件有哪些,有沒有用到限流以及如何使用,dubbo協議特點,NIO實現原理,dubbo協議與http協議(設置keepAlive時)的區別,網路模型聊一下
5.加解密相關。我用過哪些加密,簽名演算法,對稱與非對稱常用加密演算法有哪些,RSA如何保證安全性。
聊完之後給我發了一個寫演算法題目的鏈接。1個小時內,3個題目選2個做。
1.JDK1.8)線程A列印a,線程B列印l,線程C列印i,三個線程交替列印,各列印102次,alialiali
2.小b有一個計數器,其計數規則如下:計數從1開始,每過1秒數字+1,第一次計數周期上限值為5,下一次計數周期上限值為上一次計數周期的兩倍,每次計數到上限值,觸發計數重置,即下一個計數重新從1開始,以下是前20秒計數器上顯示的數字舉例:,1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5,請實現一個方法,輸入第n秒,返回計數器上這個時刻的數字
3.手寫lru,實行put(),get()方法,不能使用LinkedHashMap
二面是技術主管面試的,差不多聊了2個小時。主要內容:
1.redis相關: 緩存穿透如何處理,緩存雪崩如何處理,緩存擊穿如何處理。
2.mq相關:發生消息堆積如何處理。有沒有使用過除了rabbitMQ其他的mq產品,他們各有哪些特點
3.java基礎相關:內載入機制,雙親委派,記憶體模型,記憶體引用機制
4.虛擬機相關:是否用過虛擬機調優經驗,虛擬機啟動參數有哪些,如何列印線程堆棧信息,記憶體溢出,cpu過高問題一般查找問題過程
5.RPC相關:dubbo協議的序列化,我知道有哪些序列化,hession序列化與json序列化區別。
6.分散式事務:項目中有沒有用過分散式事務,分散式事務目前主流幾種解決方案
7.資料庫:資料庫分庫分表的橫向和縱向一般區別使用在哪些業務上。
8.項目相關:項目團隊大小,擔任的角色,成就,工作遇到的問題。
三面是該部門最大的boss面的,聽二面面試官講是最後一輪技術面了,1個多小時,主要內容:
1.虛擬機相關:垃圾回收機制,CMS垃圾回收過程,列印出java程式線程對賬信息命令。
2.java線程基礎相關:線程有哪幾種狀態,synchronized底層原理,與reentrantlock區別,concurrentHashMap實現原理
3.mysql相關:innodb有哪些特點,臟讀,幻讀是什麼,寫個分頁查詢sql,事務隔離級別,事務實現原理
4.RPC相關:有用到哪些RPC框架,.net裡面WCF與dubbo區別
5.項目相關:個人項目經歷,職業規劃等
面試總結:這次面試沒過,還是個人技術問題。前1年半都是搞得.net framework,後來搞了幾個月的.net Core。轉java這邊只有1年多一點的時間。雖然思想,語法上差不多,但是java語言的功能的底層實現,以及相關框架實現源碼都沒有弄得很好,導致在三面時很多底層細節都回答不出來最後掛掉了。暫時先放一放對docker,k8s,elk相關學習,先投入到java基礎,Spring,dubbo,netty基礎源碼上來。今年暫時就不繼續面試了(公司裁掉我了除外。。。),不足的地方還是挺多的,先努力工作提升下自己,,等今年年底再去各大廠摸摸底。
個人總結:工作三年了,搞了2年多的.net,1年多的java,總感覺基礎深度沉澱不夠。2年前就註冊了博客賬號,一直都是逛園子,沒有親手寫過博客。以後在學習過程中需要及時的總結,養成總結技術點的習慣,不然好多東西過了一段時間就忘了。今年開始也希望能著手深入研究某一個優秀的開源框架,提升自己之餘看看能不能為開源社區開始做點貢獻了。