我已經有很長一段時間沒有更新博客了,難道是博主我變懶惰了嗎?哎,這樣可不行啊,我還有好多知識要學習,要和大家分享。以后我需要更加努力,改掉自己的惰性。本人文采不怎么樣,只能是把自己所想的說出來,想和大家一起分享知識,互相學習,豐富自己,所以在文采方面,大家多多體諒體諒。我盡可能的去寫好每一篇博客,讓大家方便閱讀和了解。
最近我去面試了幾家公司,是關於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.最后會從個人寫的項目引發出一些問題進行提問。