分享一下:Java初學(xué)者入門(mén)應該掌握的30個(gè)概念核心提示:OOP中唯一關(guān)系的是對象的接口是什么,就像計算機的銷(xiāo)售商她不管電源內部結構 是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道can or not而不是how and why。
基本概念: 1.OOP中唯一關(guān)系的是對象的接口是什么,就像計算機的銷(xiāo)售商她不管電源內部結構 是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道can or not而不是how and why。所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪(fǎng)問(wèn)通過(guò)函數調用來(lái)完成,對象間所有的交流都是通過(guò)方法調用,通過(guò)對封裝對象數據,很大 限度上提高復用率。
2.OOP中最重要的思想是類(lèi),類(lèi)是模板是藍圖,從類(lèi)中構造一個(gè)對象,即創(chuàng )建了這個(gè)類(lèi)的一個(gè)實(shí)例(instance)。3.封裝:就是把數據和行為結合起在一個(gè)包中)并對對象使用者隱藏數據的實(shí)現過(guò)程,一個(gè)對象中的數據叫他的實(shí)例字段(instance field)。
4.通過(guò)擴展一個(gè)類(lèi)來(lái)獲得一個(gè)新類(lèi)叫繼承(inheritance),而所有的類(lèi)都是由Object根超類(lèi)擴展而得,根超類(lèi)下文會(huì )做介紹。5.對象的3個(gè)主要特性 ehavior---說(shuō)明這個(gè)對象能做什么。
tate---當對象施加方法時(shí)對象的反映。 dentity---與其他相似行為對象的區分標志。
每個(gè)對象有唯一的indentity 而這3者之間相互影響。6.類(lèi)之間的關(guān)系: use-a :依賴(lài)關(guān)系 has-a :聚合關(guān)系 is-a :繼承關(guān)系--例:A類(lèi)繼承了B類(lèi),此時(shí)A類(lèi)不僅有了B類(lèi)的方法,還有其自己的方法.(個(gè)性存在于共性中)7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象并對其初始化。
例:Data類(lèi)的構造器叫Data ew Data()---構造一個(gè)新對象,且初始化當前時(shí)間。 Data happyday=new Data()---把一個(gè)對象賦值給一個(gè)變量happyday,從而使該對象能夠多次使用,此處要聲明的使變量與對象變量二者是不同的.new返回的值是一個(gè)引用。
構造器特點(diǎn):構造器可以有0個(gè),一個(gè)或多個(gè)參數; 構造器和類(lèi)有相同的名字;一個(gè)類(lèi)可以有多個(gè)構造器;構造器沒(méi)有返回值;構造器總是和new運算符一起使用。8.重載:當多個(gè)方法具有相同的名字而含有不同的參數時(shí),便發(fā)生重載.編譯器必須挑選出調用哪個(gè)方法。
9.包(package)Java允許把一個(gè)或多個(gè)類(lèi)收集在一起成為一組,稱(chēng)作包,以便于組織任務(wù),標準Java庫分為許多包。java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內。
10.繼承思想:允許在已經(jīng)存在的類(lèi)的基礎上構建新的類(lèi),當你繼承一個(gè)已經(jīng)存在的類(lèi)時(shí),那么你就復用了這個(gè)類(lèi)的方法和字段,同時(shí)你可以在新類(lèi)中添加新的方法和字段。11.擴展類(lèi):擴展類(lèi)充分體現了is-a的繼承關(guān)系. 形式為:class (子類(lèi)) extends (基類(lèi))。
12.多態(tài):在java中,對象變量是多態(tài)的.而java中不支持多重繼承。13.動(dòng)態(tài)綁定:調用對象方法的機制。
(1)編譯器檢查對象聲明的類(lèi)型和方法名。 (2)編譯器檢查方法調用的參數類(lèi)型。
(3)靜態(tài)綁定:若方法類(lèi)型為priavte static final 編譯器會(huì )準確知道該調用哪個(gè)方法。 (4)當程序運行并且使用動(dòng)態(tài)綁定來(lái)調用一個(gè)方法時(shí),那么虛擬機必須調用x所指向的對象的實(shí)際類(lèi)型相匹配的方法版本。
(5)動(dòng)態(tài)綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。14.final類(lèi):為防止他人從你的類(lèi)上派生新類(lèi),此類(lèi)是不可擴展的。
15.動(dòng)態(tài)調用比靜態(tài)調用花費的時(shí)間要長(cháng)。16.抽象類(lèi):規定一個(gè)或多個(gè)抽象方法的類(lèi)本身必須定義為abstract。
例: public abstract string getDescripition17.Java中的每一個(gè)類(lèi)都是從Object類(lèi)擴展而來(lái)的。18.object類(lèi)中的equal和toString方法。
equal用于測試一個(gè)對象是否同另一個(gè)對象相等。 toString返回一個(gè)代表該對象的字符串,幾乎每一個(gè)類(lèi)都會(huì )重載該方法,以便返回當前狀態(tài)的正確表示。
(toString 方法是一個(gè)很重要的方法)19.通用編程:任何類(lèi)類(lèi)型的所有值都可以同object類(lèi)性的變量來(lái)代替。20.數組列表:ArrayList動(dòng)態(tài)數組列表,是一個(gè)類(lèi)庫,定義在java.uitl包中,可自動(dòng)調節數組的大校21.class類(lèi) object類(lèi)中的getclass方法返回ckass類(lèi)型的一個(gè)實(shí)例,程序啟動(dòng)時(shí)包含在main方法的類(lèi)會(huì )被加載,虛擬機要加載他需要的所有類(lèi),每一個(gè)加載的類(lèi)都要加載它需要的類(lèi)。
22.class類(lèi)為編寫(xiě)可動(dòng)態(tài)操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具。能夠分析類(lèi)能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大。
A.在運行時(shí)分析類(lèi)的能力。 B.在運行時(shí)探察類(lèi)的對象。
C.實(shí)現通用數組操縱代碼。 D.提供方法對象。
而此機制主要針對是工具者而不是應用及程序。 反射機制中的最重要的部分是允許你檢查類(lèi)的結構.用到的API有: java.lang.reflect.Field 返回字段。
java.reflect.Method 返回方法。 java.lang.reflect.Constructor 返回參數。
方法指針:java沒(méi)有方法指針,把一個(gè)方法的地址傳給另一個(gè)方法,可以在后面調用它,而接口是更好的解決方案。23.接口(Interface)說(shuō)明類(lèi)該做什么而不指定如何去做,一個(gè)類(lèi)可以實(shí)現一個(gè)或多個(gè)interface。
24.接口不是一個(gè)類(lèi),而是對符合接口要求。
下面是10道java基礎面試題,后附答案1.什么是 Java 虛擬機?為什么 Java 被稱(chēng)作是“平臺無(wú)關(guān)的編程語(yǔ)言”?Java 虛擬機是一個(gè)可以執行 Java 字節碼的虛擬機進(jìn)程。
Java 源文件被編譯成能被 Java 虛擬機執行的字節碼文件。Java 被設計成允許應用程序可以運行在任意的平臺,而不需要程序員為每一個(gè)平臺單獨重寫(xiě)或者是重新編譯。
Java 虛擬機讓這個(gè)變?yōu)榭赡埽驗樗赖讓佑布脚_的指令長(cháng)度和其他特性。2.“static”關(guān)鍵字是什么意思?Java 中是否可以覆蓋(override)一個(gè) private 或者是static 的方法?“static”關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒(méi)有所屬的類(lèi)的實(shí)例變量的情況下被訪(fǎng)問(wèn)。
Java 中 static 方法不能被覆蓋,因為方法覆蓋是基于運行時(shí)動(dòng)態(tài)綁定的,而 static 方法是編譯時(shí)靜態(tài)綁定的。static 方法跟類(lèi)的任何實(shí)例都不相關(guān),所以概念上不適用。
3.JDK 和 JRE 的區別是什么?Java 運行時(shí)環(huán)境(JRE)是將要執行 Java 程序的 Java 虛擬機。它同時(shí)也包含了執行 applet 需要的瀏覽器插件。
Java 開(kāi)發(fā)工具包 (JDK)是完整的 Java 軟件開(kāi)發(fā)包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調試器),可以讓開(kāi)發(fā)者開(kāi)發(fā)、編譯、執行 Java 應用程序。4.是否可以在 static 環(huán)境中訪(fǎng)問(wèn)非 static 變量?static 變量在 Java 中是屬于類(lèi)的,它在所有的實(shí)例中的值是一樣的。
當類(lèi)被 Java 虛擬機載入的時(shí)候,會(huì )對 static 變量進(jìn)行初始化。如果你的代碼嘗試不用實(shí)例來(lái)訪(fǎng)問(wèn)非 static 的變量,編譯器會(huì )報錯,因為這些變量還沒(méi)有被創(chuàng )建出來(lái),還沒(méi)有跟任何實(shí)例關(guān)聯(lián)上。
5.Java 支持的數據類(lèi)型有哪些?什么是自動(dòng)拆裝箱?Java 語(yǔ)言支持的 8 中基本數據類(lèi)型是:?byte?short?int?long?float?double?boolean?char自動(dòng)裝箱是 Java 編譯器在基本數據類(lèi)型和對應的對象包裝類(lèi)型之間做的一個(gè)轉化。比如:把 int 轉化成 Integer,double 轉化成 double,等等。
反之就是自動(dòng)拆箱。6.Java 支持多繼承么?不支持,Java 不支持多繼承。
每個(gè)類(lèi)都只能繼承一個(gè)類(lèi),但是可以實(shí)現多個(gè)接口。7.Java 中,什么是構造函數?什么是構造函數重載?什么是復制構造函數?當新對象被創(chuàng )建的時(shí)候,構造函數會(huì )被調用。
每一個(gè)類(lèi)都有構造函數。在程序員沒(méi)有給類(lèi)提供構造函數的情況下,Java 編譯器會(huì )為這個(gè)類(lèi)創(chuàng )建一個(gè)默認的構造函數。
Java 中構造函數重載和方法重載很相似。可以為一個(gè)類(lèi)創(chuàng )建多個(gè)構造函數。
每一個(gè)構造函數必須有它自己唯一的參數列表。Java 不支持像 C++中那樣的復制構造函數,這個(gè)不同點(diǎn)是因為如果你不自己寫(xiě)構造函數的情況下,Java 不會(huì )創(chuàng )建默認的復制構造函數。
8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?Java 中的方法重載發(fā)生在同一個(gè)類(lèi)里面兩個(gè)或者是多個(gè)方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說(shuō)子類(lèi)重新定義了父類(lèi)的方法。
方法覆蓋必須有相同的方法名,參數列表和返回類(lèi)型。覆蓋者可能不會(huì )限制它所覆蓋的方法的訪(fǎng)問(wèn)。
9.接口和抽象類(lèi)的區別是什么?Java 提供和支持創(chuàng )建抽象類(lèi)和接口。它們的實(shí)現有共同點(diǎn),不同點(diǎn)在于:?接口中所有的方法隱含的都是抽象的。
而抽象類(lèi)則可以同時(shí)包含抽象和非抽象的方法。?類(lèi)可以實(shí)現很多個(gè)接口,但是只能繼承一個(gè)抽象類(lèi)?類(lèi)如果要實(shí)現一個(gè)接口,它必須要實(shí)現接口聲明的所有方法。
但是,類(lèi)可以不實(shí)現抽象類(lèi)聲明的所有方法,當然,在這種情況下,類(lèi)也必須得聲明成是抽象的。?抽象類(lèi)可以在不提供接口方法實(shí)現的情況下實(shí)現接口。
?Java 接口中聲明的變量默認都是 final 的。抽象類(lèi)可以包含非 final 的變量。
?Java 接口中的成員函數默認是 public 的。抽象類(lèi)的成員函數可以是 private, protected 或者是 public。
?接口是絕對抽象的,不可以被實(shí)例化。抽象類(lèi)也不可以被實(shí)例化,但是,如果它包含 main 方法的話(huà)是可以被調用的。
10.什么是值傳遞和引用傳遞?對象被值傳遞,意味著(zhù)傳遞了對象的一個(gè)副本。因此,就算是改變了對象副本,也不會(huì )影響源對象的值。
對象被引用傳遞,意味著(zhù)傳遞的并不是實(shí)際的對象,而是對象的引用。因此,外部對引用對象所做的改變會(huì )反映到所有的對象上。
最后祝你面試順利。
一般面試官都會(huì )讓面試者回答哪些Java基礎面試題啊?難不難啊? 針對這一系列的疑問(wèn),廣州增城Java培訓學(xué)校收集了部分Java基礎面試題與大家分享,希望對各位參加了廣州專(zhuān)業(yè)Java培訓的學(xué)生,有一定的幫助! 一、Java基礎知識 1.Java有那些基本數據類(lèi)型,String是不是基本數據類(lèi)型,他們有何區別。
2.字符串的操作: 寫(xiě)一個(gè)方法,實(shí)現字符串的反轉,如:輸入abc,輸出cba 寫(xiě)一個(gè)方法,實(shí)現字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。 3.數據類(lèi)型之間的轉換 如何將數值型字符轉換為數字(Integer,Double) 如何將數字轉換為字符 如何取小數點(diǎn)前兩位,并四舍五入。
4.日期和時(shí)間 如何取得年月日,小時(shí)分秒 如何取得從1970年到現在的毫秒數 如何獲取某個(gè)日期是當月的最后一天 如何格式化日期 5.數組和集合 6.文件和目錄(I/O)操作 如何列出某個(gè)目錄下的所有文件 如何列出某個(gè)目錄下的所有子目錄 判斷一個(gè)文件或目錄是否存在 如何讀寫(xiě)文件 7.Java多態(tài)的實(shí)現(繼承、重載、覆蓋) 8.編碼轉換,怎樣實(shí)現將GB2312編碼的字符串轉換為ISO-8859-1編碼的字符串。 9.Java中訪(fǎng)問(wèn)數據庫的步驟,Statement和PreparedStatement之間的區別。
10.找出下列代碼可能存在的錯誤,并說(shuō)明原因: 二、JSP&Servlet技術(shù) 1.描述JSP和Servlet的區別、共同點(diǎn)、各自應用的范圍 2.在Web開(kāi)發(fā)中需要處理HTML標記時(shí),應做什么樣的處理,要篩選那些字符( & “”) 3.在JSP中如何讀取客戶(hù)端的請求,如何訪(fǎng)問(wèn)CGI變量,如何確定某個(gè)Jsp文件的真實(shí)路徑。 4.描述Cookie和Session的作用,區別和各自的應用范圍,Session工作原理。
5.列出Jsp中包含外部文件的方式,兩者有何區別。 6.說(shuō)明Jsp中errorPage的作用,應用范圍。
7.介紹在Jsp中如何使用JavaBeans。 8.簡(jiǎn)單介紹JSP的標記庫 9.Jsp和Servlet中的請求轉發(fā)分別如何實(shí)現。
三、J2EE相關(guān)知識 1.介紹J2EE、J2SE、J2SE的區別。 2.J2EE是一種技術(shù)還是一種平臺,他提供了那些技術(shù)。
3.什么是Application Server,它有什么功能和優(yōu)點(diǎn)。 4.簡(jiǎn)單介紹連接池的優(yōu)點(diǎn)和原理。
5.Web.xml的作用 四、其他 1.Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程序的安全性,SSL,代碼考慮) 2.簡(jiǎn)單介紹您所了解的MVC。 3.簡(jiǎn)單介紹所了解的XML。
4.文檔和編碼規范 5.Java中的分頁(yè)、效率考慮。 6.簡(jiǎn)單介紹您所了解的structs。
Java面試題收藏: 1.xml在項目中的作用 2.s-EJB 與 e-EJB的區別 3.會(huì )話(huà)面的作用 4.cmp與bmp的優(yōu)缺點(diǎn) 5.j2me程序的必需的幾個(gè)部分 6.c/s與b/s的區別 7.構建一個(gè)connect pool然后再調用它, 8.j2ee平臺與dotnet平臺的區別 9.ejb的life cycle 10.session bean 和 entity bean的區別 11.ejb中的transaction機制 12.synchronized (生產(chǎn)者和消費) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp與udp的區別 18.鏈表與散列表和數組的區別 19.堆和棧的區別 20.ejb的分類(lèi)及區別 21.你對現在軟件業(yè)以及國內軟件業(yè)的看法 22.談?wù)刯ava多線(xiàn)程 23.談?wù)勎募用芗夹g(shù) 24.軟件開(kāi)發(fā)生命周期 25.路由協(xié)議種類(lèi)及特點(diǎn) 26.java的awt和swing組件的GUI設計的關(guān)鍵 27.對于java流的認識 28.簡(jiǎn)單描述一下awt與swing區別。 29.簡(jiǎn)述java編程中事件處理模式。
30.你編寫(xiě)過(guò)applet嗎?applet的安全權限如何?試列舉java application或者applet中與servlet/jsp通信可以采用的方式。 31.簡(jiǎn)述邏輯操作(如&|)與條件操作(如&&||)的區別。
第一,談?wù)刦inal, finally, finalize的區別。
final 用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,類(lèi)不可繼承。finally是異常處理語(yǔ)句結構的一部分,表示總是執行。
finalize是 Object類(lèi)的一個(gè)方法,在垃圾收集器執行的時(shí)候會(huì )調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。 第二,Anonymous Inner Class (匿名內部類(lèi)) 是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現)interface(接口)? 可以繼承其他類(lèi)或完成其他接口,在swing編程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統)。 Static Nested Class是被聲明為靜態(tài)(static)的內部類(lèi),它可以不依賴(lài)于外部類(lèi)實(shí)例被實(shí)例化。
而通常的內部類(lèi)需要在外部類(lèi)實(shí)例化后才能實(shí)例化。 第四,&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。 第五,HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實(shí)現(非線(xiàn)程安全的實(shí)現),他們都完成了Map接口,主要區別在于HashMap允許空(null)鍵值(key),由于非線(xiàn)程安全,效率上可能高于Hashtable。 第六,Collection 和 Collections的區別。
Collection是集合類(lèi)的上級接口,繼承與他的接口主要有Set 和List。Collections是針對集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現對各種集合的搜索、排序、線(xiàn)程安全化等操作。
第七,什么時(shí)候用assert。 1。
4新增關(guān)鍵字(語(yǔ)法),用于測試boolean表達式狀態(tài),可用于調試程序。使用方法 assert ,表示如果表達式為真(true),則下面的語(yǔ)句執行,否則拋出AssertionError。
另外的使用方式assert :,表示如果表達式為真,后面的表達式忽略,否則后面表達式的值用于A(yíng)ssertionError的構建參數。 注意編譯時(shí)要增加-source 1。
4 參數,否則報錯。]運行時(shí)要增加 –ea參數,否則assert行被忽略 第八,GC是什么? 為什么要有GC? GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問(wèn)題的地方,忘記或者錯誤的內存回收會(huì )導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以 自動(dòng)監測對象是否超過(guò)作用域從而達到自動(dòng)回收內存的目的,Java語(yǔ)言沒(méi)有提供釋放已分配內存的顯示操作方法。
第九,String s = new String("xyz");創(chuàng )建了幾個(gè)String Object? 兩個(gè) 第十,Math。round(11。
5)等於多少? Math。round(-11。
5)等於多少? Math。round(11。
5)==12Math。round(-11。
5)==-11round方法返回與參數最接近的長(cháng)整數,參數加1/2后求其floor。 第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類(lèi)型)short s1 = 1; s1 += 1;(可以正確編譯) 第十二,sleep() 和 wait() 有什么區別? sleep是線(xiàn)程類(lèi)(Thread)的方法,導致此線(xiàn)程暫停執行指定時(shí)間,給執行機會(huì )給其他線(xiàn)程,但是監控狀態(tài)依然保持,到時(shí)后會(huì )自動(dòng)恢復。
調用 sleep不會(huì )釋放對象鎖。wait是Object類(lèi)的方法,對此對象調用wait方法導致本線(xiàn)程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對 象發(fā)出notify方法(或notifyAll)后本線(xiàn)程才進(jìn)入對象鎖定池準備獲得對象鎖進(jìn)入運行狀態(tài)。
第十三,Java有沒(méi)有g(shù)oto? 沒(méi)有 很十三的問(wèn)題,如果哪個(gè)面試的問(wèn)到這個(gè)問(wèn)題,我勸你還是別進(jìn)這家公司。第十四,數組有沒(méi)有length()這個(gè)方法? String有沒(méi)有length()這個(gè)方法? 數組沒(méi)有length()這個(gè)方法,有length的屬性。
String有有length()這個(gè)方法。第十五,Overload和Override的區別。
Overloaded的方法是否可以改變返回值的類(lèi)型? 方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現, 重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現。
如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數,我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對象使用這個(gè)方法時(shí),將調用子類(lèi)中的定義,對它而言,父類(lèi)中的定義如同被“屏蔽”了。
如果在一個(gè)類(lèi)中定義了多個(gè)同名的方 法,它們或有不同的參數個(gè)數或有不同的參數類(lèi)型,則稱(chēng)為方法的重載(Overloading)。 Overloaded的方法是可以改變返回值的類(lèi)型。
第一,談?wù)刦inal, finally, finalize的區別。
final 用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,類(lèi)不可繼承。finally 是異常處理語(yǔ)句結構的一部分,表示總是執行。
finalize 是Object類(lèi)的一個(gè)方法,在垃圾收集器執行的時(shí)候會(huì )調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。 第二,Anonymous Inner Class (匿名內部類(lèi)) 是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現)interface(接口) 可以繼承其他類(lèi)或完成其他接口,在swing編程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統)。 Static Nested Class是被聲明為靜態(tài)(static)的內部類(lèi),它可以不依賴(lài)于外部類(lèi)實(shí)例被實(shí)例化。
而通常的內部類(lèi)需要在外部類(lèi)實(shí)例化后才能實(shí)例化。 第四,&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。 第五,HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實(shí)現(非線(xiàn)程安全的實(shí)現),他們都完成了Map接口,主要區別在于HashMap允許空(null)鍵值(key),由于非線(xiàn)程安全,效率上可能高于Hashtable。 第六,Collection 和 Collections的區別。
Collection是集合類(lèi)的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現對各種集合的搜索、排序、線(xiàn)程安全化等操作。 第七,什么時(shí)候用assert。
Java1.4新增關(guān)鍵字(語(yǔ)法),用于測試boolean 表達式狀態(tài),可用于調試程序。使用方法 assert ,表示如果表達式為真(true),則下面的語(yǔ)句執行,否則拋出AssertionError。
另外的使用方式assert boolean表達式,表示如果表達式為真,后面的表達式忽略,否則后面表達式的值用于A(yíng)ssertionError的構建參數。注意編譯時(shí)要增加 -source 1.4 參數,否則報錯。
運行時(shí)要增加 –ea參數,否則assert行被忽略。 第八,GC是什么?為什么要有GC? GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問(wèn)題的地方,忘記或者錯誤的內存回收會(huì )導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動(dòng)監測對象是否超過(guò)作用域從而達到自動(dòng)回收內存的目的,Java語(yǔ)言沒(méi)有提供釋放已分配內存的顯示操作方法。
第九,String s = new String("xyz"); 創(chuàng )建了幾個(gè)String Object? 2個(gè)。首先在數據段創(chuàng )建一個(gè)"xyz"對象,再根據該對象在堆區創(chuàng )建一個(gè)新的對象,在棧區創(chuàng )建變量s,該變量是指向堆區對象的引用。
所以一共兩個(gè)String對象。 第十,Math.round(11.5)等於多少 Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回與參數最接近的長(cháng)整數,參數加12后求其floor。
第十一,short s1 = 1; s1 = s1 + 1; 有什么錯?short s1 = 1; s1 += 1; 有什么錯? s1 + 1運算結果是int型,需要強制轉換類(lèi)型。 s1 += 1; 可以正確編譯。
第十二,sleep() 和 wait() 有什么區別 sleep是線(xiàn)程類(lèi)(Thread)的方法,導致此線(xiàn)程暫停執行指定時(shí)間,給執行機會(huì )給其他線(xiàn)程,但是監控狀態(tài)依然保持,到時(shí)后會(huì )自動(dòng)恢復。調用 sleep不會(huì )釋放對象鎖。
wait是Object類(lèi)的方法,對此對象調用wait方法導致本線(xiàn)程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線(xiàn)程才進(jìn)入對象鎖定池準備獲得對象鎖進(jìn)入運行狀態(tài)。 第十三,Java有沒(méi)有g(shù)oto 沒(méi)有 第十四,數組有沒(méi)有length()這個(gè)方法 String有沒(méi)有length()這個(gè)方法? 數組沒(méi)有length()這個(gè)方法,有length的屬性。
String有length()這個(gè)方法。 來(lái) 第十五,Overload和Override的區別。
Overloaded的方法是否可以改變返回值的類(lèi)型? 方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現,重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現。
如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數,我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對象使用這個(gè)方法時(shí),將調用子類(lèi)中的定義,對它而言,父類(lèi)中的定義如同被“屏蔽”了。
如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數個(gè)數或有不同的參數類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。
第十六,Set里的元素是不能重復的,那么用什么方法來(lái)區分重復與否呢?是用==還是equals()?它們有何區別? Set里的元素是不能重復的,那么用iterator()方法來(lái)區分重復與否。equals()是判讀兩個(gè)Set是否相等。
equals()和==方法決定引用值是否指向同一對象。equals()在類(lèi)中被覆蓋,為的是當兩個(gè)分離的對象的內容和類(lèi)型相配的話(huà),返回真值。
第十七,給我一個(gè)你最常見(jiàn)到的runtime exception。 NullPointerException或者。
(其它:ArithmeticException, ArrayStoreException, , , CannotRedoException, CannotUndoException, ClassCastException, CMMException, 。
一般面試官都會(huì )讓面試者回答哪些Java基礎面試題啊?難不難啊? 針對這一系列的疑問(wèn),廣州增城Java培訓學(xué)校收集了部分Java基礎面試題與大家分享,希望對各位參加了廣州專(zhuān)業(yè)Java培訓的學(xué)生,有一定的幫助! 一、Java基礎知識 1.Java有那些基本數據類(lèi)型,String是不是基本數據類(lèi)型,他們有何區別。
2.字符串的操作: 寫(xiě)一個(gè)方法,實(shí)現字符串的反轉,如:輸入abc,輸出cba 寫(xiě)一個(gè)方法,實(shí)現字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。 3.數據類(lèi)型之間的轉換 如何將數值型字符轉換為數字(Integer,Double) 如何將數字轉換為字符 如何取小數點(diǎn)前兩位,并四舍五入。
4.日期和時(shí)間 如何取得年月日,小時(shí)分秒 如何取得從1970年到現在的毫秒數 如何獲取某個(gè)日期是當月的最后一天 如何格式化日期 5.數組和集合 6.文件和目錄(I/O)操作 如何列出某個(gè)目錄下的所有文件 如何列出某個(gè)目錄下的所有子目錄 判斷一個(gè)文件或目錄是否存在 如何讀寫(xiě)文件 7.Java多態(tài)的實(shí)現(繼承、重載、覆蓋) 8.編碼轉換,怎樣實(shí)現將GB2312編碼的字符串轉換為ISO-8859-1編碼的字符串。 9.Java中訪(fǎng)問(wèn)數據庫的步驟,Statement和PreparedStatement之間的區別。
10.找出下列代碼可能存在的錯誤,并說(shuō)明原因: 二、JSP&Servlet技術(shù) 1.描述JSP和Servlet的區別、共同點(diǎn)、各自應用的范圍 2.在Web開(kāi)發(fā)中需要處理HTML標記時(shí),應做什么樣的處理,要篩選那些字符( & “”) 3.在JSP中如何讀取客戶(hù)端的請求,如何訪(fǎng)問(wèn)CGI變量,如何確定某個(gè)Jsp文件的真實(shí)路徑。 4.描述Cookie和Session的作用,區別和各自的應用范圍,Session工作原理。
5.列出Jsp中包含外部文件的方式,兩者有何區別。 6.說(shuō)明Jsp中errorPage的作用,應用范圍。
7.介紹在Jsp中如何使用JavaBeans。 8.簡(jiǎn)單介紹JSP的標記庫 9.Jsp和Servlet中的請求轉發(fā)分別如何實(shí)現。
三、J2EE相關(guān)知識 1.介紹J2EE、J2SE、J2SE的區別。 2.J2EE是一種技術(shù)還是一種平臺,他提供了那些技術(shù)。
3.什么是Application Server,它有什么功能和優(yōu)點(diǎn)。 4.簡(jiǎn)單介紹連接池的優(yōu)點(diǎn)和原理。
5.Web.xml的作用 四、其他 1.Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程序的安全性,SSL,代碼考慮) 2.簡(jiǎn)單介紹您所了解的MVC。 3.簡(jiǎn)單介紹所了解的XML。
4.文檔和編碼規范 5.Java中的分頁(yè)、效率考慮。 6.簡(jiǎn)單介紹您所了解的structs。
Java面試題收藏: 1.xml在項目中的作用 2.s-EJB 與 e-EJB的區別 3.會(huì )話(huà)面的作用 4.cmp與bmp的優(yōu)缺點(diǎn) 5.j2me程序的必需的幾個(gè)部分 6.c/s與b/s的區別 7.構建一個(gè)connect pool然后再調用它, 8.j2ee平臺與dotnet平臺的區別 9.ejb的life cycle 10.session bean 和 entity bean的區別 11.ejb中的transaction機制 12.synchronized (生產(chǎn)者和消費) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp與udp的區別 18.鏈表與散列表和數組的區別 19.堆和棧的區別 20.ejb的分類(lèi)及區別 21.你對現在軟件業(yè)以及國內軟件業(yè)的看法 22.談?wù)刯ava多線(xiàn)程 23.談?wù)勎募用芗夹g(shù) 24.軟件開(kāi)發(fā)生命周期 25.路由協(xié)議種類(lèi)及特點(diǎn) 26.java的awt和swing組件的GUI設計的關(guān)鍵 27.對于java流的認識 28.簡(jiǎn)單描述一下awt與swing區別。 29.簡(jiǎn)述java編程中事件處理模式。
30.你編寫(xiě)過(guò)applet嗎?applet的安全權限如何?試列舉java application或者applet中與servlet/jsp通信可以采用的方式。 31.簡(jiǎn)述邏輯操作(如&|)與條件操作(如&&||)的區別。
java的基礎知識點(diǎn)就太多了,要說(shuō)也不能窮盡,這個(gè)主要是靠自己在平時(shí)的積累和項目的開(kāi)發(fā)經(jīng)驗,外邊考的多的一般是繼承,多態(tài),線(xiàn)程,集合等等,但是筆試或者是面試中很有可能問(wèn)許多集體的內容,比如hashMap和hashTable的異同點(diǎn),集合的主要框架,這些要多看資料,我的建議是到網(wǎng)上去多下點(diǎn)筆試題,看到了就會(huì )有感覺(jué),基礎知識牢靠的話(huà),筆試很容易過(guò)。
面試的時(shí)候(我只能說(shuō)關(guān)于技術(shù)的部分),java web面試,首先面試官要看你有沒(méi)有項目的經(jīng)驗,所以簡(jiǎn)歷中肯定要有項目的經(jīng)驗。再者,簡(jiǎn)歷中的項目一定要是你親身經(jīng)歷的,或者是你對這個(gè)項目很了解(不論是從技術(shù)或者是從源碼),因為面試官在你介紹的項目的時(shí)候很可能打斷你要你介紹具體的實(shí)現方法。
在介紹自己項目的時(shí)候,一定要發(fā)覺(jué)自己在項目中的閃光點(diǎn),也就是有和一般的項目有重大區別的地方(可以對面試官詳訴)。然后就是你在項目中所使用的技術(shù),你要有一定的了解,比如說(shuō)spring,你首先要知道使用spring框架的好處,然后就是spring的主要組成(ioc和aop),當然面試官回問(wèn)一些關(guān)于技術(shù)的實(shí)際問(wèn)題(比如說(shuō)加載的applicationContext.xml可不可以改名字,怎么實(shí)現),這個(gè)就看你的項目經(jīng)驗了。
總的來(lái)說(shuō),關(guān)于技術(shù)方面你要知道使用技術(shù)的優(yōu)點(diǎn),基本的組成,這個(gè)可以多網(wǎng)上去搜索關(guān)于特定技術(shù)的面試問(wèn)題。Mybatis我不是很懂所以給不了你答案,Struts好像學(xué)java web的都在用,但在實(shí)際開(kāi)發(fā)中好像用的真的不是很多,面試的問(wèn)題一般是關(guān)于它的配置問(wèn)題,比如要返回一個(gè)json對象怎么設置,幾個(gè)配置文件怎么糅合,我也不知道說(shuō)什么好,如果可以的話(huà),還是上網(wǎng)上搜搜看。
好了,說(shuō)的就是這么多,希望你能有收獲。
1、相比編程題,問(wèn)概念的相對較多,畢竟面試官要了解你的Java基礎,知識面。
2、編程題也有,一般都是些算法。算法考的就是你的數據結構、思維邏輯的靈活度。
3、看你面試的職位,如果是web開(kāi)發(fā),會(huì )有一些j2ee常用框架的問(wèn)題及一些中間件相關(guān)的內容
4、如果職位非初級,可能還會(huì )有一些常用設計模式,sql、uml方面的知識點(diǎn)。
5、題目的來(lái)源一般都是以書(shū)本為主,該公司職位工作常用的知識點(diǎn)為出發(fā)點(diǎn)。
總之,只要你基礎相對扎實(shí),再看點(diǎn)自己所找工作相關(guān)的面試題,一般面試都有很大勝算。
有問(wèn)題歡迎提問(wèn),滿(mǎn)意請采納!
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.040秒