記這個下午之某度面試

今天下午參加了某度某部門的校招面試,在此做下總結,以補齊盲區和供之後參考。
首先,經過昨天半個上午加一個下午加晚上加今天上午的猛烈複習,還是有點效果的。我把我能會的比較基礎的東西大致看了一遍,不過還是發現了一些問題,我覺得挺好的,因爲提前批招聘剛剛開始;在面試中我也被面了好幾個不是很懂的問題以及一些知識盲區,下面開始總結:
(1)在複習過程中,印象最深的就是《劍指offer》中還有幾道題不是很熟練(字符串全排列),然後在慕課網上學習的項目還有一點沒有搞透,還有數據庫方面的遺忘程度很大,redis也都忘了,網絡協議有待加強,多消費者和生產者問題,還有IO、NIO、Spring等都沒來得及複習。
(2)在面試過程也遇到了一些問題,影響最爲嚴重的就是Redis和Linux操作系統原理,Redis中那個:當在多個服務器添加一個新的服務器後,如何進行對數據進行整理,我當時想的使用hash的方法進行分配,但是之前的數據肯定要遷移,然後怎麼處理呢?第二個linux操作系統原理是我的弱項,這個比如說那個調用命令ls之後,操作系統裏面會進行什麼操作。下面細細總結開來:
一)一面的時候,是一個冷冷的面試官,進行了下自我介紹,巴拉巴拉,然後讓我講了下我的實驗室的項目,巴拉巴拉,本來就很水的的項目讓我說的好像也不夠明朗,因爲比較冷門,大家都不懂,我也不知道怎麼說過的。後來問了一下這個項目的意義,我也不知道是怎麼說的,我也不知道有什麼意義,編了遍感覺也算靠譜。再接着就開始面我技術問題了,印象最深刻的就是:
(a)容器,當時我就懵了,我沒明白這個概念,後來面試官說了我才知道,原來是集合,也是醉了,他問我有沒有用過線程安全的容器,我第一反應是AQS,也是汗顏,張口來了個ReetrantLock。後來又重新補充了一下安全的容器類,這個肯定沒有說全,之後再做一下補充好了。後又來問:ArrayList怎麼能夠實現線程安全的操作,這是個問題,明天我得查一查;
(b)Linux系統中使用ls命令式,Linux系統內部會發生些什麼?使用進程或線程來說明,我當時使用了用戶態和內核態來解釋的,具體還不太清楚。
(c)怎麼實現一個聊天室系統,每個人都能看到所有發的消息,我回答的是觀察者模式,但是具體怎麼做,我說的也不是很清楚,通過socket的方式進行通信,讓服務器存儲一個Map或者kay-value值,當併發量過大的時候,會出現一些問題,我說數據過多、服務器給客戶端發送消息過多等,我說把服務器進行集羣,我說通過使用hash進行服務器的分配;若已有多個服務器的話,再次添加一個肯定會造成之前的數據不能準確定位,所以怎麼辦,我一直沒相出,後來,三面的時候又遇到類似的了。這個探討了好多好多,有緩存神馬巴拉巴拉的,最後還是沒出來。
(d)不知怎麼扯出了什麼情況下會發生內存泄漏的問題,這個我拿ThreadLocal和線程池進行了一下說明,我得再查一下別的情況下會發生內存泄漏的情況。
(e)如何使用信號量來操作==》線程間通信
後來還寫了個程序,反轉二叉樹,和鏡像差不多,很順利的寫下來了,然後就歇了一波。
二)二面的時候有兩個面試官,反正知道其中有一個是我們的學長,這兩個面試官就比較隨和一點了。直接讓我說了下我的項目,還是那個實驗室的水項目,然後問了我的第二個小項目,
a)如果倉庫發生什麼超脈了怎麼辦?當時沒明白,好像是是倉庫10個貨物的話,11個賣的怎麼處理吧?不知道,感覺不咋地,貌似是有這個問題,我得思考一下,三面的時候也問到了,怎麼對倉庫進行處理,這個項目我的重新熟悉一下,而且還有一個模塊沒有搞完。然後,如果併發量特別大的話,如何處理,我說粗暴的佈置多個服務器,然後問我如何進行分,那個模塊業務衆多,需要單獨拿出來,然後我說得看數據庫表裏的關係,看他們牽扯到的其他表中的字段多不多,然後在這一塊進行了簡要的分析,巴拉巴拉。

b)第二位面試官開始
在介紹第一個Petri網的時候,突然問我能不能解釋一下馬爾科夫鏈,當時我就懵了,我說不能,這是個數學問題,不是我們的重點,汗-_-||,看來得重新複習一下我這個項目的基礎知識了,還說能不能介紹一下蒙特卡洛原理,這個我只模模糊糊的說了說,真實的東西,也都忘了。再往後面的都是些基礎知識了,剛開始就問起了JVM的內存模型,之後是進程和線程的區別,網絡的七層,又提出了一個協程,我也不是很清楚,沒聽說過,後來又問MySQL中InnoDB和MyIsam的區別,以及事務的特點,Redis數據庫滿足ACID這個特性嗎?這個沒答上來。後來讓寫了一個代碼,求解二叉樹的某一行的寬度,以層次遍歷爲基礎順利寫出;後來又讓我畫了TCP三次握手和四次結束的狀態圖,以及最後的2MSL的等待時間,以及爲什麼要等待,如果不等待會發生什麼事情等等。
三)三面的面試官特別有禮貌,把重點放在了Redis上面,就是把集羣后,把三臺服務器擴充後會發生什麼問題,首先說了hash算法來分配數據,接着會導致原來的緩存對應的服務器不一樣,需要做數據遷移,但是數據遷移的時候又會發生訪問問題,然後怎麼解決呢?一開始我沒搞出來,在他的不斷提示下,我說了三種,一是日誌回滾,而是保存接到的消息延遲處理,三是把數據先寫回DB,然後在下次緩存不命中的時候重新讀取。也不知道對錯,等下次面試前必須搞清楚。而且還問到了倉庫處理的那個問題,怎麼保證安全性,我說給方法加上鎖,具體的早就忘了。按照我的簡歷把項目裏面的每一條都仔仔細細的問了一遍。後來又脫離了我的技術方面,問到怎麼證明我的學習能力,平常有什麼愛好,團隊協作怎麼樣,家庭情況等等等等吧。
接着,讓我回來等待消息。
我舍友被問到的問題有:
大量的數據下,怎麼統計每個單詞的數量?
DNS使用了什麼傳輸層協議?

某度的某部門的提前批校招總體來說還是挺人性化的,偏於基礎,我沒有什麼實習經驗,也沒有大的項目經驗,但是他們能根據簡歷情況來對個人定製,不管最後能不能拿到offer,起碼是第一次校招面試,經歷了這個溫柔的進階,因爲之前僅僅面過兩次,而且都效果都不好,被掛了。在這裏也學到了很多,感覺被溫柔的對待了。挺好的。再接再厲吧,總結一個周,再投校招。

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