java面試題

淘寶北京專場

http://www.iteye.com/topic/1120048

第一面

1、說說項目

由於我幾年一直做一個產品,從後臺做到前臺,從業務開發做到技術平臺,所以就畫了整個產品部署架構圖,b/s & c/s的,然後一層層的講解。

B/S現有Web框架改造、瀏覽器緩存、c/s補丁下載各種方式、cdn、c/s通信協議、rpc集羣、http集羣、負載均衡、集羣前置機調度、後端服務器主從實例、後端服務器各種優化(異步、性能隔離)、數據庫服務器各種優化(索引、物化視圖、讀寫分離、帳套結轉、數據庫橫向切分、縱向切分)、層間調用性能監控的實現,對照產品架構圖各個部分一路講下來。

2、http集羣方案,我們的是反向代理服務器,自己有寫代理服務器,也可以用主流的web服務器,然後面試官就問ngnix、lighttpd、apache三大主流web服務器的區別...囧了。。。

3、如果有機會重新設計你們的產品,你會怎麼做?

這個當時回答的不好,主要從通信協議和數據存儲兩塊來說了,這樣說有些片面。因爲我們產品本身又很多問題,只通過部署架構圖是反映不出來的,如二次開發問題、補丁下載問題、不同模塊java包相互依賴問題、技術框架比較封閉、構建系統方案落後、文檔缺失等,我們內部經歷過很多的痛苦的,但是當時思維侷限在了部署架構,所以沒有說出這些問題。

第二面

4、網站性能優化如何優化的?

自己一點網站性能優化經歷,結合《構建高性能Web站點》,扯了一通,跟一面有點類似。

5、本來要花產品架構圖,我翻過簡歷,後邊有一面時候畫的,就沒要畫了。然後就要我在黑板(暫且叫做黑板)上畫jvm體系結構。

畫了jvm體系結構,講解了jvm各個組件和組件的交互、GC算法、各種垃圾收集器、運行期優化、產品中遇到的與jvm相關的問題如oom、ClassLoader問題等,並針對HotSpot VM的實現講解了堆、非堆內存劃分

第三面(HR面)

6、看我面過b2b和支付寶,問了下情況

b2b面完了,但是沒過;支付寶過了2面

7、個人優缺點

8、是否願意來杭州

第四面(視頻電話面,杭州某大牛)

9、介紹項目。對於Web框架的改造,跟原有框架的異同

10、下班後的時間有學習技術麼

11、是否參加過開源項目

------------------------------------------------------------------

不好意思,是2011-12-31,害的大家跟帖穿越...

本人工作時間不短了,4年半的小本。這次面,過了p6,淘寶商城的業務開發部門。

之前三年是做ERP業務開發,技術沒什麼提升。最近兩年在平臺部,半年前覺得混的快掛了才狂翻公司文檔、讀源碼、看書。具體面試準備過幾天會另寫一篇。最近只整理了幾次面試的面試題,在博客裏,只是爲了發出來給大家共享,同時也因爲有同事想了解下這些公司的面試內容。另外爲了消除像我這樣在面試一些公司前的恐懼心理---我在面百度之前一直沒有過的自信的,不知道他們會面什麼,網上沒找到java面試的完整題目....je罈子裏的牛人一堆,還請各位不吝指教!

主題:百度面試

http://www.iteye.com/topic/1118899

   之前去百度面試,整理了一下面試問題。沒有筆試,直接和面試官交談。感覺面試官人挺好的,挺有耐心,每次面試回來不論公司大小,不管能不能拿到offer,但基本都能有一些有價值的輸入,還挺開心的。我雖然有4年工作經驗,但是不是走純技術系的,開發,維護,見客戶,項目管理什麼都幹過,最近想換工作,糞發圖強惡補算法,數據結構一類大公司特愛考的基礎知識。

      這次後幾道題答的不好。尤其是有一個關於服務器session優化和數據庫表水平拆分策略的,沒說到點兒上,回來的路上有了點兒思路,回來百度一下,發現八九不離十。前面幾個算法的也都是磕磕碰碰,好歹都說上來了,是不是最優的就不好說了。

      以前做信息系統,更注重業務的獲取與功能的實現,雖然所有人都喊性能、架構什麼的,但是實際上沒人在乎。反正撐死了也就那麼點兒人用。互聯網公司真的是不一樣啊,對併發和大數據量的關注是深入骨髓的。感覺真是慚愧。雖然這幾年跑客戶談需求講ppt自詡也是混場面的,但是從心裏希望自己在技術上也能再往前走一步。

 

 

根據記憶整理如下:

 

1.       有一個集合a,裏面有n個正整數,亂序排列。給定一個正整數N,求,a中任意兩個數相加等於N,共有哪些種組合情況。例如,集合爲{1,3,44,2,4,5,54,222,368}  N=6,則結果集爲{1,5}{2,4}

      這個題網上有類似的

 

2.       Treemap的實現。

   各種集合類的結構和優缺點,大家都挺愛考的。以前做行業信息化,沒什麼感覺,但是如果很在意性能,搞清楚還是挺有用的。

 

3.       有兩個很大的文件,每個文件中都有1億行,每行一個整數。問這兩個集合的交集是什麼。給定的前提是機器內存不足以完全裝入任意一個文件。

   這個幾乎是網上的原題了

 

4.       堆和棧的定義,堆和棧裏面的對象,哪個運行速度快。

    還問了一些衍生的問題,記不清了,只要看清楚java教材關於這方面的介紹足矣

 

5.       爲了實現一個折線圖,需要將數據存入一種數據結構,折線圖橫座標是時間,縱座標是值,經常的查詢是按時間段進行查詢,如select value from t where begin>’20110101’ and end<’20111212’ ,問,使用java中的那種數據結構比較好。

   還是考java中的各種集合類,本質上是問各種數據結構在順序/隨機的讀取/插入上的效率

 

6.       數據庫的索引通常用什麼數據結構實現?爲什麼用這種數據結構。

   就知道是btree,但是btree是咋回事,爲啥不能用其他tree或者別的結構,這個看過一篇帖子以後才明白。算是學習了。

 

7.       如果數據庫中有2個表,表a字段爲姓名、年齡,表b字段爲姓名、單位。現在使用姓名字段做left join查詢,假設姓名字段都有索引了。問數據庫是怎麼實現的。如果把這兩個表看爲在內存中的數組,要自己實現left join,怎麼實現?

   面試官看我實在不知道數據庫裏leftjoin怎麼實現的,就讓我自己實現一個內存中的,勉強答出來了吧,但是可能不太好。

 

8.       數據庫各種事務隔離級別

   這個是純不記得了,以前工作中從來用不到,真是汗顏。

 

9.       wait()方法和notify()方法幹什麼用的,wait()方法有什麼使用限制,是哪兒都能用麼?

   對於一個從來不用多線程的人,這麼簡單的問題也變得有點兒難。只知道幹什麼用的,不知道有什麼限制。

 

10.   數據庫中有一個表有上億的數據量,怎麼優化?(主要是拆分,除了按業務拆分外,還有什麼從技術角度的,可擴展性好的水平拆分方式)

   思路是拆沒錯,但是面試官問的不是業務拆分策略,而是從技術上考慮。還得考慮擴展性,比如拆好以後,數據量增長迅速,又要拆了,怎麼辦。這個水平拆分策略有好多,網上能搜到。但是我說的都不是很有體系,以前沒弄過,都是現場想。。

 

 

 

 

 

ps:當時上新東方的時候,老師說,有的時候雖然你英語不好,但是有幾個單詞只要你記住了,說的時候塞到句子裏,人家就會覺得你特地道,比如absolutely之流。我覺得面試的時候也有這種key words,比如位排序之流,說的時候還得特舉重若輕。適用於各類新手和平時工作中壓根用不到各種排序算法的人,僅供參考。


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