計(jì)算機(jī)考試二級(jí)java模擬試題(含答案)
在社會(huì)的各個(gè)領(lǐng)域,我們或多或少都會(huì)接觸到試題,借助試題可以為主辦方提供考生某方面的知識(shí)或技能狀況的信息。一份好的試題都具備什么特點(diǎn)呢?下面是小編收集整理的計(jì)算機(jī)考試二級(jí)java模擬試題(含答案),供大家參考借鑒,希望可以幫助到有需要的朋友。
計(jì)算機(jī)考試二級(jí)java模擬試題(含答案) 1
1)Java 中能創(chuàng)建 Volatile 數(shù)組嗎?
能,Java 中可以創(chuàng)建 volatile 類型數(shù)組,不過(guò)只是一個(gè)指向數(shù)組的引用,而不是整個(gè)數(shù)組。我的意思是,如果改變引用指向的數(shù)組,將會(huì)受到 volatile 的保護(hù),但是如果多個(gè)線程同時(shí)改變數(shù)組的元素,volatile 標(biāo)示符就不能起到之前的保護(hù)作用了。
2)volatile 能使得一個(gè)非原子操作變成原子操作嗎?
一個(gè)典型的例子是在類中有一個(gè) long 類型的成員變量。如果你知道該成員變量會(huì)被多個(gè)線程訪問(wèn),如計(jì)數(shù)器、價(jià)格等,你最好是將其設(shè)置為 volatile。為什么?因?yàn)?Java 中讀取 long 類型變量不是原子的,需要分成兩步,如果一個(gè)線程正在修改該 long 變量的值,另一個(gè)線程可能只能看到該值的一半(前 32 位)。但是對(duì)一個(gè) volatile 型的 long 或 double 變量的讀寫是原子。
3)volatile 修飾符的有過(guò)什么實(shí)踐?
一種實(shí)踐是用 volatile 修飾 long 和 double 變量,使其能按原子類型來(lái)讀寫。double 和 long 都是64位寬,因此對(duì)這兩種類型的讀是分為兩部分的,第一次讀取第一個(gè) 32 位,然后再讀剩下的 32 位,這個(gè)過(guò)程不是原子的,但 Java 中 volatile 型的 long 或 double 變量的讀寫是原子的。volatile 修復(fù)符的另一個(gè)作用是提供內(nèi)存屏障(memory barrier),例如在分布式框架中的應(yīng)用。簡(jiǎn)單的`說(shuō),就是當(dāng)你寫一個(gè) volatile 變量之前,Java 內(nèi)存模型會(huì)插入一個(gè)寫屏障(write barrier),讀一個(gè) volatile 變量之前,會(huì)插入一個(gè)讀屏障(read barrier)。意思就是說(shuō),在你寫一個(gè) volatile 域時(shí),能保證任何線程都能看到你寫的值,同時(shí),在寫之前,也能保證任何數(shù)值的更新對(duì)所有線程是可見的,因?yàn)閮?nèi)存屏障會(huì)將其他所有寫的值更新到緩存。
4)volatile 類型變量提供什么保證?(答案)
volatile 變量提供順序和可見性保證,例如,JVM 或者 JIT為了獲得更好的性能會(huì)對(duì)語(yǔ)句重排序,但是 volatile 類型變量即使在沒有同步塊的情況下賦值也不會(huì)與其他語(yǔ)句重排序。 volatile 提供 happens-before 的保證,確保一個(gè)線程的修改能對(duì)其他線程是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位數(shù)據(jù)類型,像 long 和 double 都不是原子的,但 volatile 類型的 double 和 long 就是原子的。
5) 10 個(gè)線程和 2 個(gè)線程的同步代碼,哪個(gè)更容易寫?
從寫代碼的角度來(lái)說(shuō),兩者的復(fù)雜度是相同的,因?yàn)橥酱a與線程數(shù)量是相互獨(dú)立的。但是同步策略的選擇依賴于線程的數(shù)量,因?yàn)樵蕉嗟木程意味著更大的競(jìng)爭(zhēng),所以你需要利用同步技術(shù),如鎖分離,這要求更復(fù)雜的代碼和專業(yè)知識(shí)。
6)你是如何調(diào)用 wait()方法的?使用 if 塊還是循環(huán)?為什么?(答案)
wait() 方法應(yīng)該在循環(huán)調(diào)用,因?yàn)楫?dāng)線程獲取到 CPU 開始執(zhí)行的時(shí)候,其他條件可能還沒有滿足,所以在處理前,循環(huán)檢測(cè)條件是否滿足會(huì)更好。下面是一段標(biāo)準(zhǔn)的使用 wait 和 notify 方法的代碼:
// The standard idiom for using the wait method
參見 Effective Java 第 69 條,獲取更多關(guān)于為什么應(yīng)該在循環(huán)中來(lái)調(diào)用 wait 方法的內(nèi)容。
計(jì)算機(jī)考試二級(jí)java模擬試題(含答案) 2
1、編寫一個(gè)Java程序,用if-else語(yǔ)句判斷某年份是否為閏年。
閏年特點(diǎn):
、、普通年能被4整除;且不能被100整除的為閏年。(如2004年就是閏年,1901年不是閏年)
②、世紀(jì)年能被400整除的是閏年。(如2000年是閏年,1900年不是閏年) ③、對(duì)于數(shù)值很大的年份,既能整除3200,又能整除172800是閏年。如172800年是閏年,86400年不是閏年(因?yàn)殡m然能整除3200,但不能整除172800)。
2、編寫一個(gè)Java程序在屏幕上輸出1!+2!+3!+??+10!的和。
3、打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè) "水仙花數(shù) ",因?yàn)?53=1的三次方+5的三次方+3的三次方。
4、利用遞歸方法求5!。
5、一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。
6、編寫一個(gè)Java應(yīng)用程序,要求如下
1)從控制臺(tái)輸入兩個(gè)字符串;
2)重載三個(gè)方法,方法名add,分別完成字符串拼接、整數(shù)相加、浮點(diǎn)數(shù)相加,返回 String,并在控制臺(tái)分別輸出返回結(jié)果;
3)要求處理異常,輸入字符串不符合要求時(shí)給出提示,不能使程序崩潰;
4)輸入“esc”時(shí)退出程序,否則可以重復(fù)執(zhí)行。
7、、有n個(gè)人圍成一圈,順序排號(hào)。從第一個(gè)人開始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人退出圈子,問(wèn)最后留下的是原來(lái)第幾號(hào)的那位。
8、大整數(shù)計(jì)算器,要求從控制臺(tái)輸入。
。ɡ纾100000000000000000000+20000000000000000000)
9、(1)編寫一個(gè)圓類Circle,該類擁有:
、僖粋(gè)成員變量
Radius(私有,浮點(diǎn)型); // 存放圓的半徑;
②兩個(gè)構(gòu)造方法
Circle( ) // 將半徑設(shè)為0
Circle(double r ) //創(chuàng)建Circle對(duì)象時(shí)將半徑初始化為r
、 三個(gè)成員方法
double getArea( ) //獲取圓的.面積
double getPerimeter( ) //獲取圓的周長(zhǎng)
void show( ) //將圓的半徑、周長(zhǎng)、面積輸出到屏幕
。2)編寫一個(gè)圓柱體類Cylinder,它繼承于上面的Circle類。還擁有:
Java筆試題
、僖粋(gè)成員變量
double hight(私有,浮點(diǎn)型); // 圓柱體的高;
②構(gòu)造方法
Cylinder (double r, double h ) //創(chuàng)建Circle對(duì)象時(shí)將半徑初始化為r ③ 成員方法
double getVolume( ) //獲取圓柱體的體積
void showVolume( ) //將圓柱體的體積輸出到屏幕
編寫應(yīng)用程序,創(chuàng)建類的對(duì)象,分別設(shè)置圓的半徑、圓柱體的高,計(jì)算并分別顯示圓半徑、圓面積、圓周長(zhǎng),圓柱體的體積。(20分)
計(jì)算機(jī)考試二級(jí)java模擬試題(含答案) 3
1.Spring的事務(wù)有哪些?
什么是數(shù)據(jù)庫(kù)事務(wù):訪問(wèn)并可能改變數(shù)據(jù)庫(kù)中個(gè)數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元。
實(shí)現(xiàn)方式共有兩種:編碼方式即采用注解的方式(類頭的@Transactional為默認(rèn)事務(wù)配置);聲明式事務(wù)管理方式(bean)。
基于AOP技術(shù)實(shí)現(xiàn)的聲明式事務(wù)管理,實(shí)質(zhì)就是:在方法執(zhí)行前后進(jìn)行攔截,然后在目標(biāo)方法開始之前創(chuàng)建并加入事務(wù),執(zhí)行完目標(biāo)方法后根據(jù)執(zhí)行情況提交或回滾事務(wù)。
聲明式事務(wù)管理又有兩種方式:基于XML配置文件的方式;另一個(gè)是在業(yè)務(wù)方法上進(jìn)行@Transactional注解,將事務(wù)規(guī)則應(yīng)用到業(yè)務(wù)邏輯中。
2.Java的鎖有哪幾種?
1、自旋鎖:自旋鎖是采用讓當(dāng)前線程不停地的在循環(huán)體內(nèi)執(zhí)行實(shí)現(xiàn)的,當(dāng)循環(huán)的條件被其他線程改變時(shí) 才能進(jìn)入臨界區(qū)。
2、自旋鎖的其他種類
3、阻塞鎖:常用的有五個(gè)狀態(tài)的鎖都是阻塞所。
4、可重入鎖:ReentrantLock
5、讀寫鎖:寫鎖是排他鎖,讀鎖是共享鎖。
6、互斥鎖
7、悲觀鎖:在整個(gè)數(shù)據(jù)處理過(guò)程中,將數(shù)據(jù)處于鎖定狀態(tài)。 悲觀鎖的實(shí)現(xiàn),往往依靠數(shù)據(jù)庫(kù)提供的鎖機(jī)制。
8、樂(lè)觀鎖:樂(lè)觀鎖假設(shè)認(rèn)為數(shù)據(jù)一般情況下不會(huì)造成沖突,所以在數(shù)據(jù)進(jìn)行提交更新的時(shí)候,才會(huì)正式對(duì)數(shù)據(jù)的沖突與否進(jìn)行檢測(cè),如果發(fā)現(xiàn)沖突了,則讓返回用戶錯(cuò)誤的信息,讓用戶決定如何去做。
公平鎖(Fair):加鎖前檢查是否有排隊(duì)等待的線程,優(yōu)先排隊(duì)等待的線程,先來(lái)先得
非公平鎖(Nonfair):加鎖時(shí)不考慮排隊(duì)等待問(wèn)題,直接嘗試獲取鎖,獲取不到自動(dòng)到隊(duì)尾等待
18、信號(hào)量
3.join的優(yōu)勢(shì)是什么?
mysql不支持Full join。
select * from A inner join B on A.name = B.name;
在ON匹配階段 WHERE 子句的條件都不會(huì)被使用。僅在匹配階段完成以后,WHERE 子句條件才會(huì)被使用。它將從匹配階段產(chǎn)生的數(shù)據(jù)中檢索過(guò)濾。
cross join:交叉連接,得到的結(jié)果是兩個(gè)表的乘積,即笛卡爾積。
還有inner join,left join,right join。
4.用線程實(shí)現(xiàn)輸出1A2B3C....
5.抽象類和接口的區(qū)別
6.JDK1.8和之前版本的區(qū)別
JDK7新特性:
1,switch中可以使用字串了
2,"<>"這個(gè)玩意兒的運(yùn)用ListtempList = new ArrayList<>(); 即泛型實(shí)例化類型自動(dòng)推斷
3. 自定義自動(dòng)關(guān)閉類
4. 新增一些取環(huán)境信息的工具方法
5. Boolean類型反轉(zhuǎn),空指針安全,參與位運(yùn)算
6. 兩個(gè)char間的equals
7,安全的加減乘除
8.數(shù)值可加下劃線
例如:intone_million = 1_000_000;
9.支持二進(jìn)制文字
例如:int binary = 0b1001_1001;
10、在try catch異常撲捉中,一個(gè)catch可以寫多個(gè)異常類型,用"|"隔開
11、jdk7之前,你必須用try{}finally{}在try內(nèi)使用資源,在finally中關(guān)閉資源,不管try中的代碼是否正常退出或者異常退出。jdk7之后,你可以不必要寫finally語(yǔ)句來(lái)關(guān)閉資源,只要你在try()的括號(hào)內(nèi)部定義要使用的資源。
JDK8:
一、接口的默認(rèn)方法
Java 8允許我們給接口添加一個(gè)非抽象的方法實(shí)現(xiàn),只需要使用 default關(guān)鍵字即可,這個(gè)特征又叫做擴(kuò)展方法
二、Lambda 表達(dá)式
Collections.sort(names, (a, b) -> b.compareTo(a));
三、函數(shù)式接口?
四、方法與構(gòu)造函數(shù)引用 ::
Java 8 在包java.time下包含了一組全新的時(shí)間日期API。
7.常用集合類
我的說(shuō)的HashMap,他問(wèn)為什么不是List。
1。JSP的內(nèi)置對(duì)象及方法。
在JSP中無(wú)需創(chuàng)建就可以使用的9個(gè)對(duì)象,它們是:request、response、session、application、out、pagecontext、config、page、exception
lout(JspWriter):等同與response.getWriter(),用來(lái)向客戶端發(fā)送文本數(shù)據(jù);
1. void clear() ;
清除輸出緩沖區(qū)的內(nèi)容,但是不輸出到客戶端。
2. void clearBuffer() ;
清除輸出緩沖區(qū)的內(nèi)容,并輸出到客戶端。
3. void close() ;
關(guān)閉輸出流,清除所有內(nèi)容。
4. void flush() ;
輸出緩沖區(qū)里面的數(shù)據(jù)。
5. int getBufferSize() ;
獲取以kb為單位的目前緩沖區(qū)大小。
6. int getRemaining() ;
獲取以kb為單位的緩沖區(qū)中未被占用的空間大小。
7. boolean isAutoFlush() ;
是否自動(dòng)刷新緩沖區(qū)。
8. void newLine() ;
輸出一個(gè)換行字符。
lconfig(ServletConfig):對(duì)應(yīng)“真身”中的ServletConfig,config對(duì)象用來(lái)存放Servlet初始的`數(shù)據(jù)結(jié)構(gòu);config 對(duì)象的主要作用是取得服務(wù)器的配置信息。通過(guò) pageConext對(duì)象的 getServletConfig() 方法可以獲取一個(gè)config對(duì)象。當(dāng)一個(gè)Servlet 初始化時(shí),容器把某些信息通過(guò) config對(duì)象傳遞給這個(gè) Servlet。
lpage(當(dāng)前JSP的真身類型):當(dāng)前JSP頁(yè)面的“this”,即當(dāng)前對(duì)象,page對(duì)象代表JSP對(duì)象本身,或者說(shuō)代表編譯后的servlet對(duì)象,可以用( (javax.servlet.jsp.HttpJspPage)page )來(lái)取用它的方法和屬性;
lpageContext(PageContext):頁(yè)面上下文對(duì)象,它是最后一個(gè)沒講的域?qū)ο,pageContext對(duì)象存儲(chǔ)本JSP頁(yè)面相關(guān)信息,如屬性、內(nèi)建對(duì)象等;pageContext 對(duì)象的作用是取得任何范圍的參數(shù),通過(guò)它可以獲取 JSP頁(yè)面的out、request、reponse、session、application 等對(duì)象。
lexception(Throwable):只有在錯(cuò)誤頁(yè)面中可以使用這個(gè)對(duì)象,錯(cuò)誤對(duì)象,只有在JSP頁(yè)面的page指令中指定isErrorPage="true"后,才可以在本頁(yè)面使用exception對(duì)象;
lrequest(HttpServletRequest):即HttpServletRequest類的對(duì)象,request對(duì)象包含所有請(qǐng)求的信息,如請(qǐng)求的來(lái)源、標(biāo)頭、cookies和請(qǐng)求相關(guān)的參數(shù)值等,request對(duì)象代表了客戶端的請(qǐng)求信息,主要用于接受通過(guò)HTTP協(xié)議傳送到服務(wù)器的數(shù)據(jù)。(包括頭信息、系統(tǒng)信息、請(qǐng)求方式以及請(qǐng)求參數(shù)等)。request對(duì) 象的作用域?yàn)橐淮握?qǐng)求。;
getParameterNames() 獲取客戶端提交的所有參數(shù)的名字。
lresponse(HttpServletResponse):即HttpServletResponse類的對(duì)象,response對(duì)象主要將JSP容器處理后的結(jié)果傳回到客戶端,response 代表的是對(duì)客戶端的響應(yīng),主要是將JSP容器處理過(guò)的對(duì)象傳回到客戶端。response對(duì)象也具有作用域,它只在JSP頁(yè)面內(nèi)有效;
response.sendRedirect(index.jsp)
lapplication(ServletContext):即ServletContext類的對(duì)象,主要功用在于取得或更改Servlet的設(shè)定;
setAttribute(String key,Object obj):將參數(shù)Object指定的對(duì)象obj添加到Application對(duì)象中,并為添加的對(duì)象指定一個(gè)索引關(guān)鍵字。
getAttribute(String key):獲取Application對(duì)象中含有關(guān)鍵字的對(duì)象。
lsession(HttpSession):即HttpSession類的對(duì)象,不是每個(gè)JSP頁(yè)面中都可以使用,如果在某個(gè)JSP頁(yè)面中設(shè)置<%@pagesession=”false”%>,說(shuō)明這個(gè)頁(yè)面不能使用session,session對(duì)象表示目前個(gè)別用戶的會(huì)話狀態(tài),用來(lái)識(shí)別每個(gè)用戶。
public String getId():獲取Session對(duì)象編號(hào)。
public void setAttribute(String key,Object obj):將參數(shù)Object指定的對(duì)象obj添加到Session對(duì)象中,并為添加的對(duì)象指定一個(gè)索引關(guān)鍵字。
public Object getAttribute(String key):獲取Session對(duì)象中含有關(guān)鍵字的對(duì)象。
public Boolean isNew():判斷是否是一個(gè)新的客戶。
2.說(shuō)說(shuō)ArrayList(對(duì)比著LinkedList來(lái)說(shuō));
1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),ArrayList不具有線程安全性,LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu),LinkedList可以看做為一個(gè)雙向鏈表,LinkedList也是線程不安全的。
2.對(duì)于隨機(jī)訪問(wèn)get和set,ArrayList覺得優(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ù)。
Vector是線程安全的
26.數(shù)組(Array)和列表(ArrayList)有什么區(qū)別?什么時(shí)候應(yīng)該使用Array而不是ArrayList?
下面列出了Array和ArrayList的不同點(diǎn):
Array可以包含基本類型和對(duì)象類型,ArrayList只能包含對(duì)象類型。
Array大小是固定的,ArrayList的大小是動(dòng)態(tài)變化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
對(duì)于基本類型數(shù)據(jù),集合使用自動(dòng)裝箱來(lái)減少編碼工作量。但是,當(dāng)處理固定大小的基本數(shù)據(jù)類型的時(shí)候,這種方式相對(duì)比較慢。
27.ArrayList和LinkedList有什么區(qū)別?
ArrayList和LinkedList都實(shí)現(xiàn)了List接口,他們有以下的不同點(diǎn):
ArrayList是基于索引的數(shù)據(jù)接口,它的底層是數(shù)組。它可以以O(shè)(1)時(shí)間復(fù)雜度對(duì)元素進(jìn)行隨機(jī)訪問(wèn)。與此對(duì)應(yīng),LinkedList是以元素列表的形式存儲(chǔ)它的數(shù)據(jù),每一個(gè)元素都和它的前一個(gè)和后一個(gè)元素鏈接在一起,在這種情況下,查找某個(gè)元素的時(shí)間復(fù)雜度是O(n)。
相對(duì)于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因?yàn)楫?dāng)元素被添加到集合任意位置的時(shí)候,不需要像數(shù)組那樣重新計(jì)算大小或者是更新索引。
LinkedList比ArrayList更占內(nèi)存,因?yàn)長(zhǎng)inkedList為每一個(gè)節(jié)點(diǎn)存儲(chǔ)了兩個(gè)引用,一個(gè)指向前一個(gè)元素,一個(gè)指向下一個(gè)元素。
28.Comparable和Comparator接口是干什么的?列出它們的區(qū)別。
Java提供了只包含一個(gè)compareTo()方法的Comparable接口。這個(gè)方法可以個(gè)給兩個(gè)對(duì)象排序。具體來(lái)說(shuō),它返回負(fù)數(shù),0,正數(shù)來(lái)表明輸入對(duì)象小于,等于,大于已經(jīng)存在的對(duì)象。
Java 提供了包含compare()和equals()兩個(gè)方法的Comparator接口。compare()方法用來(lái)給兩個(gè)輸入?yún)?shù)排序,返回負(fù)數(shù),0,正 數(shù)表明第一個(gè)參數(shù)是小于,等于,大于第二個(gè)參數(shù)。equals()方法需要一個(gè)對(duì)象作為參數(shù),它用來(lái)決定輸入?yún)?shù)是否和comparator相等。只有當(dāng) 輸入?yún)?shù)也是一個(gè)comparator并且輸入?yún)?shù)和當(dāng)前comparator的排序結(jié)果是相同的時(shí)候,這個(gè)方法才返回true。
3.寫一個(gè)單例模式。我寫的是靜態(tài)內(nèi)部類的單例,然后他問(wèn)我這個(gè)地方為什么用private,這兒為啥用static,這就考察你的基本功啦
類的構(gòu)造函數(shù)定義為private的,保證其他類不能實(shí)例化此類,static保證每個(gè)類訪問(wèn)到的都是同一個(gè)。
餓漢模式:
publicclassSingleton{
privatestaticSingletoninstance=newSingleton();
privateSingleton(){}
publicstaticSingletonnewInstance(){
returninstance;
}
}缺點(diǎn),在類加載之后就被創(chuàng)建,即使沒有用到
懶漢模式:
publicclassSingleton{
privatestaticSingletoninstance=null;
privateSingleton(){}
publicstaticsynchronizedSingletonnewInstance(){
if(null==instance){
instance=newSingleton();
}
returninstance;
}
}在特定時(shí)間加載,延遲加載
雙重校驗(yàn)鎖:
publicclassSingleton{
privatestaticvolatile Singletoninstance=null;
privateSingleton(){}
publicstaticSingletongetInstance(){
if(instance==null){
synchronized(Singleton.class){
if(instance==null){//2
instance=newSingleton();
}
}
}
returninstance;
}
}線程安全
靜態(tài)內(nèi)部類:
publicclassSingleton{
privatestaticclassSingletonHolder{
publicstaticSingletoninstance=newSingleton();
}
privateSingleton(){}
publicstaticSingletonnewInstance(){
returnSingletonHolder.instance;
}
}
枚舉:
publicenumSingleton{
instance;
publicvoidwhateverMethod(){}
}很少使用
【計(jì)算機(jī)考試二級(jí)java模擬試題(含答案)】相關(guān)文章:
全國(guó)計(jì)算機(jī)等級(jí)考試《二級(jí)Java》模擬試題(含答案)06-10
計(jì)算機(jī)二級(jí)JAVA考試模擬試題06-24
計(jì)算機(jī)二級(jí)考試JAVA模擬試題10-12
計(jì)算機(jī)二級(jí)JAVA考試精選模擬試題08-12
計(jì)算機(jī)二級(jí)JAVA考試模擬試題及答案10-16
計(jì)算機(jī)二級(jí)考試Java模擬試題及答案201710-25