transient和volatile是java關(guān)鍵字嗎荡灾?
- transient是變量修飾符。標(biāo)記為transient的變量在對(duì)象存儲(chǔ)時(shí),這些變量不會(huì)被持久化卧晓。
- volatile也是變量修飾符芬首。每次線程訪問時(shí),都從共享內(nèi)存中重讀變量的值逼裆;當(dāng)變量發(fā)生變化時(shí)郁稍,線程將變量寫回到共享內(nèi)存。在任何時(shí)候兩個(gè)不同線程總是可以看到某個(gè)成員變量的同一個(gè)值胜宇。
抽象類和接口有什么區(qū)別耀怜?
- 抽象類是指聲明方法而不去實(shí)現(xiàn)方法的類。不能創(chuàng)建abstract類的實(shí)例桐愉。
- 接口中所有的方法都是抽象的财破,沒有方法體。接口只可以定義static final成員變量从诲。
接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承實(shí)體類(concrete class)左痢?
- 可以繼承接口
- 可以實(shí)現(xiàn)接口
- 可以繼承實(shí)體類,要求實(shí)體類擁有子類可訪問到的構(gòu)造器系洛。
能說一下java的反射機(jī)制嗎俊性?
- Java反射機(jī)制是在運(yùn)行狀態(tài)中,是指可以動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象方法描扯。主要功能有:在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類定页;在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象;在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法绽诚;在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法典徊;生成動(dòng)態(tài)代理。
請(qǐng)說一下MVC架構(gòu)恩够?
- MVC:首先控制器C接收用戶的請(qǐng)求卒落,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理,然后模型M用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù)玫鸟,最后控制器C用相應(yīng)的視圖格式化模型返回的數(shù)據(jù)导绷,并通過表示層V呈現(xiàn)給用戶。
請(qǐng)說一下final屎飘,finally和finalize的區(qū)別妥曲?
- final:關(guān)鍵字修飾符。不能有子類(一個(gè)類不能既是abstract又是final)钦购;final的變量和方法在使用不被改變檐盟。【final可用于聲明屬性押桃、方法和類葵萎,分別表示屬性不可變,方法不可重寫,類不可繼承羡忘』蚜。】
- finally:異常處理時(shí)提供finally塊來執(zhí)行任何清除操作。
- finalize:方法名卷雕。使用 finalize() 方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作节猿。
請(qǐng)說一下HTTP請(qǐng)示的基本過程
HTTP傳輸?shù)幕具^程:
1. 客戶端連接一個(gè)主機(jī)
2. 服務(wù)器接收連接
3. 客戶端請(qǐng)求一個(gè)文件,
4. 服務(wù)器發(fā)送一個(gè)應(yīng)答
ArrayList和Vector的區(qū)別?
- 同步性:Vector是線程安全的漫雕,也就是說是同步的滨嘱,而ArrayList是線程序不安全的,不是同步的
- 數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為原來一培浸间,而ArrayList卻是原來的一半
- Vector可以設(shè)置容量增長(zhǎng)的參數(shù)太雨,而ArrayList不可以。
HashMap和Hashtable的區(qū)別魁蒜?
- public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map - HashMap是非synchronized囊扳,而HashTable在默認(rèn)的情況下是synchronized。
HashMap實(shí)現(xiàn)同步的方法:
1) Map m = Collections.synchronizeMap(hashMap);
2) Java 5以后提供了ConcurrentHashMap梅惯,它是HashTable的替代宪拥,比HashTable的擴(kuò)展性更好仿野。
- HashMap允許一個(gè) null 鍵和多個(gè) null 值铣减。,HashTable則不行脚作,key和value都不允許出現(xiàn)null值葫哗。
- Hashtable、HashMap都使用了 Iterator迭代器球涛,HashMap的迭代器(Iterator)是fail-fast迭代器劣针,而HashTable的enumerator迭代器不是fail-fast的。
- HashTable直接使用對(duì)象的hashCode亿扁,而HashMap則需要重新計(jì)算hash值捺典。
- HashTable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1从祝;HashMap中hash數(shù)組的默認(rèn)大小是16襟己。
&和&&的區(qū)別
- &是位運(yùn)算符,表示按位與運(yùn)算
- &&是邏輯運(yùn)算符牍陌,表示邏輯與(and)
Collection 和 Collections的區(qū)別
- Collection是集合類的父接口擎浴,繼承與他的接口主要有Set 和List.
- Collections是針對(duì)集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索毒涧、排序贮预、線程安全化等操作。
short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
- short s1 = 1; s1 = s1 + 1; (s1+1運(yùn)算結(jié)果是int型,需要強(qiáng)制轉(zhuǎn)換類型)
- short s1 = 1; s1 += 1;(可以正確編譯)
Overload和Override的區(qū)別仿吞。Overloaded的方法是否可以改變返回值的類型?
- 重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)滑频。
- 重寫Overriding是父類與子類之間多態(tài)性的一種表。
- Overloaded的方法是可以改變返回值的類型:當(dāng)方法參數(shù)列表不同時(shí)已經(jīng)符合重載唤冈,因此也可以改變返回值類型误趴;但如果方法參數(shù)列表一樣時(shí)不可以改變返回值類型。
sleep() 和 wait() 有什么區(qū)別?
- sleep是Thread的方法务傲,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間凉当,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持售葡,到時(shí)后會(huì)自動(dòng)恢復(fù)看杭。調(diào)用sleep不會(huì)釋放對(duì)象鎖。
- wait是Object類的方法挟伙,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖楼雹,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify/notifyAll方法后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)尖阔。