Java研發(fā)方向如何準(zhǔn)備BAT技術(shù)面試答案(上)

最近因?yàn)槊τ诠ぷ鹘嚷桑瑳](méi)時(shí)間整理窃页,本篇是下班后晚上抽空整理的,文中部分答案本來(lái)是想自己好好整理一份的复濒,但是時(shí)間真的很緊脖卖,所以就整理了一下網(wǎng)絡(luò)上的文章鏈接,挑了寫(xiě)的不錯(cuò)的文章巧颈,后續(xù)有時(shí)間補(bǔ)上來(lái)畦木。更多精彩內(nèi)容請(qǐng)關(guān)注我的微信公眾號(hào):JavaQ。
1.面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別
面向過(guò)程
優(yōu)點(diǎn):性能比面向?qū)ο蟾呗宥驗(yàn)轭?lèi)調(diào)用時(shí)需要實(shí)例化馋劈,開(kāi)銷(xiāo)比較大攻锰,比較消耗資源;比如單片機(jī)晾嘶、嵌入式開(kāi)發(fā)、Linux/Unix等一般采用面向過(guò)程開(kāi)發(fā)娶吞,性能是最重要的因素垒迂。
缺點(diǎn):沒(méi)有面向?qū)ο笠拙S護(hù)、易復(fù)用妒蛇、易擴(kuò)展

面向?qū)ο?br> 優(yōu)點(diǎn):易維護(hù)机断、易復(fù)用、易擴(kuò)展绣夺,由于面向?qū)ο笥蟹庋b吏奸、繼承、多態(tài)性的特性陶耍,可以設(shè)計(jì)出低耦合的系統(tǒng)奋蔚,使系統(tǒng)更加靈活、更加易于維護(hù)
缺點(diǎn):性能比面向過(guò)程低

2.Java的四個(gè)基本特性(抽象烈钞、封裝泊碑、繼承,多態(tài))
抽象:就是把現(xiàn)實(shí)生活中的某一類(lèi)東西提取出來(lái)毯欣,用程序代碼表示馒过,我們通常叫做類(lèi)或者接口。抽象包括兩個(gè)方面:一個(gè)是數(shù)據(jù)抽象酗钞,一個(gè)是過(guò)程抽象腹忽。數(shù)據(jù)抽象也就是對(duì)象的屬性来累。過(guò)程抽象是對(duì)象的行為特征。
封裝:把客觀(guān)事物封裝成抽象的類(lèi)留凭,并且類(lèi)可以把自己的數(shù)據(jù)和方法只讓可信的類(lèi)或者對(duì)象操作佃扼,對(duì)不可信的進(jìn)行封裝隱藏。封裝分為屬性的封裝和方法的封裝蔼夜。
繼承:是對(duì)有著共同特性的多類(lèi)事物兼耀,進(jìn)行再抽象成一個(gè)類(lèi)。這個(gè)類(lèi)就是多類(lèi)事物的父類(lèi)求冷。父類(lèi)的意義在于抽取多類(lèi)事物的共性瘤运。
多態(tài):允許不同類(lèi)的對(duì)象對(duì)同一消息做出響應(yīng)。方法的重載匠题、類(lèi)的覆蓋正體現(xiàn)了多態(tài)拯坟。

3.重載和重寫(xiě)的區(qū)別
重載:發(fā)生在同一個(gè)類(lèi)中,方法名必須相同韭山,參數(shù)類(lèi)型不同郁季、個(gè)數(shù)不同、順序不同钱磅,方法返回值和訪(fǎng)問(wèn)修飾符可以不同梦裂,發(fā)生在編譯時(shí)。
重寫(xiě):發(fā)生在父子類(lèi)中盖淡,方法名年柠、參數(shù)列表必須相同,返回值小于等于父類(lèi)褪迟,拋出的異常小于等于父類(lèi)冗恨,訪(fǎng)問(wèn)修飾符大于等于父類(lèi);如果父類(lèi)方法訪(fǎng)問(wèn)修飾符為private則子類(lèi)中就不是重寫(xiě)味赃。

4.構(gòu)造器Constructor是否可被override
構(gòu)造器不能被重寫(xiě)掀抹,不能用static修飾構(gòu)造器,只能用 public private protected這三個(gè)權(quán)限修飾符心俗,且不能有返回語(yǔ)句傲武。

5.訪(fǎng)問(wèn)控制符public,protected,private,以及默認(rèn)的區(qū)別
private只有在本類(lèi)中才能訪(fǎng)問(wèn);
public在任何地方都能訪(fǎng)問(wèn)另凌;
protected在同包內(nèi)的類(lèi)及包外的子類(lèi)能訪(fǎng)問(wèn)谱轨;
默認(rèn)不寫(xiě)在同包內(nèi)能訪(fǎng)問(wèn)。

6.是否可以繼承String類(lèi)
String類(lèi)是final類(lèi)故不可以繼承吠谢,一切由final修飾過(guò)的都不能繼承

7.String和StringBuffer土童、StringBuilder的區(qū)別
可變性:
String類(lèi)中使用字符數(shù)組保存字符串,private final char value[]工坊,所以string對(duì)象是不可變的献汗。
StringBuilder與StringBuffer都繼承自AbstractStringBuilder類(lèi)敢订,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串,char[] value罢吃,這兩種對(duì)象都是可變的楚午。
線(xiàn)程安全性:
String中的對(duì)象是不可變的,也就可以理解為常量尿招,線(xiàn)程安全矾柜。
AbstractStringBuilder是StringBuilder與StringBuffer的公共父類(lèi),定義了一些字符串的基本操作就谜,如expandCapacity怪蔑、append、insert丧荐、indexOf等公共方法缆瓣。StringBuffer對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以是線(xiàn)程安全的虹统。StringBuilder并沒(méi)有對(duì)方法進(jìn)行加同步鎖弓坞,所以是非線(xiàn)程安全的。
性能:
每次對(duì)String 類(lèi)型進(jìn)行改變的時(shí)候车荔,都會(huì)生成一個(gè)新的 String 對(duì)象渡冻,然后將指針指向新的 String 對(duì)象。StringBuffer每次都會(huì)對(duì) StringBuffer 對(duì)象本身進(jìn)行操作夸赫,而不是生成新的對(duì)象并改變對(duì)象引用菩帝。相同情況下使用 StirngBuilder 相比使用 StringBuffer 僅能獲得 10%~15% 左右的性能提升咖城,但卻要冒多線(xiàn)程不安全的風(fēng)險(xiǎn)茬腿。

8.hashCode和equals方法的關(guān)系
equals相等,hashcode必相等宜雀;hashcode相等切平,equals可能不相等。

9.抽象類(lèi)和接口的區(qū)別
語(yǔ)法層次:
抽象類(lèi)和接口分別給出了不同的語(yǔ)法定義
設(shè)計(jì)層次:
抽象層次不同辐董,抽象類(lèi)是對(duì)類(lèi)抽象悴品,而接口是對(duì)行為的抽象。抽象類(lèi)是對(duì)整個(gè)類(lèi)整體進(jìn)行抽象简烘,包括屬性苔严、行為,但是接口卻是對(duì)類(lèi)局部(行為)進(jìn)行抽象孤澎。
跨域不同届氢,抽象類(lèi)所體現(xiàn)的是一種繼承關(guān)系,要想使得繼承關(guān)系合理覆旭,父類(lèi)和派生類(lèi)之間必須存在"is-a" 關(guān)系退子,即父類(lèi)和派生類(lèi)在概念本質(zhì)上應(yīng)該是相同的岖妄。對(duì)于接口則不然,并不要求接口的實(shí)現(xiàn)者和接口定義在概念本質(zhì)上是一致的寂祥,僅僅是實(shí)現(xiàn)了接口定義的契約而已荐虐,"like-a"的關(guān)系。丸凭。
設(shè)計(jì)層次不同福扬,抽象類(lèi)是自底向上抽象而來(lái)的,接口是自頂向下設(shè)計(jì)出來(lái)的惜犀。

10.自動(dòng)裝箱與拆箱
裝箱:將基本類(lèi)型用它們對(duì)應(yīng)的引用類(lèi)型包裝起來(lái)忧换;
拆箱:將包裝類(lèi)型轉(zhuǎn)換為基本數(shù)據(jù)類(lèi)型;
Java使用自動(dòng)裝箱和拆箱機(jī)制向拆,節(jié)省了常用數(shù)值的內(nèi)存開(kāi)銷(xiāo)和創(chuàng)建對(duì)象的開(kāi)銷(xiāo)亚茬,提高了效率,由編譯器來(lái)完成浓恳,編譯器會(huì)在編譯期根據(jù)語(yǔ)法決定是否進(jìn)行裝箱和拆箱動(dòng)作刹缝。

11.什么是泛型、為什么要使用以及泛型擦除
泛型颈将,即“參數(shù)化類(lèi)型”。
創(chuàng)建集合時(shí)就指定集合元素的類(lèi)型晴圾,該集合只能保存其指定類(lèi)型的元素,避免使用強(qiáng)制類(lèi)型轉(zhuǎn)換人乓。
Java編譯器生成的字節(jié)碼是不包涵泛型信息的都毒,泛型類(lèi)型信息將在編譯處理是被擦除,這個(gè)過(guò)程即類(lèi)型擦除戳护。 泛型擦除可以簡(jiǎn)單的理解為將泛型java代碼轉(zhuǎn)換為普通java代碼瀑焦,只不過(guò)編譯器更直接點(diǎn)腌且,將泛型java代碼直接轉(zhuǎn)換成普通java字節(jié)碼。
類(lèi)型擦除的主要過(guò)程如下:
一.將所有的泛型參數(shù)用其最左邊界(最頂級(jí)的父類(lèi)型)類(lèi)型替換榛瓮。
二.移除所有的類(lèi)型參數(shù)铺董。

12.Java中的集合類(lèi)及關(guān)系圖
List和Set繼承自Collection接口。
Set無(wú)序不允許元素重復(fù)榆芦。HashSet和TreeSet是兩個(gè)主要的實(shí)現(xiàn)類(lèi)柄粹。
List有序且允許元素重復(fù)喘鸟。ArrayList、LinkedList和Vector是三個(gè)主要的實(shí)現(xiàn)類(lèi)驻右。
Map也屬于集合系統(tǒng)什黑,但和Collection接口沒(méi)關(guān)系。Map是key對(duì)value的映射集合堪夭,其中key列就是一個(gè)集合愕把。key不能重復(fù),但是value可以重復(fù)森爽。 HashMap恨豁、TreeMap和Hashtable是三個(gè)主要的實(shí)現(xiàn)類(lèi)。
SortedSet和SortedMap接口對(duì)元素按指定規(guī)則排序爬迟,SortedMap是對(duì)key列進(jìn)行排序橘蜜。

13.HashMap實(shí)現(xiàn)原理
具體原理一句兩句也說(shuō)不清楚,網(wǎng)絡(luò)文章:
http://zhangshixi.iteye.com/blog/672697
http://www.admin10000.com/document/3322.html

14.HashTable實(shí)現(xiàn)原理
具體原理一句兩句也說(shuō)不清楚付呕,網(wǎng)絡(luò)文章:
http://www.cnblogs.com/skywang12345/p/3310887.html http://blog.csdn.net/chdjj/article/details/38581035

15.HashMap和HashTable區(qū)別
一.HashTable的方法前面都有synchronized來(lái)同步计福,是線(xiàn)程安全的;HashMap未經(jīng)同步徽职,是非線(xiàn)程安全的象颖。
二.HashTable不允許null值(key和value都不可以) ;HashMap允許null值(key和value都可以)。
三.HashTable有一個(gè)contains(Object value)功能和containsValue(Object value)功能一樣。
四.HashTable使用Enumeration進(jìn)行遍歷摸恍;HashMap使用Iterator進(jìn)行遍歷壁袄。
五.HashTable中hash數(shù)組默認(rèn)大小是11嗜逻,增加的方式是 old*2+1栈顷;HashMap中hash數(shù)組的默認(rèn)大小是16萄凤,而且一定是2的指數(shù)靡努。
六.哈希值的使用不同兽泄,HashTable直接使用對(duì)象的hashCode病梢; HashMap重新計(jì)算hash值飘千,而且用與代替求模护奈。

16.ArrayList和vector區(qū)別
ArrayList和 Vector都實(shí)現(xiàn)了List接口霉旗, 都是通過(guò)數(shù)組實(shí)現(xiàn)的。
Vector是線(xiàn)程安全的鸵闪,而ArrayList是非線(xiàn)程安全的蚌讼。
List第一次創(chuàng)建的時(shí)候篡石,會(huì)有一個(gè)初始大小凰萨,隨著不斷向List中增加元素武通,當(dāng) List 認(rèn)為容量不夠的時(shí)候就會(huì)進(jìn)行擴(kuò)容厅须。Vector缺省情況下自動(dòng)增長(zhǎng)原來(lái)一倍的數(shù)組長(zhǎng)度朗和,ArrayList增長(zhǎng)原來(lái)的50%。

17.ArrayList和LinkedList區(qū)別及使用場(chǎng)景
ArrayList底層是用數(shù)組實(shí)現(xiàn)的忆植,可以認(rèn)為ArrayList是一個(gè)可改變大小的數(shù)組朝刊。隨著越來(lái)越多的元素被添加到ArrayList中拾氓,其規(guī)模是動(dòng)態(tài)增加的咙鞍。
LinkedList底層是通過(guò)雙向鏈表實(shí)現(xiàn)的, LinkedList和ArrayList相比孵奶,增刪的速度較快。但是查詢(xún)和修改值的速度較慢朗恳。同時(shí)僻肖,LinkedList還實(shí)現(xiàn)了Queue接口,所以他還提供了offer(), peek(), poll()等方法揉稚。
LinkedList更適合從中間插入或者刪除(鏈表的特性)搀玖。 ArrayList更適合檢索和在末尾插入或刪除(數(shù)組的特性)。

18.Collection和Collections的區(qū)別
java.util.Collection 是一個(gè)集合接口含末。它提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法挎袜。Collection接口在Java 類(lèi)庫(kù)中有很多具體的實(shí)現(xiàn)盯仪。Collection接口的意義是為各種具體的集合提供了最大化的統(tǒng)一操作方式全景。
java.util.Collections 是一個(gè)包裝類(lèi)蚪燕。它包含有各種有關(guān)集合操作的靜態(tài)多態(tài)方法。此類(lèi)不能實(shí)例化鲁驶,就像一個(gè)工具類(lèi)钥弯,服務(wù)于Java的Collection框架脆霎。

19.Concurrenthashmap實(shí)現(xiàn)原理
具體原理一句兩句也說(shuō)不清楚睛蛛,網(wǎng)絡(luò)文章:
http://www.cnblogs.com/ITtangtang/p/3948786.html
http://ifeve.com/concurrenthashmap/

20.Error荸频、Exception區(qū)別
Error類(lèi)和Exception類(lèi)的父類(lèi)都是throwable類(lèi)旭从,他們的區(qū)別是:
Error類(lèi)一般是指與虛擬機(jī)相關(guān)的問(wèn)題,如系統(tǒng)崩潰鸽素,虛擬機(jī)錯(cuò)誤付鹿,內(nèi)存空間不足舵匾,方法調(diào)用棧溢等坐梯。對(duì)于這類(lèi)錯(cuò)誤的導(dǎo)致的應(yīng)用程序中斷,僅靠程序本身無(wú)法恢復(fù)和和預(yù)防蹋辅,遇到這樣的錯(cuò)誤侦另,建議讓程序終止褒傅。
Exception類(lèi)表示程序可以處理的異常殿托,可以捕獲且可能恢復(fù)旋廷。遇到這類(lèi)異常柳洋,應(yīng)該盡可能處理異常,使程序恢復(fù)運(yùn)行募书,而不應(yīng)該隨意終止異常莹捡。

21.Unchecked Exception和Checked Exception篮赢,各列舉幾個(gè)
Unchecked Exception:
a. 指的是程序的瑕疵或邏輯錯(cuò)誤启泣,并且在運(yùn)行時(shí)無(wú)法恢復(fù)。
b. 包括Error與RuntimeException及其子類(lèi)纱耻,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException等弄喘。
c. 語(yǔ)法上不需要聲明拋出異常蘑志。

Checked Exception:
a. 代表程序不能直接控制的無(wú)效外界情況(如用戶(hù)輸入卖漫,數(shù)據(jù)庫(kù)問(wèn)題,網(wǎng)絡(luò)異常突委,文件丟失等)
b. 除了Error和RuntimeException及其子類(lèi)之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等缘缚。
c. 需要try catch處理或throws聲明拋出異常。

22.Java中如何實(shí)現(xiàn)代理機(jī)制(JDK齐媒、CGLIB)
JDK動(dòng)態(tài)代理:代理類(lèi)和目標(biāo)類(lèi)實(shí)現(xiàn)了共同的接口喻括,用到InvocationHandler接口唬血。
CGLIB動(dòng)態(tài)代理:代理類(lèi)是目標(biāo)類(lèi)的子類(lèi), 用到MethodInterceptor接口

23.多線(xiàn)程的實(shí)現(xiàn)方式
繼承Thread類(lèi)浩姥、實(shí)現(xiàn)Runnable接口兜挨、使用ExecutorService拌汇、Callable噪舀、Future實(shí)現(xiàn)有返回結(jié)果的多線(xiàn)程。

24.線(xiàn)程的狀態(tài)轉(zhuǎn)換

25.如何停止一個(gè)線(xiàn)程
這個(gè)問(wèn)題簡(jiǎn)單總結(jié)不一定說(shuō)的清纺座,看一篇網(wǎng)絡(luò)文章:
http://www.cnblogs.com/greta/p/5624839.html

26.什么是線(xiàn)程安全
線(xiàn)程安全就是多線(xiàn)程訪(fǎng)問(wèn)同一代碼净响,不會(huì)產(chǎn)生不確定的結(jié)果馋贤。

27.如何保證線(xiàn)程安全
對(duì)非安全的代碼進(jìn)行加鎖控制仿滔;
使用線(xiàn)程安全的類(lèi)堤撵;
多線(xiàn)程并發(fā)情況下,線(xiàn)程共享的變量改為方法級(jí)的局部變量盐固。

28.Synchronized如何使用
synchronized是Java中的關(guān)鍵字刁卜,是一種同步鎖蛔趴。它修飾的對(duì)象有以下幾種:
一. 修飾一個(gè)代碼塊孝情,被修飾的代碼塊稱(chēng)為同步語(yǔ)句塊,其作用的范圍是大括號(hào){}括起來(lái)的代碼羔挡,作用的對(duì)象是調(diào)用這個(gè)代碼塊的對(duì)象绞灼;
二. 修飾一個(gè)方法低矮,被修飾的方法稱(chēng)為同步方法商佛,其作用的范圍是整個(gè)方法肠虽,作用的對(duì)象是調(diào)用這個(gè)方法的對(duì)象税课;
三. 修改一個(gè)靜態(tài)的方法韩玩,其作用的范圍是整個(gè)靜態(tài)方法,作用的對(duì)象是這個(gè)類(lèi)的所有對(duì)象击狮;
四. 修改一個(gè)類(lèi)彪蓬,其作用的范圍是synchronized后面括號(hào)括起來(lái)的部分档冬,作用主的對(duì)象是這個(gè)類(lèi)的所有對(duì)象酷誓。

29.synchronized和Lock的區(qū)別
主要相同點(diǎn):Lock能完成synchronized所實(shí)現(xiàn)的所有功能
主要不同點(diǎn):Lock有比synchronized更精確的線(xiàn)程語(yǔ)義和更好的性能。Lock的鎖定是通過(guò)代碼實(shí)現(xiàn)的娘扩,而synchronized是在JVM層面上實(shí)現(xiàn)的琐旁,synchronized會(huì)自動(dòng)釋放鎖灰殴,而Lock一定要求程序員手工釋放伟阔,并且必須在finally從句中釋放皱炉。Lock還有更強(qiáng)大的功能合搅,例如灾部,它的tryLock方法可以非阻塞方式去拿鎖赌髓。Lock鎖的范圍有局限性春弥,塊范圍,而synchronized可以鎖住塊榛鼎、對(duì)象、類(lèi)苏揣。

30.多線(xiàn)程如何進(jìn)行信息交互
void notify() 喚醒在此對(duì)象監(jiān)視器上等待的單個(gè)線(xiàn)程框沟。
void notifyAll() 喚醒在此對(duì)象監(jiān)視器上等待的所有線(xiàn)程忍燥。
void wait() 導(dǎo)致當(dāng)前的線(xiàn)程等待梅垄,直到其他線(xiàn)程調(diào)用此對(duì)象的notify()方法或notifyAll()方法队丝。
void wait(long timeout) 導(dǎo)致當(dāng)前的線(xiàn)程等待机久,直到其他線(xiàn)程調(diào)用此對(duì)象的notify()方法或notifyAll()方法裙犹,或者超過(guò)指定的時(shí)間量叶圃。
void wait(long timeout, int nanos) 導(dǎo)致當(dāng)前的線(xiàn)程等待掺冠,直到其他線(xiàn)程調(diào)用此對(duì)象的notify()方法或notifyAll()方法,或者其他某個(gè)線(xiàn)程中斷當(dāng)前線(xiàn)程眉厨,或者已超過(guò)某個(gè)實(shí)際時(shí)間量憾股。

31.sleep和wait的區(qū)別(考察的方向是是否會(huì)釋放鎖)
sleep()方法是Thread類(lèi)中方法服球,而wait()方法是Object類(lèi)中的方法斩熊。
sleep()方法導(dǎo)致了程序暫停執(zhí)行指定的時(shí)間,讓出cpu該其他線(xiàn)程似忧,但是他的監(jiān)控狀態(tài)依然保持者盯捌,當(dāng)指定的時(shí)間到了又會(huì)自動(dòng)恢復(fù)運(yùn)行狀態(tài),在調(diào)用sleep()方法的過(guò)程中肠牲,線(xiàn)程不會(huì)釋放對(duì)象鎖。而當(dāng)調(diào)用wait()方法的時(shí)候肥印,線(xiàn)程會(huì)放棄對(duì)象鎖深碱,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象調(diào)用notify()方法后本線(xiàn)程才進(jìn)入對(duì)象鎖定池準(zhǔn)備

32.多線(xiàn)程與死鎖
死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中愉阎,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象幽七,若無(wú)外力作用锉走,它們都將無(wú)法推進(jìn)下去亭饵。
產(chǎn)生死鎖的原因:
一.因?yàn)橄到y(tǒng)資源不足踏兜。
二.進(jìn)程運(yùn)行推進(jìn)的順序不合適碱妆。
三.資源分配不當(dāng)疹尾。

33.如何才能產(chǎn)生死鎖
產(chǎn)生死鎖的四個(gè)必要條件:
一.互斥條件:所謂互斥就是進(jìn)程在某一時(shí)間內(nèi)獨(dú)占資源。
二.請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí)繁成,對(duì)已獲得的資源保持不放面睛。
三.不剝奪條件:進(jìn)程已獲得資源尊搬,在末使用完之前叁鉴,不能強(qiáng)行剝奪。
四.循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系毁嗦。

34.死鎖的預(yù)防
打破產(chǎn)生死鎖的四個(gè)必要條件中的一個(gè)或幾個(gè)亲茅,保證系統(tǒng)不會(huì)進(jìn)入死鎖狀態(tài)。
一.打破互斥條件狗准。即允許進(jìn)程同時(shí)訪(fǎng)問(wèn)某些資源克锣。但是,有的資源是不允許被同時(shí)訪(fǎng)問(wèn)的腔长,像打印機(jī)等等鸟召,這是由資源本身的屬性所決定的。所以,這種辦法并無(wú)實(shí)用價(jià)值金吗。
二.打破不可搶占條件期贫。即允許進(jìn)程強(qiáng)行從占有者那里奪取某些資源封孙。就是說(shuō)膜蠢,當(dāng)一個(gè)進(jìn)程已占有了某些資源杉辙,它又申請(qǐng)新的資源品腹,但不能立即被滿(mǎn)足時(shí),它必須釋放所占有的全部資源,以后再重新申請(qǐng)。它所釋放的資源可以分配給其它進(jìn)程芜茵。這就相當(dāng)于該進(jìn)程占有的資源被隱蔽地強(qiáng)占了。這種預(yù)防死鎖的方法實(shí)現(xiàn)起來(lái)困難笆载,會(huì)降低系統(tǒng)性能闯第。
三.打破占有且申請(qǐng)條件。可以實(shí)行資源預(yù)先分配策略。即進(jìn)程在運(yùn)行前一次性地向系統(tǒng)申請(qǐng)它所需要的全部資源抖苦。如果某個(gè)進(jìn)程所需的全部資源得不到滿(mǎn)足峦筒,則不分配任何資源宠进,此進(jìn)程暫不運(yùn)行末贾。只有當(dāng)系統(tǒng)能夠滿(mǎn)足當(dāng)前進(jìn)程的全部資源需求時(shí),才一次性地將所申請(qǐng)的資源全部分配給該進(jìn)程妆距。由于運(yùn)行的進(jìn)程已占有了它所需的全部資源咽安,所以不會(huì)發(fā)生占有資源又申請(qǐng)資源的現(xiàn)象红选,因此不會(huì)發(fā)生死鎖间学。
四.打破循環(huán)等待條件鹊漠,實(shí)行資源有序分配策略姿锭。采用這種策略,即把資源事先分類(lèi)編號(hào)撩扒,按號(hào)分配螃诅,使進(jìn)程在申請(qǐng),占用資源時(shí)不會(huì)形成環(huán)路瘪撇。所有進(jìn)程對(duì)資源的請(qǐng)求必須嚴(yán)格按資源序號(hào)遞增的順序提出。進(jìn)程占用了小號(hào)資源练俐,才能申請(qǐng)大號(hào)資源,就不會(huì)產(chǎn)生環(huán)路狠轻,從而預(yù)防了死鎖。

35.什么叫守護(hù)線(xiàn)程婆殿,用什么方法實(shí)現(xiàn)守護(hù)線(xiàn)程
守護(hù)線(xiàn)程是為其他線(xiàn)程的運(yùn)行提供服務(wù)的線(xiàn)程。
setDaemon(boolean on)方法可以方便的設(shè)置線(xiàn)程的Daemon模式袋毙,true為守護(hù)模式蝎困,false為用戶(hù)模式。

36.Java線(xiàn)程池技術(shù)及原理
這個(gè)有點(diǎn)長(zhǎng)舌稀,還是看一篇文章吧:
http://www.importnew.com/19011.html
http://www.cnblogs.com/dolphin0520/p/3932921.html

37.java并發(fā)包c(diǎn)oncurrent及常用的類(lèi)
這個(gè)內(nèi)容有點(diǎn)多孽锥,需要仔細(xì)看:
并發(fā)包諸類(lèi)概覽:http://www.raychase.net/1912
線(xiàn)程池:http://www.cnblogs.com/dolphin0520/p/3932921.html
鎖:http://www.cnblogs.com/dolphin0520/p/3923167.html
集合:http://www.cnblogs.com/huangfox/archive/2012/08/16/2642666.html

38.volatile關(guān)鍵字
用volatile修飾的變量殖氏,線(xiàn)程在每次使用變量的時(shí)候茂附,都會(huì)讀取變量修改后的最的值妈踊。volatile很容易被誤用露筒,用來(lái)進(jìn)行原子性操作。
Java語(yǔ)言中的volatile變量可以被看作是一種 “程度較輕的 synchronized”;與 synchronized 塊相比,volatile 變量所需的編碼較少,并且運(yùn)行時(shí)開(kāi)銷(xiāo)也較少,但是它所能實(shí)現(xiàn)的功能也僅是synchronized的一部分锨并。鎖提供了兩種主要特性:互斥(mutual exclusion)和可見(jiàn)性(visibility)底靠『蓿互斥即一次只允許一個(gè)線(xiàn)程持有某個(gè)特定的鎖,因此可使用該特性實(shí)現(xiàn)對(duì)共享數(shù)據(jù)的協(xié)調(diào)訪(fǎng)問(wèn)協(xié)議暑中,這樣壹瘟,一次就只有一個(gè)線(xiàn)程能夠使用該共享數(shù)據(jù)■猓可見(jiàn)性必須確保釋放鎖之前對(duì)共享數(shù)據(jù)做出的更改對(duì)于隨后獲得該鎖的另一個(gè)線(xiàn)程是可見(jiàn)的稻轨,如果沒(méi)有同步機(jī)制提供的這種可見(jiàn)性保證,線(xiàn)程看到的共享變量可能是修改前的值或不一致的值雕凹,這將引發(fā)許多嚴(yán)重問(wèn)題殴俱。Volatile變量具有synchronized的可見(jiàn)性特性政冻,但是不具備原子特性。這就是說(shuō)線(xiàn)程能夠自動(dòng)發(fā)現(xiàn) volatile 變量的最新值线欲。
要使volatile變量提供理想的線(xiàn)程安全明场,必須同時(shí)滿(mǎn)足下面兩個(gè)條件:對(duì)變量的寫(xiě)操作不依賴(lài)于當(dāng)前值;該變量沒(méi)有包含在具有其他變量的不變式中李丰。
第一個(gè)條件的限制使volatile變量不能用作線(xiàn)程安全計(jì)數(shù)器苦锨。雖然增量操作(x++)看上去類(lèi)似一個(gè)單獨(dú)操作,實(shí)際上它是一個(gè)由讀认犹住-修改-寫(xiě)入操作序列組成的組合操作逆屡,必須以原子方式執(zhí)行,而volatile不能提供必須的原子特性踱讨。實(shí)現(xiàn)正確的操作需要使 x 的值在操作期間保持不變魏蔗,而 volatile 變量無(wú)法實(shí)現(xiàn)這點(diǎn)。
每一個(gè)線(xiàn)程運(yùn)行時(shí)都有一個(gè)線(xiàn)程棧痹筛,線(xiàn)程棧保存了線(xiàn)程運(yùn)行時(shí)候變量值信息莺治。當(dāng)線(xiàn)程訪(fǎng)問(wèn)某一個(gè)對(duì)象時(shí)候值的時(shí)候,首先通過(guò)對(duì)象的引用找到對(duì)應(yīng)在堆內(nèi)存的變量的值帚稠,然后把堆內(nèi)存變量的具體值load到線(xiàn)程本地內(nèi)存中谣旁,建立一個(gè)變量副本,之后線(xiàn)程就不再和對(duì)象在堆內(nèi)存變量值有任何關(guān)系滋早,而是直接修改副本變量的值榄审,在修改完之后的某一個(gè)時(shí)刻(線(xiàn)程退出之前),自動(dòng)把線(xiàn)程變量副本的值回寫(xiě)到對(duì)象在堆中變量杆麸。這樣在堆中的對(duì)象的值就產(chǎn)生變化了搁进。


read and load 從主存復(fù)制變量到當(dāng)前工作內(nèi)存
use and assign 執(zhí)行代碼,改變共享變量值
store and write 用工作內(nèi)存數(shù)據(jù)刷新主存相關(guān)內(nèi)容
其中use and assign 可以多次出現(xiàn)昔头,但是這一些操作并不是原子性饼问,也就是 在read load之后,如果主內(nèi)存count變量發(fā)生修改之后揭斧,線(xiàn)程工作內(nèi)存中的值由于已經(jīng)加載莱革,不會(huì)產(chǎn)生對(duì)應(yīng)的變化,所以計(jì)算出來(lái)的結(jié)果會(huì)和預(yù)期不一樣讹开。

39.Java中的NIO盅视,BIO,AIO分別是什么

BIO:同步并阻塞旦万,服務(wù)器實(shí)現(xiàn)模式為一個(gè)連接一個(gè)線(xiàn)程左冬,即客戶(hù)端有連接請(qǐng)求時(shí)服務(wù)器端就需要啟動(dòng)一個(gè)線(xiàn)程進(jìn)行處理,如果這個(gè)連接不做任何事情會(huì)造成不必要的線(xiàn)程開(kāi)銷(xiāo)纸型,當(dāng)然可以通過(guò)線(xiàn)程池機(jī)制改善拇砰。BIO方式適用于連接數(shù)目比較小且固定的架構(gòu)梅忌,這種方式對(duì)服務(wù)器資源要求比較高,并發(fā)局限于應(yīng)用中除破,JDK1.4以前的唯一選擇牧氮,但程序直觀(guān)簡(jiǎn)單易理解。
NIO:同步非阻塞瑰枫,服務(wù)器實(shí)現(xiàn)模式為一個(gè)請(qǐng)求一個(gè)線(xiàn)程踱葛,即客戶(hù)端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器上,多路復(fù)用器輪詢(xún)到連接有I/O請(qǐng)求時(shí)才啟動(dòng)一個(gè)線(xiàn)程進(jìn)行處理光坝。NIO方式適用于連接數(shù)目多且連接比較短(輕操作)的架構(gòu)尸诽,比如聊天服務(wù)器,并發(fā)局限于應(yīng)用中盯另,編程比較復(fù)雜性含,JDK1.4開(kāi)始支持。
AIO:異步非阻塞鸳惯,服務(wù)器實(shí)現(xiàn)模式為一個(gè)有效請(qǐng)求一個(gè)線(xiàn)程商蕴,客戶(hù)端的I/O請(qǐng)求都是由OS先完成了再通知服務(wù)器應(yīng)用去啟動(dòng)線(xiàn)程進(jìn)行處理.AIO方式使用于連接數(shù)目多且連接比較長(zhǎng)(重操作)的架構(gòu),比如相冊(cè)服務(wù)器芝发,充分調(diào)用OS參與并發(fā)操作绪商,編程比較復(fù)雜,JDK7開(kāi)始支持辅鲸。

40.IO和NIO區(qū)別
一.IO是面向流的格郁,NIO是面向緩沖區(qū)的。
二.IO的各種流是阻塞的独悴,NIO是非阻塞模式理张。
三.Java NIO的選擇器允許一個(gè)單獨(dú)的線(xiàn)程來(lái)監(jiān)視多個(gè)輸入通道,你可以注冊(cè)多個(gè)通道使用一個(gè)選擇器绵患,然后使用一個(gè)單獨(dú)的線(xiàn)程來(lái)“選擇”通道:這些通道里已經(jīng)有可以處理的輸入,或者選擇已準(zhǔn)備寫(xiě)入的通道悟耘。這種選擇機(jī)制落蝙,使得一個(gè)單獨(dú)的線(xiàn)程很容易來(lái)管理多個(gè)通道。

41.序列化與反序列化
把對(duì)象轉(zhuǎn)換為字節(jié)序列的過(guò)程稱(chēng)為對(duì)象的序列化暂幼。
把字節(jié)序列恢復(fù)為對(duì)象的過(guò)程稱(chēng)為對(duì)象的反序列化筏勒。
對(duì)象的序列化主要有兩種用途:
一.把對(duì)象的字節(jié)序列永久地保存到硬盤(pán)上,通常存放在一個(gè)文件中旺嬉;
二.在網(wǎng)絡(luò)上傳送對(duì)象的字節(jié)序列管行。
當(dāng)兩個(gè)進(jìn)程在進(jìn)行遠(yuǎn)程通信時(shí),彼此可以發(fā)送各種類(lèi)型的數(shù)據(jù)邪媳。無(wú)論是何種類(lèi)型的數(shù)據(jù)捐顷,都會(huì)以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳送荡陷。發(fā)送方需要把這個(gè)Java對(duì)象轉(zhuǎn)換為字節(jié)序列,才能在網(wǎng)絡(luò)上傳送迅涮;接收方則需要把字節(jié)序列再恢復(fù)為Java對(duì)象废赞。

42.常見(jiàn)的序列化協(xié)議有哪些
Protobuf, Thrift, Hessian, Kryo

43.內(nèi)存溢出和內(nèi)存泄漏的區(qū)別
內(nèi)存溢出是指程序在申請(qǐng)內(nèi)存時(shí),沒(méi)有足夠的內(nèi)存空間供其使用叮姑,出現(xiàn)out of memory唉地。
內(nèi)存泄漏是指分配出去的內(nèi)存不再使用,但是無(wú)法回收传透。

44.Java內(nèi)存模型及各個(gè)區(qū)域的OOM耘沼,如何重現(xiàn)OOM
這部分內(nèi)容很重要,詳細(xì)閱讀《深入理解Java虛擬機(jī)》朱盐,也可以詳細(xì)閱讀這篇網(wǎng)絡(luò)文章http://hllvm.group.iteye.com/group/wiki/2857-JVM

45.出現(xiàn)OOM如何解決
一. 可通過(guò)命令定期抓取heap dump或者啟動(dòng)參數(shù)OOM時(shí)自動(dòng)抓取heap dump文件群嗤。
二. 通過(guò)對(duì)比多個(gè)heap dump,以及heap dump的內(nèi)容托享,分析代碼找出內(nèi)存占用最多的地方骚烧。
三. 分析占用的內(nèi)存對(duì)象,是否是因?yàn)殄e(cuò)誤導(dǎo)致的內(nèi)存未及時(shí)釋放闰围,或者數(shù)據(jù)過(guò)多導(dǎo)致的內(nèi)存溢出赃绊。

46.用什么工具可以查出內(nèi)存泄漏
一. Memory Analyzer-是一款開(kāi)源的JAVA內(nèi)存分析軟件,查找內(nèi)存泄漏羡榴,能容易找到大塊內(nèi)存并驗(yàn)證誰(shuí)在一直占用它碧查,它是基于Eclipse RCP(Rich Client Platform),可以下載RCP的獨(dú)立版本或者Eclipse的插件校仑。
二. JProbe-分析Java的內(nèi)存泄漏忠售。
三. JProfiler-一個(gè)全功能的Java剖析工具,專(zhuān)用于分析J2SE和J2EE應(yīng)用程序迄沫。它把CPU稻扬、執(zhí)行緒和內(nèi)存的剖析組合在一個(gè)強(qiáng)大的應(yīng)用中,GUI可以找到效能瓶頸羊瘩、抓出內(nèi)存泄漏泰佳、并解決執(zhí)行緒的問(wèn)題。
四. JRockit-用來(lái)診斷Java內(nèi)存泄漏并指出根本原因尘吗,專(zhuān)門(mén)針對(duì)Intel平臺(tái)并得到優(yōu)化逝她,能在Intel硬件上獲得最高的性能。
五. YourKit .NET & Java Profiling業(yè)界領(lǐng)先的Java和.NET程序性能分析工具睬捶。
六. AutomatedQA -AutomatedQA的獲獎(jiǎng)產(chǎn)品performance profiling和memory debugging工具集的下一代替換產(chǎn)品黔宛,支持Microsoft, Borland, Intel, Compaq 和 GNU編譯器∏苊常可以為.NET和Windows程序生成全面細(xì)致的報(bào)告臀晃,從而幫助您輕松隔離并排除代碼中含有的性能問(wèn)題和內(nèi)存/資源泄露問(wèn)題觉渴。支持.Net 1.0,1.1,2.0,3.0和Windows 32/64位應(yīng)用程序。
七. Compuware DevPartner Java Edition-包含Java內(nèi)存檢測(cè),代碼覆蓋率測(cè)試,代碼性能測(cè)試,線(xiàn)程死鎖,分布式應(yīng)用等幾大功能模塊

47.Java內(nèi)存管理及回收算法
閱讀這篇文章:http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html

48.Java類(lèi)加載器及如何加載類(lèi)(雙親委派)
閱讀文章:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/ (推薦)
http://blog.csdn.net/zhoudaxia/article/details/35824249

49.xml解析方式
一.DOM(JAXP Crimson解析器)
二.SAX
三.JDOM
四.DOM4J
區(qū)別:
一.DOM4J性能最好积仗,連Sun的JAXM也在用DOM4J疆拘。目前許多開(kāi)源項(xiàng)目中大量采用DOM4J,例如大名鼎鼎的hibernate也用DOM4J來(lái)讀取XML配置文件寂曹。如果不考慮可移植性哎迄,那就采用DOM4J.
二.JDOM和DOM在性能測(cè)試時(shí)表現(xiàn)不佳,在測(cè)試10M文檔時(shí)內(nèi)存溢出隆圆。在小文檔情況下還值得考慮使用DOM和JDOM漱挚。雖然JDOM的開(kāi)發(fā)者已經(jīng)說(shuō)明他們期望在正式發(fā)行版前專(zhuān)注性能問(wèn)題,但是從性能觀(guān)點(diǎn)來(lái)看渺氧,它確實(shí)沒(méi)有值得推薦之處旨涝。另外,DOM仍是一個(gè)非常好的選擇侣背。DOM實(shí)現(xiàn)廣泛應(yīng)用于多種編程語(yǔ)言白华。它還是許多其它與XML相關(guān)的標(biāo)準(zhǔn)的基礎(chǔ),因?yàn)樗将@得W3C推薦(與基于非標(biāo)準(zhǔn)的Java模型相對(duì))贩耐,所以在某些類(lèi)型的項(xiàng)目中可能也需要它(如在JavaScript中使用DOM)弧腥。
三.SAX表現(xiàn)較好,這要依賴(lài)于它特定的解析方式-事件驅(qū)動(dòng)潮太。一個(gè)SAX檢測(cè)即將到來(lái)的XML流管搪,但并沒(méi)有載入到內(nèi)存(當(dāng)然當(dāng)XML流被讀入時(shí),會(huì)有部分文檔暫時(shí)隱藏在內(nèi)存中)铡买。

50.Statement和PreparedStatement之間的區(qū)別
一.PreparedStatement是預(yù)編譯的,對(duì)于批量處理可以大大提高效率. 也叫JDBC存儲(chǔ)過(guò)程
二.使用 Statement 對(duì)象更鲁。在對(duì)數(shù)據(jù)庫(kù)只執(zhí)行一次性存取的時(shí)侯,用 Statement 對(duì)象進(jìn)行處理奇钞。PreparedStatement 對(duì)象的開(kāi)銷(xiāo)比Statement大澡为,對(duì)于一次性操作并不會(huì)帶來(lái)額外的好處。
三.statement每次執(zhí)行sql語(yǔ)句景埃,相關(guān)數(shù)據(jù)庫(kù)都要執(zhí)行sql語(yǔ)句的編譯媒至,preparedstatement是預(yù)編譯得, preparedstatement支持批處理
四.代碼片段1:
String updateString = "UPDATE COFFEES SET SALES = 75 " + "WHERE COF_NAME LIKE ′Colombian′";
stmt.executeUpdate(updateString);
代碼片段2:
PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate();
片斷2和片斷1的區(qū)別在于,后者使用了PreparedStatement對(duì)象纠亚,而前者是普通的Statement對(duì)象。PreparedStatement對(duì)象不僅包含了SQL語(yǔ)句筋夏,而且大多數(shù)情況下這個(gè)語(yǔ)句已經(jīng)被預(yù)編譯過(guò)蒂胞,因而當(dāng)其執(zhí)行時(shí),只需DBMS運(yùn)行SQL語(yǔ)句条篷,而不必先編譯骗随。當(dāng)你需要執(zhí)行Statement對(duì)象多次的時(shí)候蛤织,PreparedStatement對(duì)象將會(huì)大大降低運(yùn)行時(shí)間,當(dāng)然也加快了訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的速度鸿染。
這種轉(zhuǎn)換也給你帶來(lái)很大的便利指蚜,不必重復(fù)SQL語(yǔ)句的句法,而只需更改其中變量的值涨椒,便可重新執(zhí)行SQL語(yǔ)句摊鸡。選擇PreparedStatement對(duì)象與否,在于相同句法的SQL語(yǔ)句是否執(zhí)行了多次蚕冬,而且兩次之間的差別僅僅是變量的不同免猾。如果僅僅執(zhí)行了一次的話(huà),它應(yīng)該和普通的對(duì)象毫無(wú)差異囤热,體現(xiàn)不出它預(yù)編譯的優(yōu)越性猎提。
五.執(zhí)行許多SQL語(yǔ)句的JDBC程序產(chǎn)生大量的Statement和PreparedStatement對(duì)象。通常認(rèn)為PreparedStatement對(duì)象比Statement對(duì)象更有效,特別是如果帶有不同參數(shù)的同一SQL語(yǔ)句被多次執(zhí)行的時(shí)候旁蔼。PreparedStatement對(duì)象允許數(shù)據(jù)庫(kù)預(yù)編譯SQL語(yǔ)句锨苏,這樣在隨后的運(yùn)行中可以節(jié)省時(shí)間并增加代碼的可讀性。
然而棺聊,在Oracle環(huán)境中伞租,開(kāi)發(fā)人員實(shí)際上有更大的靈活性。當(dāng)使用Statement或PreparedStatement對(duì)象時(shí)躺屁,Oracle數(shù)據(jù)庫(kù)會(huì)緩存SQL語(yǔ)句以便以后使用肯夏。在一些情況下,由于驅(qū)動(dòng)器自身需要額外的處理和在Java應(yīng)用程序和Oracle服務(wù)器間增加的網(wǎng)絡(luò)活動(dòng),執(zhí)行PreparedStatement對(duì)象實(shí)際上會(huì)花更長(zhǎng)的時(shí)間犀暑。
然而驯击,除了緩沖的問(wèn)題之外,至少還有一個(gè)更好的原因使我們?cè)谄髽I(yè)應(yīng)用程序中更喜歡使用PreparedStatement對(duì)象,那就是安全性耐亏。傳遞給PreparedStatement對(duì)象的參數(shù)可以被強(qiáng)制進(jìn)行類(lèi)型轉(zhuǎn)換徊都,使開(kāi)發(fā)人員可以確保在插入或查詢(xún)數(shù)據(jù)時(shí)與底層的數(shù)據(jù)庫(kù)格式匹配。
當(dāng)處理公共Web站點(diǎn)上的用戶(hù)傳來(lái)的數(shù)據(jù)的時(shí)候广辰,安全性的問(wèn)題就變得極為重要暇矫。傳遞給PreparedStatement的字符串參數(shù)會(huì)自動(dòng)被驅(qū)動(dòng)器忽略。最簡(jiǎn)單的情況下择吊,這就意味著當(dāng)你的程序試著將字符串“D'Angelo”插入到VARCHAR2中時(shí)李根,該語(yǔ)句將不會(huì)識(shí)別第一個(gè)“,”几睛,從而導(dǎo)致悲慘的失敗房轿。幾乎很少有必要?jiǎng)?chuàng)建你自己的字符串忽略代碼。
在Web環(huán)境中,有惡意的用戶(hù)會(huì)利用那些設(shè)計(jì)不完善的囱持、不能正確處理字符串的應(yīng)用程序夯接。特別是在公共Web站點(diǎn)上,在沒(méi)有首先通過(guò)PreparedStatement對(duì)象處理的情況下,所有的用戶(hù)輸入都不應(yīng)該傳遞給SQL語(yǔ)句纷妆。此外盔几,在用戶(hù)有機(jī)會(huì)修改SQL語(yǔ)句的地方,如HTML的隱藏區(qū)域或一個(gè)查詢(xún)字符串上掩幢,SQL語(yǔ)句都不應(yīng)該被顯示出來(lái)逊拍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粒蜈,隨后出現(xiàn)的幾起案子顺献,更是在濱河造成了極大的恐慌,老刑警劉巖枯怖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件注整,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡度硝,警方通過(guò)查閱死者的電腦和手機(jī)肿轨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蕊程,“玉大人椒袍,你說(shuō)我怎么就攤上這事≡迕” “怎么了驹暑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)辨赐。 經(jīng)常有香客問(wèn)我优俘,道長(zhǎng),這世上最難降的妖魔是什么掀序? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任帆焕,我火速辦了婚禮,結(jié)果婚禮上不恭,老公的妹妹穿的比我還像新娘叶雹。我一直安慰自己,他們只是感情好换吧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布折晦。 她就那樣靜靜地躺著,像睡著了一般沾瓦。 火紅的嫁衣襯著肌膚如雪满着。 梳的紋絲不亂的頭發(fā)上打颤,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音漓滔,去河邊找鬼。 笑死乖篷,一個(gè)胖子當(dāng)著我的面吹牛响驴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撕蔼,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼豁鲤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鲸沮?” 一聲冷哼從身側(cè)響起琳骡,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讼溺,沒(méi)想到半個(gè)月后楣号,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怒坯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年炫狱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剔猿。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡视译,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出归敬,到底是詐尸還是另有隱情酷含,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布汪茧,位于F島的核電站椅亚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏陆爽。R本人自食惡果不足惜什往,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慌闭。 院中可真熱鬧别威,春花似錦、人聲如沸驴剔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丧失。三九已至豺妓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琳拭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工训堆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人白嘁。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓坑鱼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親絮缅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鲁沥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 這個(gè)主題的內(nèi)容之前分三個(gè)篇幅分享過(guò),導(dǎo)致網(wǎng)絡(luò)上傳播的比較分散耕魄,所以本篇做了一個(gè)匯總画恰,同時(shí)對(duì)部分內(nèi)容及答案做了修改,...
    JavaQ閱讀 23,691評(píng)論 9 264
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法吸奴,類(lèi)相關(guān)的語(yǔ)法允扇,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法则奥,異常的語(yǔ)法蔼两,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,657評(píng)論 18 399
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,537評(píng)論 3 93
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,114評(píng)論 0 62
  • Day1.5/9--周二逞度。正方體额划。只起了個(gè)形,還沒(méi)有上色档泽,因?yàn)橼s著要去上瑜伽課俊戳。 Day2.5/11--周四。六棱...
    劉雨霏94394閱讀 245評(píng)論 0 0