JAVA開發工程師面試(1)


  我已經有很長一段時間沒有更新博客了,難道是博主我變懶惰了嗎?哎,這樣可不行啊,我還有好多知識要學習,要和大家分享。以后我需要更加努力,改掉自己的惰性。本人文采不怎么樣,只能是把自己所想的說出來,想和大家一起分享知識,互相學習,豐富自己,所以在文采方面,大家多多體諒體諒。我盡可能的去寫好每一篇博客,讓大家方便閱讀和了解。

  最近我去面試了幾家公司,是關於JAVA開發工程師的職位。今天我就寫一寫關於在面試過程中的一些問題,如果您看到了這篇博客,可能會對您面試的時候有一些幫助。

  1.自我介紹

     關於自我介紹這方面的內容,每一個人都有自己的介紹方式。我講述自我介紹方式不一定適合所有人,這個只是代表我個人的看法。自我介紹就是把您給面試官的簡歷上面的內容的簡介版,包含學歷、以往公司、項目經歷、證書,同時您也可以把個人興趣愛好、性格也介紹一下,讓面試官更加了解您本人,我也提醒一下在介紹自己性格的時候,你要考慮到你現在的面試職位是否與性格符合,面試官可能會抓住你的性格問題詳細詢問你引發出來的問題,如果你不能很好的回答這些問題的話,我建議你不要在自我介紹的時候說出自己的性格。

  2.技術問題

    關於技術問題的話,那就需要你有很好的技術知識和能力,這部分面試的時候是注重之重,因為這部分決定了公司是否聘你和入職后的薪資問題,下面我把面試我的一些技術問題列舉出來,以供大家參考。

    (1)StringBuffer類初始容量及擴容是多少?

      (a)StringBuffer()的初始容量可以容納16個字符,當該對象的實體存放的字符的長度大於16時,實體容量就自動增加。StringBuffer對象可以通過length()方法獲取實體中存放的字符序列長度,通過capacity()方法來獲取當前實體的實際容量。

      (b)StringBuffer(int size)可以指定分配給該對象的實體的初始容量參數為參數size指定的字符個數。當該對象的實體存放的字符序列的長度大於size個字符時,實體的容量就自動的增加。以便存放所增加的字符。

      (c)StringBuffer(String s)可以指定給對象的實體的初始容量為參數字符串s的長度額外再加16個字符。當該對象的實體存放的字符序列長度大於size個字符時,實體的容量自動的增加,以便存放所增加的字符。

    (2)String和StringBuffer有什么區別?

      (a)在這方面運行速度快慢為:StringBuilder > StringBuffer > String, 

      String最慢的原因:

        String為字符串常量,而StringBuilder和StringBuffer均為字符串變量,即String對象一旦創建之后該對象是不可更改的,但后兩者的對象是變量,是可以更改的。

      (b)在線程安全上,StringBuilder是線程不安全的,而StringBuffer是線程安全的

    (3)collection集合?

    Collection集合(單點集合)包含:

      (a)List特點:元素有序;元素可以重復;元素都有索引(角標)

        Vector:內部是數組數據結構,是同步的(線程安全的)。增刪查詢都很慢。
           ArrayList:內部是數組數據結構,是不同步的(線程不安全的)。替代了Vector。查詢速度快,增刪比較慢。
           LinkedList:內部是鏈表數據結構,是不同步的(線程不安全的)。增刪元素速度快。

      (b)Set 特點:元素無序;元素不可以重復;

        HashSet、TreeSet

      注意:set不可以重復是因為值是取得Map的key,key是不能重復的。

    與Collection相對應的是Map集合(鍵值對):

      HashMap、TreeMap

    (3)Spring MVC處理請求流程(詳情介紹見這篇文章:https://www.cnblogs.com/javJoker/p/10486142.html

 

    (4)HashMap是鍵值對的形式存儲值得,如果用對象作為key,怎么比較key是否一樣?       

      HashMap的key是個對象的話,大家都是知道判斷對象是否相等,直接使用“==”操作符是不可以的,這樣比較的值是它們各自的地址,而不是對象屬性的值,其實String類型也是一個對象,比較兩個字符串是否相等,我們使用的是對象中的equals方法。當HashMap的使用自定義對象作為key的時候,我們需要重寫對象的equals方法,可以通過重寫對象中的toString()方法把屬性轉化成字符串的形式,然后在比較字符串是否相等,同時我們也需要重寫hashCode方法。String類型的底層已經重寫了hashCode和equals方法。有一篇博客詳細介紹了:https://www.cnblogs.com/dolphin0520/p/3681042.html.(后期補充:HashMap 的key和value都可以允許為空,key的去重是HashMap 是使用 hashCode 和 equals 實現去重的, 如果key是對象類型的話,需要在帶對象中重寫hashCode 和 equals 方法,不需要使用toString()方法讓對象轉化為字符串進行比較。使用toString()這個方法比較是我一次面試的時候考官說的,當時面試的時候我說重寫hashCode 方法,他卻不以為然,就告訴了我toString()方法,那個時候的本以為是這個方法是最好的,現在我才明白面試官考你的時候,也不一定知道,有時候也要相信自己。另外再說一個課外話:TreeMap 依靠 Comparable Comparator 來實現 Key 的去重 ,所以key是需要重寫這個方法。)

 

    (5)mysql中的分頁查詢語句中limit兩個參數分別代表什么意思?

select * from table [offset,] rows | rows OFFSET offset

      LIMIT 子句可以被用於強制 SELECT 語句返回指定的記錄數。LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1)

    (6)Mybatis中#{}和${}的區別?

    點擊看這篇博客:https://www.cnblogs.com/zqr99/p/8094234.html

  3.最后會從個人寫的項目引發出一些問題進行提問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM