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