1. 程式人生 > >我所遇到的JAVA面試題,親身經歷。

我所遇到的JAVA面試題,親身經歷。

金三銀四,又是一年面試季,剛好,今年我也在這求職大軍中,前前後後面試了不少家,每天的面試安排的滿滿當當,遇到了各式各樣的面試官,各式各樣的面試題,突然發現為什麼不把我面試時遇到的問題整理出來,一是督促我,把有些還不是太懂的問題搞明白(既然寫部落格總不能寫些錯誤的答案誤人子弟吧),二是當作個紀念,這也算是我的青春啊,面試的題目可能會有些亂,我想到什麼寫什麼,但都是我面試遇到的,不是我遇到的不寫。

說三個題外話,

第一個:剛面試,你看中的單位先別投,先投投其他家,練練手,進入下狀態,找找感覺。

第二個:遞簡歷,都知道遞東西給別人時最好雙手遞,接東西時也最好雙手接,這樣顯得有禮貌,我覺得很別留,有點假惺惺的感覺,但我還是這樣做了,我也很費解。。。

第三個:起身迎接,一般去面試都是讓你在會議室之類的地方等面試官,當面試官進來我會習慣性的站起來,雖然我可能等了他30分鐘,心情很不爽,但我還是這樣做了,我也很費解。。。

進入正題

1:請先自我介紹下

這個面試時一般必問,以前做自我介紹時我都簡簡單單說幾句,後來發現這樣不行,我在自我介紹時,面試官無外乎兩種可能,第一種:我介紹,他看我簡歷,我介紹完了,他沒看完,尷尬了,所以自我介紹適當長一點,也不要太長,自己把握。

第二種:盯著我看,他就是想看看我的表達勾通能力,是否會怯場,其實我是有備而來,稿子都背熟了,所以基本我也盯著他看,畢竟人家是面試官,我老盯著人家看太強勢也不好,所以偶爾眼神也飄飄其他地方,比如看看他面前擺著的我的簡歷,但也不要太飄,票多了人家以為你心虛。

以下是我準備的稿子,我硬體沒的什麼亮點,基本都沒寫,你要是211,985什麼的,能加就加,別心軟。。。

你好,我叫xxx,今天到你們公司面試JAVA的崗位,目前快三年的開發經驗,在兩家公司就職過,做過三個專案,專案中運用到的技術都是目前比較主流的一些框架,後臺一般spring,springMVC,Mybatis,前端用過bootstrap,easyUi,jquery,js還有html+css的一些佈局,伺服器用的是Tomcat,資料庫是mySql,快取用過redis,工作的內容一般都是新需求的開發,BUG修改,測試,部署等,第一家公司前後端都做,做的是一套酒店管理軟體,有涉及到微信開發,目前就職的這家只做後端,除錯介面供app呼叫,目前專案已經結束,後續只需要幾個人去維護他,如果繼續留在公司,對我個人的發展或者對公司的發展都不是太好,所以選擇離職,目前正在辦辭職交接,大概一週內能到崗,謝謝。


2:為什麼離職

馬雲說過,員工的離職原因林林總總,只有兩點最真實:1、錢,沒給到位;2、心,委屈了。這些歸根到底就一條:幹得不爽。那我們去新單位面試肯定不能這麼講,咱麼得費點心思找點靠譜的理由比如:
(1):專案結束,沒有新專案了。 (2)拖欠工資 (3)新專案需要長期駐場開發,出差週期長,大概半年左右。 (4)技術到達瓶頸,想學習更多技能,等等。
以前我用第(4)種,顯的我多愛學習一樣,後來有一次,面試官反問我一句,當你在我們公司一段時間之後技術到達瓶頸是不是也要走?我石化了。。。。現在我一般用第(1)種,  第(3)種最好,最有說服力,可是用的人最多,說不定在你前面面試的那位仁兄用的就是這個。。。。當然如果你有更靠譜的理由歡迎補充。

3:SQL優化

這個問題也是必問的,不管你是一年,二年還是三年開發經驗,這題基本跑不掉,我也在網上搜過,可都不是我想要的答案,現在我整理了一份,如下:
(1)在查詢時應儘量避免全表掃描。
  (2) 當表中資料量很大時,可考慮在經常作為條件的欄位上加上索引。
(3)任何地方都不要使用select * from table,用具體的欄位列代表"*" 不要返回用不到的任何欄位。
(4)寫出統一的SQL語句

          select * from dual和select * From dual雖然只是大小寫不同,查詢分析器就認為是兩句不同的SQL語句,必須進行兩次解析。生成2個執行計劃。所以作為程式設計師,應該保證相同的查詢語句在任何地方都一致,多一個空格都不行!

(5)不要把SQL語句寫得太長,太過冗餘。

 一般,將一個Select語句的結果作為子集,然後從該子集中再進行查詢,這種一層巢狀語句還是比較常見的,但是如果超過3  層巢狀,那麼可以考慮下是否是表設計有問題。

(6)索引並不是越多越好,索引固然可以提高相應的select的效率,但同時也降低了insert及update效率

(7)注意where字句的連線順序

         mysql行是按從左到右進行結果集的篩選的舉個例子:

          select * from a where id=1 and fenlei=5
          select * from a where fenlei=5 and id=1
         如果 id=1 條件只有一條記錄,fenlei=5 條件有1000條記錄,資料量小的時候不用考慮,但多的時候就非常重要,如果你的資料量
很大,呈千萬級的數量,第一條肯定快,一個原則,排除越多的條件放到第一個
 注意: oracle執行是按從右到左

4:索引知道嗎?談談你對索引的理解及注意事項

這個問題被問到的概率也是相當大的,基本每家也都會問,大家都對索引有一點了解 ,我也是,每次回答也都是簡單幾句,面的次數多了,我就整理了一份,可能不全,都是我自己對索引的一些理解 ,但足夠應對面試了,總比簡單回答幾句要好。當然你在回答的途中面試官可能會就你回答的再深入問下句,那隻能自保多福,紮實基本功吧。
我們使用索引的主要目的就是為了更快的查詢,索引的作用也就是這個,但它也有缺點,你建立了索引,那麼你在做插入、更新操作時速度就會降低,所以當我們表中資料量達百萬千萬條時可以使用索引,資料量不大時,沒必要使用,索引有好也有壞,我們在建立索引的時候要謹慎,錢要花在刀刃上,不建無用的索引,只對經常查詢的欄位建索引,不建無用的索引,索引可以提高查詢效率,但也不是越多越好,多的索引不僅會增加物理儲存的開銷,對於插入、刪除、更新操作也會降低它效率。
最近剛入職新公司,一切還在適應中,學習的地方太多,此遍部落格有時間繼續更新。