更新時間:2019-07-17 11:35:09 來源:動力節點 瀏覽2544次
中級Java工程師面試知識點,當你經歷過一次工作變動,你才知道你到底是一個怎樣的人,你在行業處于一個什么樣地位,你有什么是讓企業給你行業標準薪資又或者說高于標準薪資的能力?當你經歷過這些,你才知道自己到底有幾斤幾兩。本篇微博算是一次總結,希望在今后能夠在工作中,年限在增長,經驗與能力也要與之匹配。
基本語法:
Static,Transient,foreach循環的原理,Switch,java反射機制,單線程安全類demo,常規算法等關鍵字作用,至少掌握其用法和場景
Exception和Error區別
Exception是程序錯誤,可控或不可控,可在程序中捕獲異常
Error是系統異常,不可控,可能的話可在系統中捕獲異常
java.util.Date和java.sql.Date的區別及應用
java.util.Date就是在除了SQL語句的情況下面使用
java.sql.Date是針對SQL語句使用的,它只包含日期而沒有時間部分,它都有getTime方法返回毫秒數,自然就可以直接構建
java.util.Date是java.sql.Date的父類
java.util.Dated=newjava.util.Date(sqlDate.getTime());
java.util.Dated=newjava.util.Date(date.getTime());
集合
集合的結構
其中ArrayList和HashMap用到特別多,也是被問到特別多的地方
ArrayList原理
以數組實現。節約空間,但數組有容量限制。
超出限制時會增加50%容量,用System.arraycopy()復制到新的數組,因此最好能給出數組大小的預估值。默認第一次插入元素時創建大小為10的數組。
按數組下標訪問元素—get(i)/set(i,e)的性能很高,這是數組的基本優勢。
直接在數組末尾加入元素—add(e)的性能也高,但如果按下標插入、刪除元素—add(i,e),remove(i),remove(e),則要用System.arraycopy()來移動部分受影響的元素,性能就變差了,這是基本劣勢。
特點:
是一個相對來說比較簡單的數據結構,最重要的一點就是它的自動擴容,可以認為就是我們常說的“動態數組”。
其中操作可以理解為直接將數組的內容置位,remove操作可以理解為刪除index為0的節點,并將后面元素移到0處
LinkedList原理:
Hashtable原理:
HashMap原理:
HashMap基于hashing原理,我們通過put()和get()方法儲存和獲取對象。
當我們將鍵值對傳遞給put()方法時,它調用鍵對象的hashCode()方法來計算hashcode,讓后找到bucket位置來儲存值對象。
當獲取對象時,通過鍵對象的equals()方法找到正確的鍵值對,然后返回值對象。
碰撞:
HashMap使用LinkedList來解決碰撞問題,當發生碰撞了,對象將會儲存在LinkedList的下一個節點中。HashMap在每個LinkedList節點中儲存鍵值對對象。
當兩個不同的鍵對象的hashcode相同時會發生什么?它們會儲存在同一個bucket位置的LinkedList中。鍵對象的equals()方法用來找到鍵值對
負載因子:
默認負載因子大小0.75
當map填滿75%的bucket時候,和其他集合類一樣(ArrayList)將會創建原來HashMapda大小兩倍的bucket數組
重新調整map大小,并將原來的對象放入新的bucket數組中,此過程稱之為rehashing
集合為什么不直接實例化接口
Setset=newHashSet()而不是Setset=newSet()
Mapmap=newHashMap()而不是HashMapmap=newHashMap()
Listlist=newArrayList()而不是ArrayListlist=newArrayList();
1.Set,List,map是接口,不能實例化,只能實例化接口實現類,HashSet,ArrayList,HashMap
2.實現類中的屬性和方法set,map,list不能調用,只能調用接口本身屬性和方法
3.接口有多個實現類,便于代碼的重構,以后只需改實現類,其他可不變
Eg:我是老板A,有兩個員工B,C。我現在有一個任務,目的是完成任務,須根據我的想法授權于B或者C,不能讓B自己按自己想法完成(Bb=newB()),若后面老板想換人(Aa=newC())
數據庫
數據庫十有八九也都會問到。一些基本的像rightjoin、fulljoin、leftjoin、幾種索引及其區別就不談了,比較重要的就是數據庫性能的優化,如果對于數據庫的性能優化一竅不通,那么有時間,還是建議你在面試前花一兩天專門把SQL基礎和SQL優化的內容準備一下。
不過數據庫倒是不用擔心,一家公司往往有很多部門,如果你對數據庫不熟悉而基本技術又非常好,九成都是會要你的,估計會先把你放到對數據庫使用不是要求非常高的部門鍛煉一下。
相關閱讀
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習