無論是工作多年的高級開發人員還是剛入職場的新人,在換工作面試的過程中,Java基礎是必不可少的面試題之一。能不能順利通過面試,拿到自己理想的offer,在準備面試的過程中,Java基礎也是很關鍵的。對于工作多年的開發人員來說,Java基礎往往是會被大家所忽略的,但在面試的過程中,確是必不可少的問題。在這篇文章里就來為大家總結一下經常會被問到的Java基礎題。
helloworld
1.Java面向對象的三大特征
答:封裝,繼承,多態
評論:對于剛入職場的新人來說,這個回答就可以了,但對于工作多年的高級開發人員來說,這個回答是遠遠不夠的。你需要對這大三特征有比較深刻的認識才可以。封裝表面上看就把描述一個對象的屬性和行為封裝成一個類,把業務邏輯封裝成方法,封裝的另一層含義在于通過修飾符控制類的訪問屬性(公有,私有等)。繼承主要是實現了代碼的復用,所有子類公用的行為和屬性可以抽取為一個父類,所有子類繼承了父類的屬性和行為,java中繼承是單一性的。多態:程序中定義的引用類型變量所指向的具體類型和調用的具體方法在程序編譯階段無法確定,而是在運行期才能確定該引用類型變量指向具體哪個對象而調用在哪個類中聲明的方法。多態的表現形式有強制類型轉換,向上構造等。多態可分為行為多態和對象多態。
2.Java的基本數據類型
答:基本數據類型有,byte,short,int,long,float,double,char,boolean這8種。
評論:在實際面試過程中一般不會這么問你,一般會拿一個具體的問題考你。比如讓你設計一個和訂單金額有關的數據結構,或者問你數據類型里的隱式轉換(int-Integer)相關的,這些都是考察基本功。
3.Java的修飾符
答:private,protected,public,default
評論:這里知道這幾種修飾符的作用范圍之外,還有一些比較深層次的也要注意一下。有一次我被問到如何去訪問一個private修飾的方法。這里有一種方法就是通過反射可以實現對private的訪問。
4.Java的運算符
答:Java是一門強類型的語言,運算符基本可以為分6類:算數運算符,賦值運算符,關系運算符,邏輯運算符,位運算符,條件運算符。
評論:運算符的考察,一般會給你一個實際的題讓你算結果,通常考基本功的話會問你一些位運算,或者和運算符優先級相關的題。
5.Java的String,StringBuffer,StringBuilder類用法與區別?
答:String類適用于少量字符串的操作,StringBuilder適用于單線程下在字符緩沖區進行大量操作的情況,StringBuffer適用多線程下在字符緩沖區進行大量操作的情況。
評論:考察java字符串的基礎通常會圍繞這3個類展開。一般回答的時候要圍繞運算速度和線程安全這兩個方面展開。
6.兩個對象的hashCode()相同,則equals()也一定為true嗎?
答:不一定相同。正常情況下,因為equals()方法比較的就是對象在內存中的值,如果值相同,那么Hashcode值也應該相同。但是如果不重寫hashcode方法,就會出現不相等的情況。
7.Java中的Override與Overload的區別?
答:overload在相同的類范圍內執行,override發生在具有繼承關系的兩個類。
評論:要回答的完美,還需要從目的,范圍,參數,多態性,返回類型這幾個方面回答。
8.final在Java中的作用?
答:在java中有4種用法,1.修飾數據,2.修飾方法參數,3.修飾方法,4修飾類
評論:1.修飾數據,包括成員變量,局部變量,則變量只能被賦值一次。2.修飾方法參數,表示變量在生命周期只能被賦值 一次。3.修飾方法,表示該方法不能被重寫。4.修飾類表示該類不能被繼承
9.如何將字符串反轉?
答:有很多種,如通過char數組,StringBuffer的reverse等
10.String類的常用方法有哪些?
答:常用方法,new String,length,charAt,subString,compareTo,compareToIgnore,equals,equalsIgnoreCase,concat,indexOf,replace,replaceAll,trim,startWith等
11.Object類有哪些常用的方法?
答:這個類是所有java對象的父類,常用方法toString,equals,hashCode
12.抽象類必須要有抽象方法嗎?
答:可以沒有抽象方法,但抽象方法一定在抽象類中。
13.抽象類與接口的區別?
答:抽象類是用來捕捉子類的通用特性的 。它不能被實例化,只能被用作子類的超類。接口是抽象方法的集合。如果一個類實現了某個接口,那么它就繼承了這個接口的抽象方法。這里主說一下用法:如果你擁有一些方法并且想讓它們中的一些有默認實現,那么使用抽象類。如果基本功能在不斷改變,那么也使用抽象類。如果你想實現多重繼承,那么你必須使用接口。
14.抽象類可以用final修飾嗎?
答:不可以,final修飾的類的是不可以被繼承的
15.String類為什么是final類型的?
答:可以從這3方面回答,1.為了實現字符串池,2.為了線程安全,3.為了實現String可以創建HashCode不可變性。
評論:這題主要從Final修飾符的理解去回答即可。
希望對大家有所幫助