-
什么是 java 序列化晋修?什么情況下需要序列化吧碾?
序列化:將 Java 對(duì)象轉(zhuǎn)換成字節(jié)流的過(guò)程。
反序列化:將字節(jié)流轉(zhuǎn)換成 Java 對(duì)象的過(guò)程墓卦。
當(dāng) Java 對(duì)象需要在網(wǎng)絡(luò)上傳輸 或者 持久化存儲(chǔ)到文件中時(shí)倦春,就需要對(duì) Java 對(duì)象進(jìn)行序列化處理。
如果某個(gè)類能夠被序列化落剪,其子類也可以被序列化睁本。聲明為static和transient類型的成員數(shù)據(jù)不能被序列化。因?yàn)閟tatic代表類的狀態(tài)忠怖, transient代表對(duì)象的臨時(shí)數(shù)據(jù)呢堰。
-
普通類和抽象類有哪些區(qū)別?
抽象類不能被實(shí)例化
抽象類可以有抽象方法凡泣,抽象方法只需申明枉疼,無(wú)需實(shí)現(xiàn)
含有抽象方法的類必須申明為抽象類
抽象的子類必須實(shí)現(xiàn)抽象類中所有抽象方法,否則這個(gè)子類也是抽象類
抽象方法不能被聲明為靜態(tài)
抽象方法不能用private修飾
抽象方法不能用final修飾
-
接口和抽象類的區(qū)別:
1.語(yǔ)法層面上的區(qū)別
1)抽象類可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié)鞋拟,而接口中只能存在public abstract 方法骂维;
2)抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final類型的贺纲;
3)接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法航闺,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法;
4)一個(gè)類只能繼承一個(gè)抽象類猴誊,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口潦刃。
-
接口的設(shè)計(jì)目的,是<mark style="box-sizing: border-box; background-color: rgb(211, 212, 14); color: rgb(0, 0, 0);">對(duì)類的行為進(jìn)行約束</mark>(更準(zhǔn)確的說(shuō)是一種“有”約束懈叹,因?yàn)榻涌诓荒芤?guī)定類不可以有什么行為)乖杠,也就是提供一種機(jī)制,可以強(qiáng)制要求不同的類具有相同的行為项阴。它只約束了行為的有無(wú)滑黔,但不對(duì)如何實(shí)現(xiàn)行為進(jìn)行限制。
而抽象類的設(shè)計(jì)目的环揽,是<mark style="box-sizing: border-box; background-color: rgb(211, 212, 14); color: rgb(0, 0, 0);">代碼復(fù)用</mark>。當(dāng)不同的類具有某些相同的行為(記為行為集合A)庵佣,且其中一部分行為的實(shí)現(xiàn)方式一致時(shí)(A的非真子集歉胶,記為B),可以讓這些類都派生于一個(gè)抽象類巴粪。在這個(gè)抽象類中實(shí)現(xiàn)了B通今,避免讓所有的子類來(lái)實(shí)現(xiàn)B粥谬,這就達(dá)到了代碼復(fù)用的目的。而A減B的部分辫塌,留給各個(gè)子類自己實(shí)現(xiàn)漏策。正是因?yàn)锳-B在這里沒(méi)有實(shí)現(xiàn),所以抽象類不允許實(shí)例化出來(lái)(否則當(dāng)調(diào)用到A-B時(shí)臼氨,無(wú)法執(zhí)行)掺喻。
-
-
多態(tài)的原理是什么?
父類引用指向子類實(shí)現(xiàn)。程序調(diào)用的方法在運(yùn)行期才動(dòng)態(tài)綁定储矩,就是引用變量所指向的具體實(shí)現(xiàn)對(duì)象的方法感耙,也就是內(nèi)存里正在運(yùn)行的那個(gè)對(duì)象的方法,而不是引用變量的類型中定義的方法持隧。
本質(zhì)上多態(tài)分兩種:
編譯時(shí)多態(tài)(又稱靜態(tài)多態(tài))--- 方法重載
運(yùn)行時(shí)多態(tài)(又稱動(dòng)態(tài)多態(tài))--- 父類引用指向子類實(shí)現(xiàn)即硼,實(shí)現(xiàn)接口或者繼承父類
-
并行和并發(fā)有什么區(qū)別?
并行:多個(gè)CPU同時(shí)做多個(gè)事情 ---同一時(shí)刻發(fā)生
并發(fā):一個(gè)CPU交替做多個(gè)事情---同一時(shí)間段發(fā)生
-
線程和進(jìn)程的區(qū)別
進(jìn)程:進(jìn)程是資源分配的最小單位屡拨。每個(gè)進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間(進(jìn)程上下文)只酥,進(jìn)程間的切換會(huì)有較大的開(kāi)銷,一個(gè)進(jìn)程包含1—n個(gè)線程
線程:線程是cpu調(diào)度的最小單位呀狼。同一類線程共享代碼和數(shù)據(jù)空間层皱,每個(gè)線程有獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器(PC),線程切換開(kāi)銷小赠潦。
-
守護(hù)線程是什么叫胖?
線程分2種,
1她奥、守護(hù)線程瓮增,比如垃圾回收線程,就是最典型的守護(hù)線程哩俭。
2绷跑、用戶線程,就是應(yīng)用程序里的自定義線程凡资。
daemon Thread 專門用于服務(wù)其他的線程砸捏,如果其他的線程(即用戶自定義線程)都執(zhí)行完畢,連main線程也執(zhí)行完畢隙赁,那么jvm就會(huì)退出(即停止運(yùn)行)——此時(shí)垦藏,連jvm都停止運(yùn)行了,守護(hù)線程當(dāng)然也就停止執(zhí)行了伞访。
-
線程有幾種狀態(tài)及轉(zhuǎn)化關(guān)系掂骏?
NEW:Thread state for a thread which has not yet started.
RUNNABLE:Thread state for a runnable thread. A thread in the runnable state is executing in the Java virtual machine but it may be waiting for other resources from the operating system such as processor.
BLOCKED: monitor lock. synchronized Object#wait()
WAITING:Object#wait() Thread.join LockSupport#park()
TIMED_WAITING:
TERMINATED:
看一下:java.lang.Thread.State
[圖片上傳失敗...(image-5e6e2b-1640485400106)]
-
線程的面試題:https://blog.csdn.net/qq1404510094/article/details/80724038
-
線程的面試題有點(diǎn)難度:https://www.cnblogs.com/java1024/p/13390538.html
-
線程池:
狀態(tài):https://blog.csdn.net/qq_24384579/article/details/93199116
有空看看:https://blog.csdn.net/qq_28802119/article/details/102587720
-
jsp 的四個(gè)作用域?
https://blog.csdn.net/koches/article/details/7785438
所謂“作用域”就是“信息共享的范圍”厚掷,也就是說(shuō)一個(gè)信息能夠在多大的范圍內(nèi)有效弟灼。4個(gè)JSP內(nèi)置對(duì)象的作用域分別為:application级解、session、request田绑、page 勤哗。JSP內(nèi)置對(duì)象作用域表如下:
名稱 作用域 application 在所有應(yīng)用程序中有效 session 在當(dāng)前會(huì)話中有效 request 在當(dāng)前請(qǐng)求中有效 page 在當(dāng)前頁(yè)面有效 JSP的 9個(gè)內(nèi)置的對(duì)象?