更新時間:2020-02-26 09:53:38 來源:動力節(jié)點(diǎn) 瀏覽3464次
什么是反射?
Java反射就是在運(yùn)行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性;并且能改變它的屬性。而這也是Java被視為動態(tài)(或準(zhǔn)動態(tài),為啥要說是準(zhǔn)動態(tài),因?yàn)橐话愣缘膭討B(tài)語言定義是程序運(yùn)行時,允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動態(tài)語言。從這個觀點(diǎn)看,Perl,Python,Ruby是動態(tài)語言,C++,Java,C#不是動態(tài)語言。)語言的一個關(guān)鍵性質(zhì)。
什么是java序列化?什么情況下需要序列化?
序列化就是一種用來處理對象流的機(jī)制,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化??梢詫α骰蟮膶ο筮M(jìn)行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對對象流進(jìn)行讀寫操作時所引發(fā)的問題。
當(dāng)Java對象需要在網(wǎng)絡(luò)上傳輸或者持久化存儲到文件中時,就需要對Java對象進(jìn)行序列化處理。
動態(tài)代理是什么?有哪些應(yīng)用?
動態(tài)代理:當(dāng)想要給實(shí)現(xiàn)了某個接口的類中的方法,加一些額外的處理。比如說加日志,加事務(wù)等??梢越o這個類創(chuàng)建一個代理,故名思議就是創(chuàng)建一個新的類,這個類不僅包含原來類方法的功能,而且還在原來的基礎(chǔ)上添加了額外處理的新類。這個代理類并不是定義好的,是動態(tài)生成的。具有解耦意義,靈活,擴(kuò)展性強(qiáng)。
動態(tài)代理的應(yīng)用:Spring的AOP,加事務(wù),加權(quán)限,加日志。
怎么實(shí)現(xiàn)動態(tài)代理?
動態(tài)代理實(shí)現(xiàn):首先必須定義一個接口,還要有一個InvocationHandler(將實(shí)現(xiàn)接口的類的對象傳遞給它)處理類。再有一個工具類Proxy(習(xí)慣性將其稱為代理類,因?yàn)檎{(diào)用他的newInstance()可以產(chǎn)生代理對象,其實(shí)他只是一個產(chǎn)生代理對象的工具類)。利用到InvocationHandler,拼接代理類源碼,將其編譯生成代理類的二進(jìn)制碼,利用加載器加載,并將其實(shí)例化產(chǎn)生代理對象,最后返回。
為什么要使用克???
想對一個對象進(jìn)行處理,又想保留原有的數(shù)據(jù)進(jìn)行接下來的操作,就需要克隆了。克隆分淺克隆和深克隆,淺克隆后的對象中非基本對象和原對象指向同一塊內(nèi)存,因此對這些非基本對象的修改會同時更改克隆前后的對象。深克隆可以實(shí)現(xiàn)完全的克隆,可以用反射的方式或序列化的方式實(shí)現(xiàn)。
如何實(shí)現(xiàn)對象克?。?/strong>
有兩種方式:
1).實(shí)現(xiàn)Cloneable接口并重寫Object類中的clone()方法;
2).實(shí)現(xiàn)Serializable接口,通過對象的序列化和反序列化實(shí)現(xiàn)克隆,可以實(shí)現(xiàn)真正的深度克隆,代碼如下。
深拷貝和淺拷貝區(qū)別是什么?
在有指針成員的情況下,淺拷貝只是將指針指向已存在的內(nèi)存。即兩個對象的指針成員指向的是同一內(nèi)存區(qū)域。深拷貝的做法是申請一個內(nèi)存復(fù)制一份,并將新對象指針指向備份區(qū)。
安全性:淺拷貝如果修改了指針指向的內(nèi)容,將對兩個對象都有影響。
jsp和servlet有什么區(qū)別?
jsp是html頁面中內(nèi)嵌的Java代碼,側(cè)重頁面顯示;
Servlet是html代碼和Java代碼分離,側(cè)重邏輯控制,mvc設(shè)計思想中jsp位于視圖層,servlet位于控制層Jsp運(yùn)行機(jī)制.
jsp有哪些內(nèi)置對象?作用分別是什么?
Page,pageContext,request,response,session,application,out,config,exception
Page指的是JSP被翻譯成Servlet的對象的引用.
pageContext對象可以用來獲得其他8個內(nèi)置對象,還可以作為JSP的域范圍對象使用.pageContext中存的值是當(dāng)前的頁面的作用范圍》
request代表的是請求對象,可以用于獲得客戶機(jī)的信息,也可以作為域?qū)ο髞硎褂茫褂胷equest保存的數(shù)據(jù)在一次請求范圍內(nèi)有效。
Session代表的是一次會話,可以用于保存用戶的私有的信息,也可以作為域?qū)ο笫褂?,使用session保存的數(shù)據(jù)在一次會話范圍有效
Application:代表整個應(yīng)用范圍,使用這個對象保存的數(shù)據(jù)在整個web應(yīng)用中都有效。
Response是響應(yīng)對象,代表的是從服務(wù)器向?yàn)g覽器響應(yīng)數(shù)據(jù).
Out:JSPWriter是用于向頁面輸出內(nèi)容的對象
Config:指的是ServletConfig用于JSP翻譯成Servlet后獲得Servlet的配置的對象.
Exception:在頁面中設(shè)置isErrorPage=”true”,即可使用,是Throwable的引用.用來獲得頁面的錯誤信息。
以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“經(jīng)典電信Java面試題目匯總”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743