天天看點

百度java開發面試題(2011-12-XX)【轉】

第一面

項目:

1、找一個項目,介紹下情況。其中遇到了什麼問題,每種問題怎麼樣的解決方案。

算法題:

2、一個排好序的數組,找出兩數之和為m的所有組合

3、自然數序列,找出任意連續之和等于n的所有子序列

資料結構:

4、從資料庫查出一個資料結果集,其中有一個時間字段,請用一個資料結構存儲使得可以最快速的查出某個時間段内的記錄。

5、上一題我提到了B+樹,他就繼續問了為何用B+樹實作索引而不用二叉樹

資料庫:

6、說說Oracle資料庫的事務隔離級别,以及遇到的相關問題

這個我說了标準的四種級别,Oracle實作的三種級别,并概述了下多版本讀一緻性

項目相關技術:

7、看到履歷上寫了個rpc,講講,我說了跟rmi比較像,說了異同點,然後又展開到記憶體配置設定的問題,不過沒搞懂他到底要說什麼。還問題java用戶端跟c程式服務端的通信情況,比如說c那邊直接一個結構體過來,怎麼處理,答曰沒遇到過。

8、履歷上寫的jvm性能調優,說說都做了什麼事情

9、說到jvm的時候,說到了我們用windows開發,就問linux的腳本知道麼,awk用過麼

10、履歷上寫web架構開發維護,就問浏覽器端跟伺服器端如何通信,不過最後隻落到了java對象如何傳遞到用戶端,用戶端資料如何傳遞到服務端。

java基礎:

11、并發同步的問題,synchorized是如何使用,Object的wait、notify方法什麼作用

架構:

12、是否了解spring,ioc的實作,aop的實作方案,各種方案有什麼限制

第二面

項目:

1、介紹下你做的項目,稍微高層次一些的介紹下,意思是不要沒完沒了的介紹

其中提到了主執行個體叢集節點與主執行個體備用節點的單例狀态如何保持同步

2、rpc通信和rmi差別

3、并發通路同一條資料的時候,如何保證資料同步。

4、網站性能優化都做了什麼,具體的?ETag、Last-Modified、Expires、Cache-Control

5、最近看什麼書,印象最深刻的是什麼?

算法:

6、二叉樹,找兩個節點的最底層的公共父節點,給思路

7、單向連結清單反轉,寫代碼

第三面(就記了這麼多)

自我介紹:

1、個人基本情況,順便提到項目,就開始扯了幾下

資料庫:

2、資料庫性能優化有做麼?做了些什麼?

設計:

3、設計一個小商店進銷存系統的的表結構設計,老闆每天要知道賣出的貨物,要定期檢視貨物的成本、銷售額和利潤。

這裡要注意,重點之一是如何進行成本計算,要知道成本計算的幾種方法,選其中一種實作,這個會影響表結構的設計

算法:

4、1到1億的自然數,求所有數的拆分後的數字之和,如286 拆分成2、8、6,如1到11拆分後的數字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1。

轉自:http://www.iteye.com/topic/1120046

另一篇:

之前去百度面試,整理了一下面試問題。沒有筆試,直接和面試官交談。感覺面試官人挺好的,挺有耐心,每次面試回來不論公司大小,不管能不能拿到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,比如位排序之流,說的時候還得特舉重若輕。适用于各類新手和平時工作中壓根用不到各種排序算法的人,僅供參考。

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