歡迎不想錯(cuò)過(guò)亞信聯(lián)創(chuàng)java筆試題的朋友收藏和分享,具體內(nèi)容如下,大家敬請(qǐng)閱讀:
1、GC是什么?常用的兩種方法是什么?
答:
(1)GC是垃圾收集的意思(Garbage 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)存的顯示操作方法。
(2)System.gc()用來(lái)強(qiáng)制立即回收垃圾,即釋放內(nèi)存。
java對(duì)內(nèi)存的釋放采取的垃圾自動(dòng)回收機(jī)制,在編程的時(shí)候不用考慮變量不用釋放內(nèi)存,java虛擬機(jī)可以自動(dòng)判斷出并收集到垃圾,但一般不會(huì)立即釋放它們的內(nèi)存空間,當(dāng)然也可以在程序中使用System.gc()來(lái)強(qiáng)制垃圾回收,但是要注意的是,系統(tǒng)并不保證會(huì)立即進(jìn)行釋放內(nèi)存。
gc首先要判斷該對(duì)象是否是時(shí)候可以收集。兩種常用的方法是引用計(jì)數(shù)和對(duì)象的引用遍歷。
2、線(xiàn)程常用的方法是什么?
答:
Thread類(lèi)的常用方法:
static Thread currentThread() //靜態(tài)方法,通過(guò)這個(gè)方法可以獲得主線(xiàn)程的引用,從而達(dá)到操作主線(xiàn)程的目的。
static int activeCount() //靜態(tài)方法,獲得當(dāng)前活動(dòng)線(xiàn)程數(shù)量
long getId() //獲得當(dāng)前線(xiàn)程的id
String getName() //獲得當(dāng)前線(xiàn)程的名字
int getPriority() //獲得優(yōu)先級(jí)
boolean isAlive() //當(dāng)前線(xiàn)程是否處于活動(dòng)狀態(tài)。
boolean isDaemon() //是否為守護(hù)線(xiàn)程
void run() //run()方法,我們用線(xiàn)程,主要就是對(duì)run()方法的重寫(xiě)
void start() //使該線(xiàn)程開(kāi)始執(zhí)行;Java虛擬機(jī)調(diào)用該線(xiàn)程run()方法。
void sleep() //使當(dāng)前線(xiàn)程休眠,以執(zhí)行其他線(xiàn)程,如Thread.sleep(1000)休眠1秒
3、Sleep()和wait()的區(qū)別?
答:
sleep()方法是使線(xiàn)程停止一段時(shí)間的方法。在sleep時(shí)間間隔期滿(mǎn)后,線(xiàn)程不一定立即恢復(fù)執(zhí)行。因?yàn)樵谀莻(gè)時(shí)刻,其他線(xiàn)程可能正在運(yùn)行而且沒(méi)有被調(diào)度為放棄執(zhí)行,除非“醒來(lái)”的線(xiàn)程有更高的優(yōu)先級(jí),或者正在運(yùn)行的線(xiàn)程因?yàn)槠渌蚨枞?/p>
wait()是線(xiàn)程交互時(shí),如果線(xiàn)程對(duì)一個(gè)同步對(duì)象x發(fā)出一個(gè)wait()調(diào)用,該線(xiàn)程會(huì)暫停執(zhí)行,被調(diào)用對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。
4、EJB和JavaBean都是什么?
答:
javabean是客戶(hù)端組件,EJB是服務(wù)器端組件。
其實(shí)EJB和javabean最根本的區(qū)別是分布性。
5、EJB都有哪些構(gòu)成?
答:
Session Bean,Entity Bean,Message Driven Bean.
6、Servlet的生命周期,比CGI有什么優(yōu)點(diǎn)?
答:
web容器加載servlet,生命周期開(kāi)始。通過(guò)調(diào)用servlet的init()方法進(jìn)行servlet的初始化。通過(guò)調(diào)用service()方法實(shí)現(xiàn),根據(jù)請(qǐng)求的不同調(diào)用不用的do()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()方法。
Servlet是Java平臺(tái)上的CGI技術(shù)。Servlet在服務(wù)器端運(yùn)行,動(dòng)態(tài)地生成Web頁(yè)面,與傳統(tǒng)的CGI和許多其他類(lèi)似CGI的技術(shù)相比,JavaServlet具有更高的效率并更容易使用。對(duì)于Servlet,重復(fù)的請(qǐng)求不會(huì)導(dǎo)致同一程序的多次轉(zhuǎn)載,它是依靠線(xiàn)程的方式來(lái)支持并訪(fǎng)問(wèn)的。
7、存儲(chǔ)過(guò)程和函數(shù)的區(qū)別?
答:
本質(zhì)上沒(méi)有區(qū)別。只是函數(shù)有只能返回一個(gè)變量的限制,而存儲(chǔ)過(guò)程可以返回多個(gè)。函數(shù)是可以嵌入在sql中使用的,可以在select中調(diào)用,而存儲(chǔ)過(guò)程不行。執(zhí)行的本質(zhì)都是一樣。函數(shù)限制比較多,比如不能用臨時(shí)表,只能用表變量。還有一些函數(shù)都不可用等等,而存儲(chǔ)過(guò)程的限制相對(duì)就比較少。
8、Java Server Page 和 servlet的聯(lián)系與區(qū)別?
答:
JSP在本質(zhì)上就是servlet,但兩者的創(chuàng)建方式不一樣。
servlet完全是Java程序代碼構(gòu)成的,擅長(zhǎng)流程控制和事務(wù)處理,通過(guò)servlet來(lái)生成動(dòng)態(tài)網(wǎng)頁(yè)很不直觀。
JSP是由HTML代碼和JSP表情構(gòu)成,可以方便地編寫(xiě)動(dòng)態(tài)網(wǎng)頁(yè)。
因此實(shí)際應(yīng)用中采用servlet來(lái)控制業(yè)務(wù)流程,而采用JSP來(lái)生成動(dòng)態(tài)網(wǎng)頁(yè),JSP是servlet技術(shù)的拓展,本質(zhì)上就是Servlet的簡(jiǎn)易方式,JSP編譯后是“類(lèi)servlet”。