




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
聲明:答案僅供參考,不作唯一性解答項(xiàng)目一通信市場(chǎng)營(yíng)銷概述一、單選題1、B
2、A3、D4、A5、B6、A7、C8、C9、C10、A二、填空題1、通信設(shè)備市場(chǎng)、通信運(yùn)營(yíng)市場(chǎng)、通信工程建設(shè)市場(chǎng)2、人口、購(gòu)買力、購(gòu)買欲望3、人的需要和欲望4、生產(chǎn)觀念、產(chǎn)品觀念、推銷觀念、市場(chǎng)營(yíng)銷觀念、社會(huì)市場(chǎng)營(yíng)銷觀念5、消費(fèi)者(Consumer)、成本(Cost)、便利(Convenience)、溝通(Communication)三、判斷題1、錯(cuò)誤2、錯(cuò)誤3、正確4、正確5、錯(cuò)誤6錯(cuò)誤7、錯(cuò)誤8、錯(cuò)誤9、正確10、正確學(xué)習(xí)領(lǐng)域2Java集合框架課后習(xí)題一、填空題1.___有___,___可以___
2.___無(wú)___,____不可以__3.__可以______不可以___4.覆蓋__________,____添加__________5.___1___,________key_________。6.__HashMap_______和_____LinkedHashMap___7.法___keySet__,___Set____8._____values______,__Collection_____9.____entrySey_______,___Map.Entry____10._____ArrayList______、_____LinkedList______二、單選題1.(D)2.(D)3.B)
4.(A)5.(B)6.(A)7.(A)8.(C)9.(B)10.(D)11.(D)12.(D)
13.(D)14.(D)15.(B16.(C)17.C).18.(B)19.(A).20.(B)三、簡(jiǎn)答題1.Java集合框架是什么?集合框架的優(yōu)點(diǎn)有哪些?答題要點(diǎn):在Java語(yǔ)言中,Java語(yǔ)言的設(shè)計(jì)者對(duì)常用的數(shù)據(jù)結(jié)構(gòu)和算法做了一些規(guī)范(接口)和實(shí)現(xiàn)(具體實(shí)現(xiàn)接口的類)。所有抽象出來(lái)的數(shù)據(jù)結(jié)構(gòu)和操作(算法)統(tǒng)稱為Java集合框架(JavaCollectionFramework)。集合框架是一個(gè)用來(lái)代表和操縱集合的統(tǒng)一架構(gòu),包括所有集合接口、實(shí)現(xiàn)和算法。集合框架的部分優(yōu)點(diǎn)如下:(1)使用核心集合類降低開(kāi)發(fā)成本,而非實(shí)現(xiàn)我們自己的集合類。(2)隨著使用經(jīng)過(guò)嚴(yán)格測(cè)試的集合框架類,代碼質(zhì)量會(huì)得到提高。(3)通過(guò)使用JDK附帶的集合類,可以降低代碼維護(hù)成本。(4)復(fù)用性和可操作性。Java集合框架的基礎(chǔ)接口有哪些?答題要點(diǎn):Collection:代表一組對(duì)象,每一個(gè)對(duì)象都是它的子元素。Set:不包含重復(fù)元素的Collection。List:有順序的collection,并且可以包含重復(fù)元素。Map:可以把鍵(key)映射到值(value)的對(duì)象,鍵不能重復(fù)。List、Map、Set三個(gè)接口存取元素時(shí),各有什么特點(diǎn)?答題要點(diǎn):1、List接口(1)存元素:由于List接口元素可以重復(fù),可以多次調(diào)用add(Objectobj)方法向List里插入元素。(2)取元素:可以使用迭代器遍歷Iterator接口取得所有,逐一遍歷各個(gè)元素;或者調(diào)用get(indexi)來(lái)明確說(shuō)明取第幾個(gè)。2、Set接口(1)存元素:由于Set集合不允許有重復(fù)的元素,不可多次調(diào)用add()方法向Set里存元素。(2)取元素:可以使用迭代器遍歷Iterator接口取得所有,因?yàn)镾et集合無(wú)序,所以不能通過(guò)索引的方式遍歷。3、Map接口(1)存元素:調(diào)用put(ObjectkeyObjectvalue)方法添加元素。(2)取元素:使用get(Objectkey)方法根據(jù)key獲得相應(yīng)的value;使用map.values()方法獲得map中的所有的value使用map.keySet();方法獲得map中所有的鍵;也可以使用entrySet()方法通過(guò)Map.Entry獲得鍵值對(duì)的集合。3.遍歷一個(gè)List有哪些不同的方式?答題要點(diǎn):使用for循環(huán)使用增強(qiáng)for循環(huán)(即foreach循環(huán))使用Iterator迭代器4.HashMap和Hashtable有什么區(qū)別?答題要點(diǎn):HashMap和Hashtable都實(shí)現(xiàn)了Map接口,因此很多特性非常相似。但是,他們有以下不同點(diǎn):HashMap允許鍵和值是null,而Hashtable不允許鍵或者值是null。Hashtable是同步的,而HashMap不是。因此,HashMap更適合于單線程環(huán)境,而Hashtable適合于多線程環(huán)境。HashMap提供了可供應(yīng)用迭代的鍵的集合,因此,HashMap是快速失敗的。另一方面,Hashtable提供了對(duì)鍵的列舉(Enumeration)。一般認(rèn)為Hashtable是一個(gè)遺留的類。5.ArrayList和LinkedList有何區(qū)別?答題要點(diǎn):(1)ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
(2)對(duì)于隨機(jī)訪問(wèn)get和set,ArrayList覺(jué)得優(yōu)于LinkedList,因?yàn)長(zhǎng)inkedList要移動(dòng)指針。
(3)對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢(shì),因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。
6.Collection和Collections有何區(qū)別?答題要點(diǎn):Collection是一個(gè)接口,處于集合體系的最頂層,包含了集合體系的共性。Collections是一個(gè)工具類,其中的方法都是用于操作Collection。Java.util.Map的實(shí)現(xiàn)類有那些?答題要點(diǎn):主要有HashMap、HashTable、TreeMap、ConcurrentHashMap、LinkedHashMap、weakHashMap等等。8.HashSet和TreeSet有什么區(qū)別?答題要點(diǎn):HashSet是由一個(gè)hash表來(lái)實(shí)現(xiàn)的,因此,它的元素是無(wú)序的。TreeSet是由一個(gè)樹(shù)形的結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,它里面的元素是有序的。9.寫(xiě)出Java遍歷Map所有元素的代碼片段。答題要點(diǎn):(1)使用entrySet()方法Mapmap=newHashMap();Iteratorit=map.entrySet().iterator();while(it.hasNext()){Map.Entryentry=(Map.Entry)it.next();Objectkey=entry.getKey();Objectvalue=entry.getValue();}(2)使用keySet()方法Mapm=newHashMap();for(Objecto:map.keySet()){map.get(o);}10.HashMap的鏈表結(jié)構(gòu)設(shè)計(jì)是用來(lái)解決什么問(wèn)題的?答題要點(diǎn):HashMap的鏈表結(jié)構(gòu)設(shè)計(jì)是用來(lái)解決key的hash沖突問(wèn)題的。五、Java程序員面試題1.闡述ArrayList、Vector、LinkedList的存儲(chǔ)性能和特性。答題要點(diǎn):(1)ArrayList和Vector是采用數(shù)組方式存儲(chǔ)集合中的元素,元素之間內(nèi)存地址是連續(xù)的,此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù),以便增加和插入新數(shù)據(jù)。(2)ArrayList和Vector都允許直接序號(hào)索引元素,可以快速查找;但是插入和刪除數(shù)據(jù)需要移動(dòng)數(shù)據(jù),所以效率低。(3)Vector由于使用了synchronized方法(線程安全),所以性能比ArrayList差。(4)LinkedList是使用鏈表結(jié)構(gòu)保存集合中的元素,元素之間內(nèi)存地址不連續(xù)。按序號(hào)索引數(shù)據(jù)需要進(jìn)行向前或向后遍歷,即需要進(jìn)行尋執(zhí)操作。LinkedList數(shù)據(jù)插入或刪除不需要移動(dòng)數(shù)據(jù),具有較高的修改性能。2.TreeMap和TreeSet在排序時(shí)如何比較元素?Collections工具類中的sort()方法如何比較元素?答題要點(diǎn):TreeSet要求存放的對(duì)象所屬的類必須實(shí)現(xiàn)Comparable接口,該接口提供了比較元素的compareTo()方法,當(dāng)插入元素時(shí)會(huì)回調(diào)該方法比較元素的大小。TreeMap要求存放的鍵值對(duì)映射的鍵必須實(shí)現(xiàn)Comparable接口從而根據(jù)鍵對(duì)元素進(jìn)行排序。Collections工具類的sort方法有兩種重載的形式,第一種要求傳入的待排序容器中存放的對(duì)象比較實(shí)現(xiàn)Comparable接口以實(shí)現(xiàn)元素的比較;第二種不強(qiáng)制性的要求容器中的元素必須可比較,但是要求傳入第二個(gè)參數(shù),參數(shù)是Comparator接口的子類型(需要重寫(xiě)compare方法實(shí)現(xiàn)元素的比較),相當(dāng)于一個(gè)臨時(shí)定義的排序規(guī)則,其實(shí)就是通過(guò)接口注入比較元素大小的算法,也是對(duì)回調(diào)模式的應(yīng)用(Java中對(duì)函數(shù)式編程的支持)。3.集合框架中的泛型有什么優(yōu)點(diǎn)?答題要點(diǎn):(1)Java1.5引?了泛型,所有的集合接?和實(shí)現(xiàn)都?量地使?它。(2)泛型允許我們?yōu)榧咸峁?個(gè)可以容納的對(duì)象類型,因此,如果你添加其它類型的任何元素,它會(huì)在編譯時(shí)報(bào)錯(cuò)。(3)這避免了在運(yùn)?時(shí)出現(xiàn)ClassCastException,因?yàn)槟銓?huì)在編譯時(shí)得到報(bào)錯(cuò)信息。(4)泛型也使得代碼整潔,我們不需要使?顯式轉(zhuǎn)換和instanceOf操作符。(5)它也給運(yùn)?時(shí)帶來(lái)好處,因?yàn)椴粫?huì)產(chǎn)?類型檢查的字節(jié)碼指令。4.簡(jiǎn)述Java集合體系結(jié)構(gòu)(List、Set、Collection、Map的區(qū)別和聯(lián)系)。答題要點(diǎn):Collection接口存儲(chǔ)一組不唯一,無(wú)序的對(duì)象List接口存儲(chǔ)一組不唯一,有序(插入順序)的對(duì)象Set接口存儲(chǔ)一組唯一,無(wú)序的對(duì)象Map接口存儲(chǔ)一組鍵值對(duì)象,提供key到value的映射。Key無(wú)序,唯一。value不要求有序,允許重復(fù)。(如果只使用key存儲(chǔ),而不使用value,那就是Set)5.List、Set、Map之間的區(qū)別是什么?答題要點(diǎn):List接口:可重復(fù),可以為空,有序容器,保持了每個(gè)元素的插入順序,輸出的順序就是插入的順序。Set接口:不可重復(fù),可以為空,無(wú)序容器,無(wú)法保證每個(gè)元素的存儲(chǔ)順序,TreeSet通過(guò)Comparator或者Comparable維護(hù)了一個(gè)排序順序。Map接口:以鍵值對(duì)的形式進(jìn)行存儲(chǔ),鍵不可以重復(fù)值可以重復(fù),鍵只能有一個(gè)null鍵,值可以有多個(gè)null鍵。6.Map接口提供了哪些不同的集合視圖?答題要點(diǎn):Map接口提供三個(gè)集合視圖:(1)Setkeyset():返回map中包含的所有key的一個(gè)Set視圖。(2)Collectionvalues():返回一個(gè)map中包含的所有value的一個(gè)Collection視圖。(3)Set>entrySet():返回一個(gè)map鐘包含的所有映射的一個(gè)集合視圖。學(xué)習(xí)領(lǐng)域3Java反射機(jī)制課后習(xí)題一、填空題1.__獲得classType類的所有聲明的字段__2.___反射機(jī)制_3._______返回com.yano.reflect.Person的class對(duì)象_____4_無(wú)參的構(gòu)造函數(shù)_5____指定字段_。二、單選題1.(D)2.(A)3.(A)4.(B)5.(AC)三、簡(jiǎn)答題1.什么是Java反射機(jī)制?答題要點(diǎn):Java的反射機(jī)制是指在程序的運(yùn)行狀態(tài)中,可以構(gòu)造任意一個(gè)類的對(duì)象,可以了解任意一個(gè)對(duì)象所屬的類,可以了解任意一個(gè)類的成員變量和方法,可以調(diào)用任意一個(gè)對(duì)象的屬性和方法。2.簡(jiǎn)述Java反射中API的主要類及作用。答題要點(diǎn):反射API用來(lái)生成JVM中的類、接口或則對(duì)象的信息。Class類:反射的核心類,可以獲取類的屬性,方法等信息。Field類:Java.lang.reflec包中的類,表示類的成員變量,可以用來(lái)獲取和設(shè)置類之中的屬性值。Method類:Java.lang.reflec包中的類,表示類的方法,它可以用來(lái)獲取類中的方法信息或者執(zhí)行方法。Constructor類:Java.lang.reflec包中的類,表示類的構(gòu)造方法。3.如何使用Java的反射?答題要點(diǎn):(1)通過(guò)類加載器加載目標(biāo)類(例如Person類),然后獲取該類的Class對(duì)象;(2)使用Class對(duì)象調(diào)用其方法(如getDeclaredMethods)獲取該類的相關(guān)信息,包括構(gòu)造函數(shù)、成員屬性、成員方法、訪問(wèn)控制符等;(3)使用反射API來(lái)操作這些信息。4.簡(jiǎn)述Java反射機(jī)制的功能。答題要點(diǎn):Java反射機(jī)制主要提供了以下功能:在運(yùn)行時(shí)能夠判斷任意一個(gè)對(duì)象所屬的類在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法在運(yùn)行時(shí)調(diào)用任一對(duì)象的方法在運(yùn)行時(shí)創(chuàng)建新類對(duì)象5.哪里用到反射機(jī)制?答題要點(diǎn):JDBC中,利用反射動(dòng)態(tài)加載了數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。Web服務(wù)器中利用反射調(diào)用了Sevlet的服務(wù)方法(service)。Eclispe等開(kāi)發(fā)工具利用反射動(dòng)態(tài)剖析對(duì)象的類型與結(jié)構(gòu),動(dòng)態(tài)提示對(duì)象的屬性和方法。很多框架都用到反射機(jī)制,注入屬性,調(diào)用方法,如Spring。6.獲取目標(biāo)類的Class對(duì)象有哪些方法?答題要點(diǎn):獲取Class對(duì)象,有4中方法:(1)Class.forName(“類的路徑”);(2)類名.class(3)對(duì)象名.getClass()(4)基本類型的包裝類,可以調(diào)用包裝類的Type屬性來(lái)獲得該包裝類的Class對(duì)象五、Java程序員面試題1.如何通過(guò)反射獲取和設(shè)置對(duì)象私有字段的值?答題要點(diǎn):可以通過(guò)類對(duì)象的getDeclaredField()方法字段(Field)對(duì)象,然后再通過(guò)字段對(duì)象的setAccessible(true)將其設(shè)置為可以訪問(wèn),接下來(lái)就可以通過(guò)get/set方法來(lái)獲取/設(shè)置字段的值了。2.利用反射機(jī)制有哪些方法可以動(dòng)態(tài)創(chuàng)建對(duì)象實(shí)例?答題要點(diǎn):Class對(duì)象的newInstance()。使用Class對(duì)象的newInstance()方法來(lái)創(chuàng)建該Class對(duì)象對(duì)應(yīng)類的實(shí)例,但是這種方法要求該Class對(duì)象對(duì)應(yīng)的類有默認(rèn)的空構(gòu)造器。調(diào)用Constructor對(duì)象的newInstance()。先使用Class對(duì)象獲取指定的Constructor對(duì)象,再調(diào)用Constructor對(duì)象的newInstance()方法來(lái)創(chuàng)建Class對(duì)象對(duì)應(yīng)類的實(shí)例,通過(guò)這種方法可以選定構(gòu)造方法創(chuàng)建實(shí)例。學(xué)習(xí)領(lǐng)域4Java泛型機(jī)制課后習(xí)題一、填空題2._____只能讀取類型為T(mén)的元素__。3.__鍵_,V代表__值_。4.參數(shù)化類型__5.___對(duì)象__,6.___DataAccessObject__7.__BaseDao_8.__publicinterface__。9.______這個(gè)方法是泛型_____________。10.J_泛型__。___參數(shù)__。二、單選題1.(A)2.(D)3.(D)4.A5.(D)6.(A)7.(D)8D9.(D)10.(A)11.(D)12.(C)13.(B)14.(D)15.(D)三、簡(jiǎn)答題1.Java中的泛型是什么?使用泛型的好處是什么?答題要點(diǎn):泛型是對(duì)Java語(yǔ)言的類型系統(tǒng)的一種擴(kuò)展,以支持創(chuàng)建可以按類型進(jìn)行參數(shù)化的類。泛型的本質(zhì)是參數(shù)化類型,也就是說(shuō)所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。這種參數(shù)類型可以?在類、接?和?法的創(chuàng)建中,分別稱為泛型類、泛型接?、泛型?法。泛型的好處是在編譯的時(shí)候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的,提高代碼的重用率。性能比較高,用GJ(泛型Java)編寫(xiě)的代碼可以為Java編譯器和虛擬機(jī)帶來(lái)更多的類型信息,這些信息對(duì)Java程序做進(jìn)一步優(yōu)化提供條件。Java的泛型是如何工作的?什么是類型擦除?答題要點(diǎn):泛型通過(guò)類型擦除來(lái)將變量變?yōu)橐粋€(gè)類型,編譯器在編譯時(shí)擦出了所有類型相關(guān)的信息,所以在運(yùn)行時(shí)不存在任何類型相關(guān)的信息,例如List<String>在運(yùn)行時(shí)僅以List來(lái)表示。類型擦除指的是一些信息僅存在于代碼編譯階段,編譯之后進(jìn)入JVM之前,與反向相關(guān)信息會(huì)被擦除。什么是泛型中的限定通配符和非限定通配符?限定通配符包括兩種:(1)表示類型的上界,格式為:<?extendsT>,即類型必須為T(mén)類型或者T子類(2)表示類型的下界,格式為:<?superT>,即類型必須為T(mén)類型或者T的父類非限定通配符:類型為<T>,可以用任意類型來(lái)替代。4.如何編寫(xiě)一個(gè)泛型方法,讓它能接受泛型參數(shù)并返回泛型類型?答題要點(diǎn):編寫(xiě)泛型方法需要用泛型類型來(lái)替代原始類型,比如使用T,EorK,V等被廣泛認(rèn)可的類型占位符。最簡(jiǎn)單的情況下,一個(gè)泛型方法可能會(huì)像這樣:publicVput(Kkey,Vvalue){returncache.put(key,value);}5.List<?extendsT>和List<?superT>之間有什么區(qū)別?答題要點(diǎn):List<?extendsT>可以接受任何繼承自T的類型的List,而List<?superT>可以接受任何T的父類構(gòu)成的List。例如List<?extendsNumber>可以接受List<Integer>或List<Float>。6.BaseDAO是用來(lái)做什么的?答題要點(diǎn):BaseDAO一般是提供從數(shù)據(jù)庫(kù)增加、刪除、修改記錄、查詢所有記錄、查詢符合某個(gè)條件記錄、取得dao某條記錄等方法的底層數(shù)據(jù)操作自定義類。由于我們可能操作多個(gè)數(shù)據(jù)庫(kù)表,這樣就需要為每個(gè)表提供一個(gè)操作他的類xxDAO,這些DAO繼承BaseDAO就可以省略很多重復(fù)代碼(從數(shù)據(jù)庫(kù)增加、刪除、修改記錄、查詢所有記錄、查詢符合某個(gè)條件記錄、取得某條記錄等方法的代碼)。采用DAO模式進(jìn)行開(kāi)發(fā)時(shí),一般要設(shè)計(jì)哪些類和接口?DAO接口;實(shí)現(xiàn)DAO接口的具體類;數(shù)據(jù)對(duì)象(或叫值對(duì)象).8.寫(xiě)出BaseDao泛型接口的完整定義形式。publicinterfaceBaseDao<T>{ publicvoidsave(Tentity); publicvoiddelete(Tentity); publicvoidupdate(Tentity); publicvoidsaveOrUpdate(Tentity); publicTfindById(Serializableid); publicList<T>findAll(); //提供通用修改方法 publicvoidexecuteUpdate(StringqueryName,Object...objects); publicvoidpageQuery(PageBeanpageBean); publicList<T>findByCriteria(DetachedCriteriadetachedCriteria);}五、Java程序員面試題1.為什么要建立BaseDao?答題要點(diǎn):一般在涉及DAO開(kāi)發(fā)時(shí),若對(duì)每張表都編寫(xiě)一套增刪改查方法未必有些麻煩,并且不符合編碼的基本準(zhǔn)則。一般,我們可以將這些功能的所公用的部分封裝為一個(gè)對(duì)象,或者是類,此類是所有DAO的基類,可以稱為:BaseDAO。由于我們可能操作多個(gè)數(shù)據(jù)庫(kù)表,這樣就需要為每個(gè)表提供一個(gè)操作他的類xxDAO,這些DAO繼承BaseDAO就可以省略很多重復(fù)代碼(從數(shù)據(jù)庫(kù)增加、刪除、修改記錄、查詢所有記錄、查詢符合某個(gè)條件記錄、取得某條記錄等方法的代碼),以節(jié)省開(kāi)發(fā)時(shí)間由于此類接收到不同的操作對(duì)象,故需泛型的支持,在編譯的時(shí)候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的。使用泛型更容易、更方便、更安全地操作數(shù)據(jù)庫(kù)。2.DAO的結(jié)構(gòu)四大組件是指哪些?答題要點(diǎn):doa接口dao實(shí)現(xiàn)類pojo(plainoldjavaobjecct)類dao定位(如何獲取實(shí)例
spring)3.常見(jiàn)的DAO技術(shù)有哪些?答題要點(diǎn):常用的dao技術(shù)有jdbc
spring的DAO以及orm(ibatismybatishibernate)的DAO。學(xué)習(xí)領(lǐng)域5Java序列化機(jī)制課后習(xí)題一、填空題1.___Serializable________2.序列化反序列化3.將對(duì)象寫(xiě)入流中4.不能5.不能二、單選題1.(D)2(D)3.(A)4.(B)5.(C)6.(B)7.(C)8(D)9.(B)10.(A)三、簡(jiǎn)答題1.什么是Java序列化?答題要點(diǎn):Java序列化指的是將Java對(duì)象轉(zhuǎn)換為字節(jié)流的過(guò)程,反序列化指的是將字節(jié)流轉(zhuǎn)換為java對(duì)象的過(guò)程。2.在什么情況下需要序列化?答題要點(diǎn):以下情況需要使用Java序列化:(1)永久性保存Java對(duì)象,保存對(duì)象的字節(jié)序列到本地文件或者數(shù)據(jù)庫(kù)中;(2)網(wǎng)絡(luò)中進(jìn)行傳遞和接收J(rèn)ava對(duì)象;(3)進(jìn)程間傳遞Java對(duì)象。3.Java中實(shí)現(xiàn)序列化有哪幾種方法?答題要點(diǎn):(1)實(shí)現(xiàn)序列化接口Serializable(2)實(shí)現(xiàn)接口Externalizable4.如果你的Serializable類包含一個(gè)不可序列化的成員,會(huì)發(fā)生什么?你是如何解決的?答題要點(diǎn):如果實(shí)現(xiàn)Serializable接口的類包含一個(gè)不可序列化的成員,當(dāng)嘗試序列化對(duì)象時(shí),這會(huì)發(fā)生異常。任何序列化該類的嘗試都會(huì)因NotSerializableException而失敗,必須將其聲明為靜態(tài)或瞬態(tài)trasient變量,瞬態(tài)和靜態(tài)變量不會(huì)得到序列化。5.在Java中的序列化和反序列化過(guò)程中使用哪些方法?答題要點(diǎn):
readObject()、writeObject()、readExternal()
和
writeExternal()。Java序列化由java.io.ObjectOutputStream類完成。該類是一個(gè)篩選器流,它封裝在較低級(jí)別的字節(jié)流中,以處理序列化機(jī)制。要通過(guò)序列化機(jī)制存儲(chǔ)任何對(duì)象,調(diào)用
ObjectOutputStream.writeObject(savethisobject),要反序列化該對(duì)象,調(diào)用
ObjectInputStream.readObject()方法。調(diào)用以
writeObject()
方法在java中觸發(fā)序列化過(guò)程。五、Java程序員面試題1.
如果類中的一個(gè)成員未實(shí)現(xiàn)可序列化接口,會(huì)發(fā)生什么情況?關(guān)于Java序列化過(guò)程的一個(gè)簡(jiǎn)單問(wèn)題。如果嘗試序列化實(shí)現(xiàn)可序列化的類的對(duì)象,但該對(duì)象包含對(duì)不可序列化類的引用,則在運(yùn)行時(shí)將引發(fā)不可序列化異常
NotSerializableException,這就是為什么我始終將一個(gè)可序列化警報(bào)(在我的代碼注釋部分中),代碼注釋最佳實(shí)踐之一,指示開(kāi)發(fā)人員記住這一事實(shí),在可序列化類中添加新字段時(shí)要注意。2.如果類是可序列化的,但其超類不是,則反序列化后從超級(jí)類繼承的實(shí)例變量的狀態(tài)如何?Java序列化過(guò)程僅在對(duì)象層次都是可序列化結(jié)構(gòu)中繼續(xù),即實(shí)現(xiàn)Java中的可序列化接口,并且從超級(jí)類繼承的實(shí)例變量的值將通過(guò)調(diào)用構(gòu)造函數(shù)初始化,在反序列化過(guò)程中不可序列化的超級(jí)類。一旦構(gòu)造函數(shù)鏈接將啟動(dòng),就不可能停止,因此,即使層次結(jié)構(gòu)中較高的類實(shí)現(xiàn)可序列化接口,也將執(zhí)行構(gòu)造函數(shù)。正如你從陳述中看到的,這個(gè)序列化面試問(wèn)題看起來(lái)非常棘手和有難度,但如果你熟悉關(guān)鍵概念,則并不難。學(xué)習(xí)領(lǐng)域6Java多線程機(jī)制課后習(xí)題一、填空題1start2.run3.54.1、繼承Thread類;2、實(shí)現(xiàn)Runnable接口。5、hread.currentThread();6.main,thread-07.getPriority()和setPriority()8.synchronized同步9.wait()
和notify()
10synchronized二、單選題1(C)2.(D)3.(B4.(A)。5.(B)6.(D)7.(C)8.D)9.(C)10.(B)11(D)12.(D)13.(C)14.(A)15.(D)16.(C)17.(D)18.(D)19.(D)20.(
A)。三、簡(jiǎn)答題1.什么是進(jìn)程和線程??jī)烧叩膮^(qū)別是什么?答題要點(diǎn):進(jìn)程是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),程序一旦運(yùn)行就是進(jìn)程。進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。線程是進(jìn)程的一個(gè)實(shí)體,是進(jìn)程的一條執(zhí)行路徑。線程是程序執(zhí)行流的最小單元,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位。一個(gè)進(jìn)程可以擁有多個(gè)線程,每個(gè)線程使用其所屬進(jìn)程的??臻g。進(jìn)程和線程的區(qū)別體現(xiàn)在以下幾個(gè)方面:(1)地址空間和其他資源(如打開(kāi)文件):進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線程間共享。某進(jìn)程內(nèi)的線程在其他進(jìn)程內(nèi)不可見(jiàn)。(2)通信:進(jìn)程間通信IPC(管道,信號(hào)量,共享內(nèi)存,消息隊(duì)列),線程間可以直接獨(dú)寫(xiě)進(jìn)程數(shù)據(jù)段(如全局變量)來(lái)進(jìn)程通信——需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性。(3)調(diào)度和切換:線程上下文切換比進(jìn)程上下文切換快得多。(4)在多線程O(píng)S中,進(jìn)程不是一個(gè)可執(zhí)行的實(shí)體。2.編寫(xiě)多線程類有幾種實(shí)現(xiàn)方式?它們各自的優(yōu)缺點(diǎn)是什么?答題要點(diǎn):有兩種實(shí)現(xiàn)方式:繼承Thread類和實(shí)現(xiàn)Runnable接口。繼承Thread類的缺點(diǎn):該類無(wú)法繼承別的類。實(shí)現(xiàn)Runnable接口的缺點(diǎn):代碼復(fù)雜3.JDK中線程的生命周期包括哪幾種狀態(tài)?答題要點(diǎn):線程是一個(gè)動(dòng)態(tài)的概念,從創(chuàng)建、運(yùn)行和變化、消亡(死亡)就是一個(gè)生命周期。JDK中用Thread.State類定義了線程生命周期內(nèi)的6種狀態(tài),包含了NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。4.線程的優(yōu)先級(jí)范圍是什么?如何實(shí)現(xiàn)優(yōu)先級(jí)?答題要點(diǎn):線程的優(yōu)先級(jí)為1-10,一般使用Thread的類常量,不會(huì)手動(dòng)賦值可以通過(guò)setPriority()方法去改變它的默認(rèn)值5.為什么多線程中要引入同步機(jī)制?Java中如何實(shí)現(xiàn)線程的同步?答題要點(diǎn):在多線程編程里面,一些較為敏感的數(shù)據(jù)是不允許被多個(gè)線程同時(shí)訪問(wèn)的,具有排他性,即互斥。在互斥的基礎(chǔ)上,通過(guò)同步機(jī)制實(shí)現(xiàn)訪問(wèn)者對(duì)資源的有序訪問(wèn),確保數(shù)據(jù)在任何時(shí)刻最多只有一個(gè)線程訪問(wèn),保證數(shù)據(jù)的完整性。多線程的同步方法大體分為以下幾種:使用同步關(guān)鍵字(synchronized)使用重入鎖類(ReentrantLock)使用特殊域變量關(guān)鍵字(volatile)使用局部變量(ThreadLocal)使用原子變量(AtomicInteger)使用阻塞隊(duì)列6.線程的調(diào)度有哪些方法?各有什么功能?答題要點(diǎn):(1)分時(shí)調(diào)度所有線程輪流使用CPU的使用權(quán),平均分配每個(gè)線程占用CPU的時(shí)間。(2)搶占式調(diào)度優(yōu)先讓優(yōu)先級(jí)高的線程使用CPU,如果線程的優(yōu)先級(jí)相同,那么會(huì)隨機(jī)選擇一個(gè)(線程隨機(jī)性),Java使用的為搶占式調(diào)度。7.Thread類的sleep()方法和對(duì)象的wait()方法都可以讓線程暫停執(zhí)行,它們有什么區(qū)別?答題要點(diǎn):sleep()方法(休眠)是線程類(Thread)的靜態(tài)方法,調(diào)用此方法會(huì)讓當(dāng)前線程暫停執(zhí)行指定的時(shí)間,將執(zhí)行機(jī)會(huì)(CPU)讓給其他線程,但是對(duì)象的鎖依然保持,因此休眠時(shí)間結(jié)束后會(huì)自動(dòng)恢復(fù),線程回到就緒狀態(tài)。wait()是Object類的方法,調(diào)用對(duì)象的wait()方法導(dǎo)致當(dāng)前線程放棄對(duì)象的鎖(線程暫停執(zhí)行),進(jìn)入對(duì)象的等待池(waitpool),只有調(diào)用對(duì)象的notify()方法(或notifyAll()方法)時(shí)才能喚醒等待池中的線程進(jìn)入等鎖池(lockpool),如果線程重新獲得對(duì)象的鎖就可以進(jìn)入就緒狀態(tài)8.簡(jiǎn)述synchronized關(guān)鍵字的用法。答題要點(diǎn):synchronized關(guān)鍵字主要有以下這3種用法:修飾實(shí)例方法,作用于當(dāng)前實(shí)例加鎖,進(jìn)入同步代碼前要獲得當(dāng)前實(shí)例的鎖修飾靜態(tài)方法,作用于當(dāng)前類對(duì)象加鎖,進(jìn)入同步代碼前要獲得當(dāng)前類對(duì)象的鎖修飾代碼塊,指定加鎖對(duì)象,對(duì)給定對(duì)象加鎖,進(jìn)入同步代碼庫(kù)前要獲得給定對(duì)象的鎖。9.簡(jiǎn)述線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系。答題要點(diǎn):(1)NEW(新建狀態(tài)),new語(yǔ)句創(chuàng)建的線程對(duì)象處于新建狀態(tài)。(2)RUNNABLE(可運(yùn)行狀態(tài)和運(yùn)行狀態(tài)),當(dāng)一個(gè)線程對(duì)象創(chuàng)建后,其他線程調(diào)用它的start()方法,該線程就進(jìn)入可運(yùn)行狀態(tài)。處于這個(gè)狀態(tài)的線程一旦得到CPU的使用權(quán)就處于運(yùn)行狀態(tài),執(zhí)行程序代碼。在并發(fā)運(yùn)行環(huán)境中,如果計(jì)算機(jī)只有一個(gè)CPU,那么任何時(shí)刻只會(huì)有一個(gè)線程處于這個(gè)狀態(tài)。只有處于可運(yùn)行狀態(tài)的線程才有機(jī)會(huì)轉(zhuǎn)到運(yùn)行狀態(tài)。(3)BLOCKED(阻塞狀態(tài)),阻塞狀態(tài)是線程等待鎖的狀態(tài)當(dāng)線程剛進(jìn)入可運(yùn)行狀態(tài)(注意,還沒(méi)運(yùn)行),發(fā)現(xiàn)將要調(diào)用的資源被synchronized(同步),獲取不到鎖標(biāo)記,將會(huì)立即進(jìn)入鎖池狀態(tài),等待獲取鎖標(biāo)記進(jìn)入同步代碼塊/方法或調(diào)用wait()方法后重新進(jìn)入需要競(jìng)爭(zhēng)鎖。一旦線程獲得鎖標(biāo)記后,就轉(zhuǎn)入可運(yùn)行狀態(tài),等待OS分配CPU時(shí)間片。線程從阻塞狀態(tài)只能進(jìn)入就緒狀態(tài),無(wú)法直接進(jìn)入運(yùn)行狀態(tài)。(4)WAITING(等待狀態(tài)),一個(gè)線程在等待另一個(gè)線程執(zhí)行動(dòng)作時(shí)處于該狀態(tài)。(5)TIMED_WAITING(超時(shí)等待狀態(tài)),線程等待指定時(shí)間,進(jìn)入超時(shí)等待狀態(tài)。該狀態(tài)即停止當(dāng)前線程,但并不釋放所占有的資源。(6)死亡狀態(tài),當(dāng)線程執(zhí)行完run()方法中的代碼,或者遇到了未捕獲的異常,就會(huì)退出run()方法,此時(shí)就進(jìn)入死亡狀態(tài),該線程結(jié)束生命周期。10.Java中你怎樣喚醒一個(gè)阻塞的線程?答題要點(diǎn):使用sleep()方法、join()方法、wait()和notify()方法11.簡(jiǎn)述volatile和synchronized的區(qū)別答題要點(diǎn):(1)volatile通過(guò)變量的可見(jiàn)性,指定線程必須從主存中讀取變量的最新值;synchronized通過(guò)阻塞線程的方式,只有當(dāng)前線程能訪問(wèn)該變量,鎖定了當(dāng)前變量。(2)volatile使用在變量級(jí)別;synchronized可以使用在變量、方法、類級(jí)別(3)volatile不會(huì)造成線程阻塞;synchronized可能會(huì)造成線程阻塞(4)volatile不能保證原子性;synchronized能保證原子性(5)volatile標(biāo)記的變量不會(huì)被編譯器優(yōu)化;synchronized標(biāo)記的變量有可能會(huì)被編譯器優(yōu)化(指令重排)。五、Java程序員面試題1.簡(jiǎn)述synchronized和Lock的區(qū)別。答題要點(diǎn):類別synchronizedLock存在層次Java的關(guān)鍵字,在JVM層面上是一個(gè)類鎖的釋放已獲取鎖的線程執(zhí)行完同步代碼,釋放鎖;在線程發(fā)生異常時(shí),JVM會(huì)讓線程自動(dòng)釋放占有的鎖。發(fā)生異常時(shí)候,不會(huì)主動(dòng)釋放鎖。finally中釋放鎖,避免死鎖的發(fā)生。鎖的獲取假設(shè)A線程獲得鎖,B線程等待。如果A線程阻塞,B線程一直等待。有多個(gè)獲取鎖的方式。可以嘗試獲取鎖,線程可以不用一直等待。鎖狀態(tài)無(wú)法判斷可以判斷鎖類型悲觀鎖機(jī)制,即線程獲得的是獨(dú)占鎖樂(lè)觀鎖用法區(qū)別在需要同步的對(duì)象中加入此控制,synchronized可以加在方法上,也可以加在特定代碼塊中,括號(hào)中表示需要鎖的對(duì)象。一般使用ReentrantLock類做為鎖。在加鎖和解鎖處需要通過(guò)lock()和unlock()顯示指出。所以一般會(huì)在finally塊中寫(xiě)unlock()以防死鎖。性能區(qū)別少量同步synchronize是性能低效的。因?yàn)檫@是一個(gè)重量級(jí)操作,需要調(diào)用操作接口,導(dǎo)致有可能加鎖消耗的系統(tǒng)時(shí)間比加鎖以外的操作還多。大量同步當(dāng)競(jìng)爭(zhēng)資源非常激烈時(shí)(即有大量線程同時(shí)競(jìng)爭(zhēng)),此時(shí)Lock的性能要遠(yuǎn)遠(yuǎn)優(yōu)于synchronized。用途區(qū)別可重入,不可中斷,非公平可重入,可中斷,可公平調(diào)度機(jī)制使用Object對(duì)象本身的wait、notify、notifyAll調(diào)度機(jī)制使用Condition進(jìn)行線程之間的調(diào)度2.什么是線程池(threadpool)?簡(jiǎn)要說(shuō)明ThreadPoolExecutor的策略。答題要點(diǎn):服務(wù)端應(yīng)用程序(如數(shù)據(jù)庫(kù)和Web服務(wù)器)需要處理來(lái)自客戶端的高并發(fā)、耗時(shí)較短的請(qǐng)求任務(wù),所以頻繁的創(chuàng)建處理這些請(qǐng)求的所需要的線程就是一個(gè)非常消耗資源的操作。過(guò)于頻繁的創(chuàng)建/銷毀線程,會(huì)很大程度上影響處理效率;如果同時(shí)執(zhí)行的線程過(guò)多,就有可能導(dǎo)致系統(tǒng)資源不足而產(chǎn)生阻塞的情況。運(yùn)用線程池能有效的控制線程最大并發(fā)數(shù),避免以上的問(wèn)題。運(yùn)用線程池對(duì)線程進(jìn)行一些簡(jiǎn)單的管理。比如:延時(shí)執(zhí)行、定時(shí)循環(huán)執(zhí)行的策略等。當(dāng)一個(gè)任務(wù)被添加進(jìn)線程池時(shí),ThreadPoolExecutor的策略是:(1)線程數(shù)量未達(dá)到corePoolSize,則新建一個(gè)線程(核心線程)執(zhí)行任務(wù)(2)線程數(shù)量達(dá)到了corePools,則將任務(wù)移入隊(duì)列等待(3)隊(duì)列已滿,新建線程(非核心線程)執(zhí)行任務(wù)(4)隊(duì)列已滿,總線程數(shù)又達(dá)到了maximumPoolSize,就會(huì)由上面那位星期天(RejectedExecutionHandler)拋出異常。3.什么是線程死鎖?如何避免線程死鎖?答題要點(diǎn):線程死鎖:多個(gè)線程同時(shí)被阻塞,他們中的一個(gè)或者全部在等待某個(gè)資源被釋放,由于線程被無(wú)限期的阻塞,因此程序不可能正常終止。產(chǎn)生死鎖必須具備的四個(gè)條件:(1)互斥條件:該資源任意時(shí)刻只由一個(gè)線程占用。(2)請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。(3)不剝奪條件:線程已獲得的資源在未使用完之前不能被其他線程強(qiáng)行剝奪,只有自己使用完之后才釋放資源。(4)循環(huán)等待條件:若干個(gè)進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。如何避免線程死鎖(破壞其中一個(gè)條件即可):(1)破壞互斥條件:(無(wú)法破壞)(2)破壞請(qǐng)求與保持條件:一次性申請(qǐng)所有資源。(3)破壞不剝奪條件:占用部分資源的線程進(jìn)一步申請(qǐng)其他資源時(shí),可以主動(dòng)釋放它占有的資源。(4)破壞循環(huán)等待條件:靠按照順序來(lái)預(yù)防。按某一個(gè)順序來(lái)申請(qǐng)資源,按相反的順序來(lái)釋放資源,破壞循環(huán)等待的條件。學(xué)習(xí)領(lǐng)域7Java網(wǎng)絡(luò)編程課后習(xí)題一、填空題1.Socket技術(shù)是構(gòu)建在__________TCP/IP_____協(xié)議之上的。2.Datagrams技術(shù)是構(gòu)建在________UDP_______協(xié)議之上的。3.ServerSocket.accept()返回_____Socket__________對(duì)象,是服務(wù)器與客戶端相連。4.InetAddress是用于封裝IP地址和DNS的一個(gè)類。5.TCP/IP套接字是最可靠的雙向流協(xié)議。等待客戶端的服務(wù)器使用ServerSocket類,而要連接到服務(wù)器的客戶端則使用Socket類。6.Socket(InetAddressaddress,intport)產(chǎn)生___IOException異常,不拋出UnknownHostException異常。7.在TCP/IP協(xié)議的傳輸層除了TCP協(xié)議之外還有一個(gè)UDP協(xié)議。幾個(gè)標(biāo)準(zhǔn)的應(yīng)用層協(xié)議HTTP,F(xiàn)TP,SMTP…使用的都是TCP協(xié)議。UDP協(xié)議主要用于需要很強(qiáng)的實(shí)時(shí)交互性的場(chǎng)合,如網(wǎng)絡(luò)游戲,視頻會(huì)議等。8.當(dāng)我們得到一個(gè)URL對(duì)象后,就可以通過(guò)它讀取指定的WWW資源。這時(shí)我們將使用URL的方法openStream(),其定義為:InputStreamopenStream();9.URL的構(gòu)造方法都聲明拋棄非運(yùn)行時(shí)異常MalformedURLException,因此生成URL對(duì)象時(shí),我們必須要對(duì)這一例外進(jìn)行處理,通常是用try-catch語(yǔ)句進(jìn)行捕獲。10.基于UDP的C/S編程,首先都要建立一個(gè)DatagramSocket
對(duì)象,用來(lái)接收或發(fā)送數(shù)據(jù)報(bào),然后使用DatagramPacket類對(duì)象作為傳輸數(shù)據(jù)的載體。二、單選題1.URL地址由(C)組成。A.文件名和主機(jī)名B.主機(jī)名和端口號(hào)C.協(xié)議名和資源名D.IP地址和主機(jī)名2.IP地址封裝類是____A_______。A.InetAddress類B.Socket類C.URL類D.ServerSocket類3.InetAddress類中獲得主機(jī)名的方法是(D)。A.getFile()B.getHostName()C.getPath()D.getHostAddress()4.Java中面向無(wú)連接的數(shù)據(jù)報(bào)通信的類有(C)。A.DatagramPacket類B.DatagramSocket類C.DatagramPacket類和DatagramSocket類D.Socket類5.Java網(wǎng)絡(luò)程序位于TCP/IP參考模型的哪一層(B)A.網(wǎng)絡(luò)層互聯(lián)層B.應(yīng)用層C.傳輸層網(wǎng)絡(luò)
D.主機(jī)網(wǎng)絡(luò)層6.以下哪些協(xié)議位于傳輸層(A)A.TCPB.HTTPC.SMTPD.IP7.一個(gè)服務(wù)器進(jìn)程執(zhí)行以下代碼:
ServerSocketserverSocket=newServerSocket(80);Socketsocket=serverSocket.accept();intport=socket.getPort();
以下錯(cuò)誤的是(B)A.
服務(wù)器進(jìn)程占用80端口。B.
socket.getPort()方法返回服務(wù)器進(jìn)程占用的本地端口,此處返回值是80。C.當(dāng)serverSocket.accept()方法成功返回,就表明服務(wù)器進(jìn)程接收到一個(gè)客戶連接請(qǐng)求。D、socket.getPort()方法返回客戶端套接字占用本地端口。8.在HTTP響應(yīng)結(jié)果中,哪個(gè)狀態(tài)代碼表示響應(yīng)成功(D)A.404B.405C.500D.2009.如何判斷一個(gè)ServerSocket已經(jīng)與特定端口綁定,并且還沒(méi)有被關(guān)閉(B)A.boolean
isOpen=serverSocket.isBound();
B.boolean
isOpen=serverSocket.isBound()&&!serverSocket.isClosed();C.
boolean
isOpen=serverSocket.isBound()
&&serverSocket.isConnected();
D.boolean
isOpen=!serverSocket.isClosed();10.InetAddress類中哪個(gè)方法可實(shí)現(xiàn)正向名稱解析?(C)
A.isReachable()B.getHostAddress()
C.getHosstName()D.getByName()11.Java提供的類InetAddress來(lái)進(jìn)行有關(guān)Internet地址的操作。(D)A.SocketB.ServerSocketC.DatagramSocketD.InetAddress12.Java程序中,使用TCP套接字編寫(xiě)服務(wù)端程序的套接字類是(B)A.SocketB.ServerSocketC.DatagramSocketD.DatagramPacket13.ServerSocket的監(jiān)聽(tīng)方法accept()的返回值類型是(C)A.voidB.ObjectC.SocketD.DatagramSocket14.ServerSocket的getInetAddress()的返回值類型是(C)A.SocketB.ServerSocketC.InetAddressD.URL15.當(dāng)使用客戶端套接字Socket創(chuàng)建對(duì)象時(shí),需要指定(A)A.服務(wù)器主機(jī)名稱和端口B.服務(wù)器端口和文件C.服務(wù)器名稱和文件D.服務(wù)器地址和文件16.使用流式套接字編程時(shí),為了向?qū)Ψ桨l(fā)送數(shù)據(jù),則需要使用哪個(gè)方法(C)A.getInetAddress()B.getLocalPort()C.getOutputStream()D.getInputStream()17.使用UDP套接字通信時(shí),常用哪個(gè)類把要發(fā)送的信息打包?(D)A.StringB.DatagramSocketC.MulticastSocketD.DatagramPacket18.使用UDP套接字通信時(shí),哪個(gè)方法用于接收數(shù)據(jù)(B)A.read()B.receive()C.accept()D.Listen()19.若要取得數(shù)據(jù)包的中源地址,可使用下列哪個(gè)語(yǔ)句(A)?A.getAddress()B.getPort()C.getName()D.getData()20.如果在關(guān)閉socket時(shí)發(fā)生一個(gè)I/O錯(cuò)誤,會(huì)拋出(A)異常。A.IOExceptionB.UnknownHostExceptionC.SocketExceptionD.MalformedURLExceptin
三、簡(jiǎn)答題1.什么是URL?基本的格式是?統(tǒng)一資源定位符(URL,英語(yǔ)UniformResourceLocator的縮寫(xiě)),它的英文簡(jiǎn)稱叫做URL。也被稱為網(wǎng)頁(yè)地址,是因特網(wǎng)上標(biāo)準(zhǔn)的資源的地址。格式:協(xié)議類型://服務(wù)器地址[:端口號(hào)]/路徑/文件名[參數(shù)=值]2.客戶機(jī)和服務(wù)器模式有什么特點(diǎn)?(1)可實(shí)現(xiàn)資源共享。。(2)可實(shí)現(xiàn)管理科學(xué)化和專業(yè)化。(3)可快速進(jìn)行信息處理。(4)能更好地保護(hù)原有的資源。3.Socket類和ServerSocket類的區(qū)別是什么?答題要點(diǎn):Socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過(guò)"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。一般來(lái)說(shuō),ServerSocket是服務(wù)器端,Socket是客戶端。socket用于呼叫遠(yuǎn)端機(jī)器上的一個(gè)端口,主動(dòng)的發(fā)送數(shù)據(jù)ServerSocket用于在本機(jī)開(kāi)一個(gè)端口,被動(dòng)的等待數(shù)據(jù)(用accept方法)并建立連接進(jìn)行數(shù)據(jù)交互。4.簡(jiǎn)述TCP與UDP的區(qū)別。答題要點(diǎn):TCP和UDP是OSI模型中的傳輸層中的協(xié)議。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細(xì)節(jié)控制交給應(yīng)用的通信傳輸。兩者的區(qū)別大致如下:TCP面向連接,UDP面向非連接即發(fā)送數(shù)據(jù)前不需要建立連接;TCP提供可靠的服務(wù)(數(shù)據(jù)傳輸),UDP無(wú)法保證;TCP面向字節(jié)流,UDP面向報(bào)文;TCP數(shù)據(jù)傳輸慢,UDP數(shù)據(jù)傳輸快;5.簡(jiǎn)述基于TCP的Socket編程的主要步驟。答題要點(diǎn):服務(wù)器端(server):(1)構(gòu)建一個(gè)ServerSocket實(shí)例,指定本地的端口。這個(gè)socket就是用來(lái)監(jiān)聽(tīng)指定端口的連接請(qǐng)求的。(2)調(diào)用ServerSocket的accept()方法來(lái)獲得客戶端的連接請(qǐng)求,返回的socket實(shí)例,即建立了一個(gè)和客戶端的新連接。(3)通過(guò)返回的socket實(shí)例調(diào)用getInputStream和getOutputStream方法,獲取輸入輸出流,分別調(diào)用read()、write()方法用來(lái)讀和寫(xiě)數(shù)據(jù)。(4)調(diào)用socket實(shí)例的close()方法關(guān)閉socket連接。客戶端(client):(1)創(chuàng)建客戶端Socket對(duì)象,指定服務(wù)端IP和端口,請(qǐng)求服務(wù)端連接。(2)通過(guò)Socket對(duì)象調(diào)用getOutputStream()和getOutputStream()方法得到輸入輸出流對(duì)象。通過(guò)輸入輸出流對(duì)象,調(diào)用對(duì)應(yīng)的read(),write()方法與服務(wù)器端進(jìn)行數(shù)據(jù)讀寫(xiě),完成與服務(wù)器的通信。(3)操作結(jié)束后通過(guò)Socket類對(duì)象調(diào)用close()方法關(guān)閉與服務(wù)器端的連接。簡(jiǎn)述基于UDP協(xié)議編程的開(kāi)發(fā)步驟。答題要點(diǎn):Java基于UDP編程步驟一般是按照基于UDP的通信模型,分為接收端和發(fā)送端。接收端程序的基本步驟:(1)通過(guò)DatagramSocket(intport)創(chuàng)建接收端的數(shù)據(jù)報(bào)套接字對(duì)象,并綁定指定端口。(2)通過(guò)DatagramPacket(byte[]buf,intlength)創(chuàng)建接收端的數(shù)據(jù)報(bào)包對(duì)象,指定字節(jié)數(shù)組和長(zhǎng)度用于接收數(shù)據(jù)報(bào)包。(3)調(diào)用DatagramSocket的receive(DatagramPacketp)方法,接收數(shù)據(jù)報(bào)包。(4)調(diào)用DatagramPacket類對(duì)象的getData()方法解析數(shù)據(jù)報(bào)包。(5)關(guān)閉DatagramSocket。發(fā)送端程序的基本步驟:(1)通過(guò)DatagramSocket()或DatagramSocket(intport)創(chuàng)建發(fā)送端的數(shù)據(jù)報(bào)套接字對(duì)象。(2)通過(guò)DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)創(chuàng)建數(shù)據(jù)報(bào)包對(duì)象,即要發(fā)送的數(shù)據(jù)報(bào)包,包含:數(shù)據(jù)、長(zhǎng)度、接收端的IP地址和端口號(hào)。(3)調(diào)用DatagramSocket的send(DatagramPacketp)方法發(fā)送數(shù)據(jù)報(bào)包。(4)關(guān)閉數(shù)據(jù)報(bào)套接字。6.什么是socket?答題要點(diǎn):所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過(guò)"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。我們開(kāi)發(fā)的網(wǎng)絡(luò)應(yīng)用程序位于應(yīng)用層,TCP和UDP屬于傳輸層協(xié)議,在應(yīng)用層和傳輸層之間,則是使用套接字來(lái)進(jìn)行分離。Socket本身并不是協(xié)議,是應(yīng)用層與TCP/IP協(xié)議棧通信的中間軟件抽象層,它是一組接口,是對(duì)TCP/IP協(xié)議的封裝,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,使得程序員更方便地使用TCP/IP協(xié)議棧。一個(gè)Socket套接字與主機(jī)地址和端口地址相關(guān)聯(lián)。即一個(gè)Socket等于“IP地址+端口號(hào)”。7.寫(xiě)出DatagramSocket的常用構(gòu)造方法答題要點(diǎn):DatagramSocket();DatagramSocket(intprot);DatagramSocket(intport,InetAddressladdr)其中port指明socket所使用的端口號(hào),如果未指明端口號(hào),則把socket連接到本地主機(jī)上一個(gè)可用的端口。laddr指明一個(gè)可用的本地地址。8.寫(xiě)出在接收端接收數(shù)據(jù)報(bào)的主要語(yǔ)句。答題要點(diǎn):bytebuf[]=newbyte[n];DatagramPacketpacket=newDatagramPacket(buf,n);Socket.receive(packet);9.建立socket需要哪些步驟?答題要點(diǎn):(1)調(diào)用Socket類的構(gòu)造函數(shù),建立客戶端Socket;(2)處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),建立服務(wù)器端Socket;(3)監(jiān)聽(tīng)服務(wù)器連接;(4)使用Socket的方法來(lái)創(chuàng)建輸入或輸出流五、Java程序員面試題1.寫(xiě)出建立TCP服務(wù)器ServerSocket的代碼。并說(shuō)明accept方法有什么特點(diǎn)?答題要點(diǎn)://服務(wù)器監(jiān)聽(tīng)請(qǐng)求;ServerSocketss=newServerSocket(9999);//接受請(qǐng)求:創(chuàng)建了socket;Socketsocket=ss.accept();accept方法,調(diào)用這個(gè)方法后,服務(wù)端一直阻塞在那里,直到有客戶端連接進(jìn)來(lái)。2.寫(xiě)出建立TCP客戶端Socket的代碼。并說(shuō)明建立Socket后,通過(guò)什么方法Socket獲得流對(duì)象?答題要點(diǎn)://客戶端向服務(wù)器端發(fā)送請(qǐng)求;Socketsocket=newSocket("",9999);//建好連接后,開(kāi)始傳輸數(shù)據(jù);OutputStreamos=socket.getOutputStream();通過(guò)socket的getOutputStream()方法獲得流對(duì)象。學(xué)習(xí)領(lǐng)域8Java數(shù)據(jù)庫(kù)編程課后習(xí)題一、填空題1.URL定義了連接數(shù)據(jù)庫(kù)時(shí)的協(xié)議、_______子協(xié)議_______和數(shù)據(jù)庫(kù)標(biāo)識(shí)。2.JDBCAPI提供的連接和操作數(shù)據(jù)庫(kù)的類和接口位于_______javax.sql_______包和java.sql包中。3.ResultSet對(duì)象的______next()______方法表示將光標(biāo)從當(dāng)前位置移向下一行。4.一個(gè)Statement對(duì)象,可以執(zhí)行多個(gè)sql語(yǔ)句以后,批量更新。這多個(gè)語(yǔ)句可以是delete、update、insert等或兼有
5.Java數(shù)據(jù)庫(kù)操作基本流程:加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)、取得數(shù)據(jù)庫(kù)連接、執(zhí)行sql語(yǔ)句、處理執(zhí)行結(jié)果、釋放數(shù)據(jù)庫(kù)連接。6.接口Statement中定義的execute方法的返回類型是__boolean__。7.executeQuery方法返回的類型是__ResultSet___。8.executeUpdate返回的類型是_int__。9.JDBC的全稱是__________JavaDataBaseConnectivity_________________________。10.DAO的全稱________DataAccessObject___________________________。二、單選題1.下面是一組對(duì)JDBC的描述,正確的說(shuō)法是____B_______。A.JDBC是一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)B.JDBC是一個(gè)由類和接口組成的APIC.JDBC是一個(gè)驅(qū)動(dòng)查詢D.JDBC是一組命令2.創(chuàng)建數(shù)據(jù)庫(kù)連接的目的是________A________。A.建立一條通往某個(gè)數(shù)據(jù)庫(kù)的通道B.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序C.清空數(shù)據(jù)庫(kù)D.為數(shù)據(jù)庫(kù)增加記錄3.要為數(shù)據(jù)庫(kù)增加記錄,應(yīng)調(diào)用Statement對(duì)象的___________C______方法。A.addRecord()B.executeQuery()C.executeUpdate()D.executeAdd()4.PreparedStatement對(duì)象的_______C_____方法執(zhí)行包含參數(shù)的動(dòng)態(tài)INSERT、UPDATE、DELETE語(yǔ)句。A.query()B.execute()C.executeUpdate()D.executeQuery()5.ResultSetMetaData對(duì)象的________A___________方法返回指定列序號(hào)的列名。A.getColumnName()B.getColumnCount()C.getColumnLabel()D.getColumnType()6.下列SQL語(yǔ)句中,哪一項(xiàng)可用executeQuery()方法發(fā)送到數(shù)據(jù)庫(kù)______C________。A.UpdateB.DeleteC.SelectD.Insert7.下面哪個(gè)選項(xiàng)不是客戶端的Java應(yīng)用程序需要完成的工作_________A______。A.與數(shù)據(jù)庫(kù)的某個(gè)表建立連接B.與特定的數(shù)據(jù)庫(kù)建立連接C.發(fā)送SQL語(yǔ)句,得到查詢結(jié)果D.關(guān)閉與JDBC服務(wù)器的連接8.使用JDBC訪問(wèn)數(shù)據(jù)庫(kù)時(shí),下列關(guān)于JDBC的說(shuō)法正確的是(C)。A.Connection接口負(fù)責(zé)執(zhí)行SQL語(yǔ)句。B.可以使用Class.forName()方法把JDBC驅(qū)動(dòng)類裝載入Java虛擬機(jī)中。C.Statement接口由Connection產(chǎn)生負(fù)責(zé)保存返回的查詢結(jié)果。D.DriverManager類負(fù)責(zé)連接數(shù)據(jù)庫(kù)并傳送數(shù)據(jù)。9.在Java中,以下關(guān)于得到ResultSet對(duì)象、PreparedStatement對(duì)象、Statement對(duì)象的說(shuō)法,正確的是(A)A.可以使用Statement對(duì)象的executeQuery方法返回ResultSet對(duì)象B.可以使用Connection對(duì)象的createStatement方法獲得PreparedStatement對(duì)象C.可以使用Connection對(duì)象的createStatement方法獲得ResultSet對(duì)象D.可以使用Connection對(duì)象的executeQuery方法返回ResultSet對(duì)象10.在下列選項(xiàng)中,哪一個(gè)可執(zhí)行同構(gòu)的sql語(yǔ)句?(C)A.CallableStatementB.StatementC.PreparedStatement11.JDBC編程的異常類型分為()A.SQLExceptionB.SQLErrorC.SQLFatalD.SQLTruncation12.接口Statement中定義的execute方法的返回類型所代表的含義是(C)A.結(jié)果集ResultSetB.受影響的記錄數(shù)量C.有無(wú)ResultSet返回13.JDBC接口Statement中定義的execute()方法的返回類型是(C)。A.ResultSetB.intC.booleanD.受影響的記錄數(shù)量14.Java程序與數(shù)據(jù)庫(kù)連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語(yǔ)句?(B)A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()15.java程序與數(shù)據(jù)庫(kù)連接后,需要修改某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語(yǔ)句?(B)A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()16.在Java中,JDBCAPI定義了一組用于與數(shù)據(jù)庫(kù)進(jìn)行通信的接口和類,它們包括在(B)包。A.java.langB.java.sqlC.java.utilD.java.math17.在Java中,使用JDBC開(kāi)發(fā)應(yīng)用程序時(shí)處理步驟正確的是(A)。A.1.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng);2.創(chuàng)建數(shù)據(jù)庫(kù)連接;3.執(zhí)行SQL命令;4.處理結(jié)果B.1.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng);2..執(zhí)行SQL命令;3.創(chuàng)建數(shù)據(jù)庫(kù)連接;4.處理結(jié)果C.1.創(chuàng)建數(shù)據(jù)庫(kù)連接;2.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng);3.執(zhí)行SQL命令;4.處理結(jié)果D.1.創(chuàng)建數(shù)據(jù)庫(kù)連接;2.執(zhí)行SQL命令;3.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng);4.處理結(jié)果18.假設(shè)Mysql數(shù)據(jù)庫(kù)中有表book,包含兩個(gè)字段:id整型,title字符型。向此表插入數(shù)據(jù)的Java代碼片段如下所示,其中con為已正確獲得的連接數(shù)據(jù)庫(kù)的Connection對(duì)象,則以下描述正確的是(C)PreparedStatementpstmt=con.preparedStatement(“insertintobook(id,title)values(?,?)“);Pstmt.setInt(0,10);Pstmt.setString(1,”Java”);Pstmt.excuteUpdate();A.創(chuàng)建PreparedStatement對(duì)象的語(yǔ)句有錯(cuò)誤B.向book表插入數(shù)據(jù)的sql語(yǔ)句有錯(cuò)誤C.setInt、setString方法有錯(cuò)誤D.PreparedStatement沒(méi)有executeUpdate()方法19.以下選項(xiàng)中關(guān)于DAO模式的說(shuō)法錯(cuò)誤的是(C)A.DAO是“DataAccessObject”的含義,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)資源的訪問(wèn)。B.DAO模式中要定義DAO接口和實(shí)現(xiàn)類,隔離了不同數(shù)據(jù)庫(kù)的實(shí)現(xiàn)。C,DAO負(fù)責(zé)執(zhí)行業(yè)務(wù)邏輯操作,將業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)隔離開(kāi)來(lái)D.使用DAO模式提高了數(shù)據(jù)訪問(wèn)代碼的復(fù)用性20.以下選項(xiàng)中關(guān)于Java分層開(kāi)發(fā)技術(shù)中實(shí)體類的說(shuō)法錯(cuò)誤的是(D)A.在分層開(kāi)發(fā)中,不同層之間可以通過(guò)實(shí)體類來(lái)傳輸數(shù)據(jù)B.實(shí)體類一般對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表,其屬性和數(shù)據(jù)庫(kù)表的字段對(duì)應(yīng)C.實(shí)體類最好實(shí)現(xiàn)java.io.Serializable,支持序列化機(jī)制D.實(shí)體類的屬性和方法一般均使用public修飾21.為了實(shí)現(xiàn)在Java的程序中調(diào)用帶參數(shù)的SQL語(yǔ)句,應(yīng)該采用那個(gè)類來(lái)完成(B)。A.Connection類B.PreparedStatement類C.ResultSet類D.Statement類22.下列選項(xiàng)對(duì)DBCP數(shù)據(jù)庫(kù)連接池描述錯(cuò)誤的是:(D)A.initialSize屬性,表示初始化連接數(shù)目B.maxActive屬性設(shè)置最大的活動(dòng)連接數(shù)C.maxWait屬性,表式連接池中連接用完時(shí),新的請(qǐng)求等待時(shí)間D.maxIdle表示最小空閑連接數(shù)23.下面關(guān)于JSON說(shuō)法錯(cuò)誤的是:(D)A.json是一種數(shù)據(jù)交互格式B.json的數(shù)據(jù)格式有兩種為{}和[]C.json數(shù)據(jù)用{}表示java中的對(duì)象,[]表示Java中的List對(duì)象D.{“1”:”123”,”2”:”234”,”3”:”345”}不是json數(shù)據(jù)三、簡(jiǎn)答題1.簡(jiǎn)述java.sql包中主要類和接口的作用。答題要點(diǎn):Driver接口,它是所有JDBC驅(qū)動(dòng)程序必須實(shí)現(xiàn)的接口。DriverManager類,驅(qū)動(dòng)程序管理器類,用于加載JDBC驅(qū)動(dòng)并創(chuàng)建與數(shù)據(jù)庫(kù)的連接。Connection接口,表示與指定數(shù)據(jù)庫(kù)的連接。Statement接口,將SQL語(yǔ)句傳送給數(shù)據(jù)庫(kù)并返回結(jié)果。ResultSet接口,針對(duì)有返回結(jié)果的SQL語(yǔ)句,ResultSet接口用來(lái)處理結(jié)果。2.簡(jiǎn)述使用JDBC操作數(shù)據(jù)庫(kù)的基本步驟。答題要點(diǎn):JDBC操作數(shù)據(jù)庫(kù)的基本步驟: 加載JDBC驅(qū)動(dòng)程序 獲取數(shù)據(jù)庫(kù)的連接 創(chuàng)建Statement對(duì)象 執(zhí)行SQL語(yǔ)句 處理sql的返回結(jié)果 關(guān)閉連接3.常用的數(shù)據(jù)庫(kù)操作對(duì)象有哪些?這些對(duì)象分別用來(lái)做什么?答題要點(diǎn):數(shù)據(jù)庫(kù)對(duì)象是數(shù)據(jù)庫(kù)的組成部分,除了數(shù)據(jù)庫(kù)本身外,常見(jiàn)的對(duì)象有:表(Table),用來(lái)存放數(shù)據(jù)記錄。索引(Index),索引是根據(jù)指定的數(shù)據(jù)庫(kù)表列建立起來(lái)的順序。視圖(View),視圖是一個(gè)虛擬的表,是由查詢數(shù)據(jù)表產(chǎn)生的。數(shù)據(jù)庫(kù)關(guān)系圖(Databasediagram),描述表之間的關(guān)系以及表的行列屬性。默認(rèn)值(Default),對(duì)沒(méi)有指定其具體值的列或列數(shù)據(jù)項(xiàng)賦予事先設(shè)定好的值。規(guī)則(Rule),對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)信息的限制,其限定的是表的列。存儲(chǔ)過(guò)程(StoredProcedure),存是為完成特定功能而匯集在一起的一組SQL程序語(yǔ)句,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中的SQL程序。觸發(fā)器(Trigger),是一個(gè)用戶定義的SQL事務(wù)命令的集合用戶(User),是有權(quán)限訪問(wèn)數(shù)據(jù)庫(kù)的使用者。4.ResultSet對(duì)象的作用是什么?該對(duì)象的常用方法有哪些?答題要點(diǎn):ResultSet對(duì)象的作用是用來(lái)存放查詢結(jié)果。ResultSet常用方法有:next() 將光標(biāo)從當(dāng)前位置向下移動(dòng)一行,也就是讀取下一行previous() 將光標(biāo)從當(dāng)前位置向上移動(dòng)一行,也就是讀取上一行close() 關(guān)閉ResultSet對(duì)象getInt(int) 以int的形式獲取結(jié)果集,以當(dāng)前行指定序號(hào)的值,以列的編號(hào)或者列的名字getInt(String) 以下跟以上一樣以此類推getFloat(int) getFloat(String) getString(int) getString(String) getRow() 得到光標(biāo)當(dāng)前所指定的行號(hào)absolute() 光標(biāo)移動(dòng)到row指定的行5.刪除、增加、修改和查詢記錄的SQL語(yǔ)法是什么?其對(duì)應(yīng)的Statement方法又是什么?答題要點(diǎn):增加記錄的SQL語(yǔ)法是:Insertinto表名(字段1,字段2)values('字段1的值','字段2的值');其使用Statement對(duì)象的executeUpdate()方法刪除記錄的SQL語(yǔ)法是:Delete表名where條件;其使用Statement對(duì)象的executeUpdate()方法修改記錄的SQL語(yǔ)法是:Update表名set字段名=‘賦值名’where條件字段名=‘條件值’;其使用Statement對(duì)象的executeUpdate()方法查詢記錄的SQL語(yǔ)法是:Select*from表名;使用Statement對(duì)象的executeQuery()方法6.Statement和PreparedStatement有什么區(qū)別?哪個(gè)性能更好?答題要點(diǎn):Statement和PreparedStatement的區(qū)別:(1)PreparedStatement接口代表預(yù)編譯的語(yǔ)句,它主要的優(yōu)勢(shì)在于可以減少SQL的編譯錯(cuò)誤并增加SQL的安全性(減少SQL注射攻擊的可能性);(2)PreparedStatement中的SQL語(yǔ)句是可以帶參數(shù)的,避免了用字符串連接拼接SQL語(yǔ)句的麻煩和不安全;(3)當(dāng)批量處理SQL或頻繁執(zhí)行相同的查詢時(shí),PreparedStatement有明顯的性能上的優(yōu)勢(shì),由于數(shù)據(jù)庫(kù)可以將編譯優(yōu)化后的SQL語(yǔ)句緩存起來(lái),下次執(zhí)行相同結(jié)構(gòu)的語(yǔ)句時(shí)就會(huì)很快(不用再次編譯和生成執(zhí)行計(jì)劃)。建議使用預(yù)編譯的PreparedStatement,不但效率高,能夠重用,而且安全。7.在進(jìn)行數(shù)據(jù)庫(kù)編程時(shí),連接池有什么作用?答題要點(diǎn):為了提升系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)的性能,可以事先創(chuàng)建若干連接置于連接池中,需要時(shí)直接從連接池獲取,使用結(jié)束時(shí)歸還連接池而不必關(guān)閉連接,從而避免頻繁創(chuàng)建和釋放連接所造成的開(kāi)銷,這是典型的用空間換取時(shí)間的策略。8.什么是DAO模式?答題要點(diǎn):DAO(DataAccessObject)是一個(gè)為數(shù)據(jù)庫(kù)或其他持久化機(jī)制提供了抽象接口的對(duì)象,其中聲明增刪改查方法,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時(shí)候則使用這個(gè)接口,再設(shè)計(jì)DAO實(shí)現(xiàn)類DAOImpl,具體實(shí)現(xiàn)DAO接口中聲明的數(shù)據(jù)庫(kù)表操作方法。使用DAO設(shè)計(jì)模式可以簡(jiǎn)化大量代碼,增強(qiáng)程序的可移植性。9.簡(jiǎn)述Java使用statement接口執(zhí)行sql語(yǔ)句操作的方法答題要點(diǎn):statement執(zhí)行sql語(yǔ)句主要有兩種方法:(1)對(duì)數(shù)據(jù)庫(kù)的增、刪、改等操作時(shí),使用stmt.executeupdate(sql)執(zhí)行給定sql語(yǔ)句,分別為insert、update、delete,返回結(jié)果為受影響的行數(shù)。(2)對(duì)數(shù)據(jù)庫(kù)作查詢時(shí),直接使用stmt.executequery(sql),返回結(jié)果為一個(gè)resultset結(jié)果集。10.什么是JDBC?答題要點(diǎn):JDBC(JavaDataBaseConnectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類和接口組成。11.什么是第三方組件?答題要點(diǎn):第三方組件是針對(duì)某種軟件在應(yīng)用功能上的不足或缺陷,而由軟件編制方以外的其他公司、組織或個(gè)人開(kāi)發(fā)的相關(guān)組件。第三方組件一般是自定義組件或者用戶組件,它們繼承自Java中的某些基類,重寫(xiě)或者擴(kuò)展了一些方法和屬性,從而能實(shí)現(xiàn)某些新的功能。12.簡(jiǎn)述第三方組件的使用方法。答題要點(diǎn):在Java工程項(xiàng)目中使用第三方組件的方法可歸納如下:(1)下載第三方組件相應(yīng)的依賴包jar包文件。(2)將jar包導(dǎo)入到Java工程項(xiàng)目中。(3)引用jar包的接口、類、方法等編寫(xiě)應(yīng)用程序。13.JSON是什么?答題要點(diǎn):JSON的全稱是”JavaScriptObjectNotation”,意思是JavaScript對(duì)象表示法,它是一種基于文本,獨(dú)立于語(yǔ)言的輕量級(jí)數(shù)據(jù)交換格式。JSON有兩種表示結(jié)構(gòu),對(duì)象和數(shù)組。14.數(shù)據(jù)庫(kù)連接池的思想是什么?有哪些常用的數(shù)據(jù)庫(kù)連接池?答題要點(diǎn):數(shù)據(jù)庫(kù)連接池(ConnectionPool)技術(shù)的核心思想是:連接復(fù)用,為數(shù)據(jù)庫(kù)連接建立一個(gè)“緩沖池”,預(yù)先在池中放入一定數(shù)量的數(shù)據(jù)庫(kù)連接管道。通過(guò)建立一個(gè)數(shù)據(jù)庫(kù)連接池以及一套連接使用、分配、管理策略,使得該連接池中的連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫(kù)連接頻繁建立、關(guān)閉的開(kāi)銷。15.什么是數(shù)據(jù)的可視化?數(shù)據(jù)可視化框架有哪些?答題要點(diǎn):數(shù)據(jù)可視化是根據(jù)數(shù)據(jù)的特性,如時(shí)間信息和空間信息等,以合適的可視化方式,例如圖表(Chart)、圖(Diagram)和地圖(Map)等,將數(shù)據(jù)直觀地展現(xiàn)出來(lái),以幫助人們理解數(shù)據(jù)。數(shù)據(jù)可視化是軟件項(xiàng)目生命周期中的最后一步,也是最重要的一步。數(shù)據(jù)可視化的框架主要有D3、ECharts及其他小框架JFreeChart等。五、Java程序員面試題1.使用JDBC操作數(shù)據(jù)庫(kù)時(shí),如何提升讀取數(shù)據(jù)的性能?如何提升更新數(shù)據(jù)的性能?答題要點(diǎn):要提升讀取數(shù)據(jù)的性能,可以指定通過(guò)結(jié)果集(ResultSet)對(duì)象的setFetchSize()方法指定每次抓取的記錄數(shù)(典型的空間換時(shí)間策略);要提升更新數(shù)據(jù)的性能可以使用PreparedStatement語(yǔ)句構(gòu)建批處理,將若干SQL語(yǔ)句置于一個(gè)批處理中執(zhí)行。2.事務(wù)的ACID是指什么?答題要點(diǎn):事務(wù)具有四個(gè)屬性:原子性(Atomic)、一致性(Consistent)、隔離性(Isolated)、持久性(Durable),這四個(gè)屬性通常被稱為ACID特性。學(xué)習(xí)領(lǐng)域9Java設(shè)計(jì)模式課后習(xí)題一、填空題1.面向?qū)ο蟮牧鶙l基本原則包括:開(kāi)閉原則,里式代換原則,合成聚合原則以及___依賴倒轉(zhuǎn)_____、___迪米特法則________
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深海打撈裝備的作業(yè)模擬訓(xùn)練系統(tǒng)考核試卷
- 塑料鞋生產(chǎn)過(guò)程中的能源管理考核試卷
- 小吃店食品安全監(jiān)控技術(shù)考核試卷
- 液壓元件在實(shí)驗(yàn)室設(shè)備中的應(yīng)用考核試卷
- 汽車輪胎壓力警報(bào)器校準(zhǔn)考核試卷
- 批發(fā)業(yè)消費(fèi)者行為研究考核試卷
- 體育代訓(xùn)合同范例
- 出車費(fèi)用合同標(biāo)準(zhǔn)文本
- 漁網(wǎng)自動(dòng)化編織考核試卷
- 兼職送菜送菜合同標(biāo)準(zhǔn)文本
- GB/T 28957.1-2023道路車輛用于濾清器評(píng)定的試驗(yàn)粉塵第1部分:氧化硅試驗(yàn)粉塵
- 大數(shù)據(jù)導(dǎo)論(通識(shí)課版)-第3章-大數(shù)據(jù)技術(shù)(2020年春季學(xué)期)
- 飛行員政審的個(gè)人自傳
- 幼兒園安全教育課件:《私自離園危險(xiǎn)多》
- 23秋國(guó)家開(kāi)放大學(xué)《液壓氣動(dòng)技術(shù)》形考任務(wù)1-3參考答案
- 廣東省通用安裝工程綜合定額(2018)Excel版
- 15軌道車檢查保養(yǎng)指導(dǎo)書(shū)
- 前言 馬克思主義中國(guó)化時(shí)代化的歷史進(jìn)程與理論成果
- 瀘西電解鋁廠施工方案
- 035-花籃螺桿懸挑腳手架施工技術(shù)交底
- 人教版四年級(jí)數(shù)學(xué)下冊(cè) (小數(shù)的意義)小數(shù)的意義和性質(zhì)課件
評(píng)論
0/150
提交評(píng)論