Java面試題(一):Java基礎(chǔ)

序言

在本篇文章開(kāi)始之前,我想先來(lái)回答一個(gè)問(wèn)題:我為什么要寫這樣一篇關(guān)于面試的文章瞬女?原因有三個(gè):第一虐秋,我想為每一個(gè)為夢(mèng)想時(shí)刻準(zhǔn)備著的“有心人”榕茧,盡一份自己的力量,提供一份高度精華的 Java 面試清單客给;第二用押,目前市面上的面試題不是答案不準(zhǔn)確就是內(nèi)容覆蓋面太窄,所以提供一份經(jīng)典而又準(zhǔn)確的面試題是非常有必要的靶剑;第三蜻拨,本文會(huì)對(duì)部分面試題提供詳細(xì)解讀和代碼案例,讓讀者知其然并知其所以然桩引,從而學(xué)到更多的知識(shí)缎讼。

或許這份面試題還不足以囊括所有 Java 問(wèn)題,但有了它坑匠,我相信你一定不會(huì)“敗”的很慘血崭,因?yàn)橛辛怂阋詰?yīng)對(duì)目前市面上絕大部分的 Java 面試了厘灼,因?yàn)檫@篇文章不論是從深度還是廣度上來(lái)講夹纫,都已經(jīng)囊括了非常多的知識(shí)點(diǎn)了。

凡事預(yù)則立设凹,不預(yù)則廢舰讹。能讀到這里的人,我相信都是這個(gè)世界上的“有心人”围来,還是那句老話:上天不負(fù)有心人跺涤!我相信你的每一步努力,都會(huì)收獲意想不到的回報(bào)监透。

適宜閱讀人群

  • 需要面試的初/中/高級(jí) Java 程序員
  • 想要查漏補(bǔ)缺的人
  • 想要不斷完善和擴(kuò)充自己 Java 技術(shù)棧的人
  • Java 面試官

閱讀建議

本文會(huì)按技能模塊劃分文章段落桶错,每個(gè)模塊里的內(nèi)容,從易到難依次進(jìn)行排序胀蛮,各模塊之間不存在互相關(guān)聯(lián)的關(guān)系院刁,讀者可選擇文章順序閱讀或者跳躍式閱讀。

包含的模塊

本文分為十九個(gè)模塊粪狼,分別是: Java 基礎(chǔ)退腥、容器、多線程再榄、反射狡刘、對(duì)象拷貝、Java Web 困鸥、異常嗅蔬、網(wǎng)絡(luò)剑按、設(shè)計(jì)模式、Spring/Spring MVC澜术、Spring Boot/Spring Cloud艺蝴、Hibernate、MyBatis鸟废、RabbitMQ猜敢、Kafka、Zookeeper盒延、MySQL缩擂、Redis、JVM 添寺,如下圖所示:

模塊圖

共包含 208 道面試題撇叁,本文的宗旨是為讀者朋友們整理一份詳實(shí)而又權(quán)威的面試清單,下面一起進(jìn)入主題吧畦贸。

Java 基礎(chǔ)

1. JDK 和 JRE 有什么區(qū)別陨闹?
  • JDK:Java Development Kit 的簡(jiǎn)稱,Java 開(kāi)發(fā)工具包薄坏,提供了 Java 的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境趋厉。
  • JRE:Java Runtime Environment 的簡(jiǎn)稱,Java 運(yùn)行環(huán)境胶坠,為 Java 的運(yùn)行提供了所需環(huán)境君账。

具體來(lái)說(shuō) JDK 其實(shí)包含了 JRE,同時(shí)還包含了編譯 Java 源碼的編譯器 Javac沈善,還包含了很多 Java 程序調(diào)試和分析的工具乡数。簡(jiǎn)單來(lái)說(shuō):如果你需要運(yùn)行 Java 程序,只需安裝 JRE 就可以了闻牡,如果你需要編寫 Java 程序净赴,需要安裝 JDK。

2. == 和 equals 的區(qū)別是什么罩润?

== 解讀

對(duì)于基本類型和引用類型 == 的作用效果是不同的玖翅,如下所示:

  • 基本類型:比較的是值是否相同;
  • 引用類型:比較的是引用是否相同割以;

代碼示例:

String x = "string";String y = "string";String z = new String("string");System.out.println(x==y); // trueSystem.out.println(x==z); // falseSystem.out.println(x.equals(y)); // trueSystem.out.println(x.equals(z)); // true

代碼解讀:因?yàn)?x 和 y 指向的是同一個(gè)引用金度,所以 == 也是 true,而 new String()方法則重寫開(kāi)辟了內(nèi)存空間严沥,所以 == 結(jié)果為 false猜极,而 equals 比較的一直是值,所以結(jié)果都為 true消玄。

equals 解讀

equals 本質(zhì)上就是 ==跟伏,只不過(guò) String 和 Integer 等重寫了 equals 方法扎筒,把它變成了值比較〕昴罚看下面的代碼就明白了。

首先來(lái)看默認(rèn)情況下 equals 比較一個(gè)有相同值的對(duì)象奥溺,代碼如下:

class Cat {    public Cat(String name) {        this.name = name;    }     private String name;     public String getName() {        return name;    }     public void setName(String name) {        this.name = name;    }} Cat c1 = new Cat("王磊");Cat c2 = new Cat("王磊");System.out.println(c1.equals(c2)); // false

輸出結(jié)果出乎我們的意料辞色,竟然是 false?這是怎么回事浮定,看了 equals 源碼就知道了相满,源碼如下:

public boolean equals(Object obj) {        return (this == obj);}

原來(lái) equals 本質(zhì)上就是 ==。

那問(wèn)題來(lái)了桦卒,兩個(gè)相同值的 String 對(duì)象立美,為什么返回的是 true?代碼如下:

String s1 = new String("老王");String s2 = new String("老王");System.out.println(s1.equals(s2)); // true

同樣的方灾,當(dāng)我們進(jìn)入 String 的 equals 方法建蹄,找到了答案,代碼如下:

public boolean equals(Object anObject) {    if (this == anObject) {        return true;    }    if (anObject instanceof String) {        String anotherString = (String)anObject;        int n = value.length;        if (n == anotherString.value.length) {            char v1[] = value;            char v2[] = anotherString.value;            int i = 0;            while (n-- != 0) {                if (v1[i] != v2[i])                    return false;                i++;            }            return true;        }    }    return false;}

原來(lái)是 String 重寫了 Object 的 equals 方法裕偿,把引用比較改成了值比較洞慎。

總結(jié) :== 對(duì)于基本類型來(lái)說(shuō)是值比較,對(duì)于引用類型來(lái)說(shuō)是比較的是引用嘿棘;而 equals 默認(rèn)情況下是引用比較劲腿,只是很多類重新了 equals 方法,比如 String鸟妙、Integer 等把它變成了值比較焦人,所以一般情況下 equals 比較的是值是否相等。

3. 兩個(gè)對(duì)象的 hashCode() 相同重父,則 equals() 也一定為 true花椭,對(duì)嗎?

不對(duì)房午,兩個(gè)對(duì)象的 hashCode() 相同个从,equals() 不一定 true。

代碼示例:

String str1 = "通話";String str2 = "重地";System. out. println(String. format("str1:%d | str2:%d",  str1\. hashCode(),str2\. hashCode()));System. out. println(str1\. equals(str2));

執(zhí)行的結(jié)果:

str1:1179395 | str2:1179395 false

代碼解讀:很顯然“通話”和“重地”的 hashCode() 相同歪沃,然而 equals() 則為 false嗦锐,因?yàn)樵谏⒘斜碇校琱ashCode() 相等即兩個(gè)鍵值對(duì)的哈希值相等沪曙,然而哈希值相等奕污,并不一定能得出鍵值對(duì)相等。

4. final 在 Java 中有什么作用液走?
  • final 修飾的類叫最終類碳默,該類不能被繼承贾陷。
  • final 修飾的方法不能被重寫。
  • final 修飾的變量叫常量嘱根,常量必須初始化髓废,初始化之后值就不能被修改。
5. Java 中的 Math. round(-1. 5) 等于多少该抒?

等于 -1慌洪,因?yàn)樵跀?shù)軸上取值時(shí),中間值(0.5)向右取整凑保,所以正 0.5 是往上取整冈爹,負(fù) 0.5 是直接舍棄。

6. String 屬于基礎(chǔ)的數(shù)據(jù)類型嗎欧引?

String 不屬于基礎(chǔ)類型频伤,基礎(chǔ)類型有 8 種:byte、boolean芝此、char憋肖、short、int婚苹、float瞬哼、long、double租副,而 String 屬于對(duì)象坐慰。

7. Java 中操作字符串都有哪些類?它們之間有什么區(qū)別用僧?

操作字符串的類有:String结胀、StringBuffer、StringBuilder责循。

String 和 StringBuffer糟港、StringBuilder 的區(qū)別在于 String 聲明的是不可變的對(duì)象,每次操作都會(huì)生成新的 String 對(duì)象院仿,然后將指針指向新的 String 對(duì)象秸抚,而 StringBuffer、StringBuilder 可以在原有對(duì)象的基礎(chǔ)上進(jìn)行操作歹垫,所以在經(jīng)常改變字符串內(nèi)容的情況下最好不要使用 String剥汤。

StringBuffer 和 StringBuilder 最大的區(qū)別在于,StringBuffer 是線程安全的排惨,而 StringBuilder 是非線程安全的吭敢,但 StringBuilder 的性能卻高于 StringBuffer,所以在單線程環(huán)境下推薦使用 StringBuilder暮芭,多線程環(huán)境下推薦使用 StringBuffer鹿驼。

8. String str="i"與 String str=new String("i")一樣嗎欲低?

不一樣,因?yàn)閮?nèi)存的分配方式不一樣畜晰。String str="i"的方式砾莱,Java 虛擬機(jī)會(huì)將其分配到常量池中;而 String str=new String("i") 則會(huì)被分到堆內(nèi)存中凄鼻。

9. 如何將字符串反轉(zhuǎn)腊瑟?

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

示例代碼:

// StringBuffer reverseStringBuffer stringBuffer = new StringBuffer();stringBuffer. append("abcdefg");System. out. println(stringBuffer. reverse()); // gfedcba// StringBuilder reverseStringBuilder stringBuilder = new StringBuilder();stringBuilder. append("abcdefg");System. out. println(stringBuilder. reverse()); // gfedcba
10. String 類的常用方法都有那些野宜?
  • indexOf():返回指定字符的索引。
  • charAt():返回指定索引處的字符魔策。
  • replace():字符串替換匈子。
  • trim():去除字符串兩端空白。
  • split():分割字符串闯袒,返回一個(gè)分割后的字符串?dāng)?shù)組虎敦。
  • getBytes():返回字符串的 byte 類型數(shù)組。
  • length():返回字符串長(zhǎng)度政敢。
  • toLowerCase():將字符串轉(zhuǎn)成小寫字母其徙。
  • toUpperCase():將字符串轉(zhuǎn)成大寫字符。
  • substring():截取字符串喷户。
  • equals():字符串比較唾那。
11. 抽象類必須要有抽象方法嗎?

不需要褪尝,抽象類不一定非要有抽象方法闹获。

示例代碼:

abstract class Cat {    public static void sayHi() {        System. out. println("hi~");    }}

上面代碼,抽象類并沒(méi)有抽象方法但完全可以正常運(yùn)行河哑。

12. 普通類和抽象類有哪些區(qū)別避诽?
  • 普通類不能包含抽象方法,抽象類可以包含抽象方法璃谨。
  • 抽象類不能直接實(shí)例化沙庐,普通類可以直接實(shí)例化。
13. 抽象類能使用 final 修飾嗎佳吞?

不能拱雏,定義抽象類就是讓其他類繼承的,如果定義為 final 該類就不能被繼承底扳,這樣彼此就會(huì)產(chǎn)生矛盾古涧,所以 final 不能修飾抽象類,如下圖所示花盐,編輯器也會(huì)提示錯(cuò)誤信息:

編譯器保存圖
14. 接口和抽象類有什么區(qū)別羡滑?
  • 實(shí)現(xiàn):抽象類的子類使用 extends 來(lái)繼承菇爪;接口必須使用 implements 來(lái)實(shí)現(xiàn)接口。
  • 構(gòu)造函數(shù):抽象類可以有構(gòu)造函數(shù)柒昏;接口不能有凳宙。
  • 實(shí)現(xiàn)數(shù)量:類可以實(shí)現(xiàn)很多個(gè)接口;但是只能繼承一個(gè)抽象類职祷。
  • 訪問(wèn)修飾符:接口中的方法默認(rèn)使用 public 修飾氏涩;抽象類中的方法可以是任意訪問(wèn)修飾符。
15. Java 中 IO 流分為幾種有梆?

按功能來(lái)分:輸入流(input)是尖、輸出流(output)。

按類型來(lái)分:字節(jié)流和字符流泥耀。

字節(jié)流和字符流的區(qū)別是:字節(jié)流按 8 位傳輸以字節(jié)為單位輸入輸出數(shù)據(jù)饺汹,字符流按 16 位傳輸以字符為單位輸入輸出數(shù)據(jù)。

16. BIO痰催、NIO兜辞、AIO 有什么區(qū)別?
  • BIO:Block IO 同步阻塞式 IO夸溶,就是我們平常使用的傳統(tǒng) IO逸吵,它的特點(diǎn)是模式簡(jiǎn)單使用方便,并發(fā)處理能力低缝裁。
  • NIO:New IO 同步非阻塞 IO扫皱,是傳統(tǒng) IO 的升級(jí),客戶端和服務(wù)器端通過(guò) Channel(通道)通訊捷绑,實(shí)現(xiàn)了多路復(fù)用啸罢。
  • AIO:Asynchronous IO 是 NIO 的升級(jí),也叫 NIO2胎食,實(shí)現(xiàn)了異步非堵塞 IO 扰才,異步 IO 的操作基于事件和回調(diào)機(jī)制。
17. Files的常用方法都有哪些厕怜?
  • Files. exists():檢測(cè)文件路徑是否存在衩匣。
  • Files. createFile():創(chuàng)建文件。
  • Files. createDirectory():創(chuàng)建文件夾粥航。
  • Files. delete():刪除一個(gè)文件或目錄琅捏。
  • Files. copy():復(fù)制文件。
  • Files. move():移動(dòng)文件递雀。
  • Files. size():查看文件個(gè)數(shù)柄延。
  • Files. read():讀取文件。
  • Files. write():寫入文件。

容器

18. Java 容器都有哪些搜吧?

Java 容器分為 Collection 和 Map 兩大類市俊,其下又有很多子類,如下所示:

  • Collection
  • List
    • ArrayList
    • LinkedList
    • Vector
    • Stack
  • Set
    • HashSet
    • LinkedHashSet
    • TreeSet
  • Map
  • HashMap
    • LinkedHashMap
  • TreeMap
  • ConcurrentHashMap
  • Hashtable
19. Collection 和 Collections 有什么區(qū)別滤奈?
  • Collection 是一個(gè)集合接口摆昧,它提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法,所有集合都是它的子類蜒程,比如 List绅你、Set 等。
  • Collections 是一個(gè)包裝類昭躺,包含了很多靜態(tài)方法忌锯,不能被實(shí)例化,就像一個(gè)工具類领炫,比如提供的排序方法: Collections. sort(list)偶垮。
20. List、Set驹吮、Map 之間的區(qū)別是什么针史?

List晶伦、Set碟狞、Map 的區(qū)別主要體現(xiàn)在兩個(gè)方面:元素是否有序、是否允許元素重復(fù)婚陪。

三者之間的區(qū)別族沃,如下表:

區(qū)別圖
21. HashMap 和 Hashtable 有什么區(qū)別?
  • 存儲(chǔ):HashMap 運(yùn)行 key 和 value 為 null泌参,而 Hashtable 不允許脆淹。
  • 線程安全:Hashtable 是線程安全的,而 HashMap 是非線程安全的沽一。
  • 推薦使用:在 Hashtable 的類注釋可以看到盖溺,Hashtable 是保留類不建議使用,推薦在單線程環(huán)境下使用 HashMap 替代铣缠,如果需要多線程使用則用 ConcurrentHashMap 替代烘嘱。
22. 如何決定使用 HashMap 還是 TreeMap?

對(duì)于在 Map 中插入蝗蛙、刪除蝇庭、定位一個(gè)元素這類操作,HashMap 是最好的選擇捡硅,因?yàn)橄鄬?duì)而言 HashMap 的插入會(huì)更快哮内,但如果你要對(duì)一個(gè) key 集合進(jìn)行有序的遍歷,那 TreeMap 是更好的選擇壮韭。

23. 說(shuō)一下 HashMap 的實(shí)現(xiàn)原理北发?

HashMap 基于 Hash 算法實(shí)現(xiàn)的纹因,我們通過(guò) put(key,value)存儲(chǔ),get(key)來(lái)獲取鲫竞。當(dāng)傳入 key 時(shí)辐怕,HashMap 會(huì)根據(jù) key. hashCode() 計(jì)算出 hash 值,根據(jù) hash 值將 value 保存在 bucket 里从绘。當(dāng)計(jì)算出的 hash 值相同時(shí)寄疏,我們稱之為 hash 沖突,HashMap 的做法是用鏈表和紅黑樹(shù)存儲(chǔ)相同 hash 值的 value僵井。當(dāng) hash 沖突的個(gè)數(shù)比較少時(shí)陕截,使用鏈表否則使用紅黑樹(shù)。

24. 說(shuō)一下 HashSet 的實(shí)現(xiàn)原理批什?

HashSet 是基于 HashMap 實(shí)現(xiàn)的农曲,HashSet 底層使用 HashMap 來(lái)保存所有元素,因此 HashSet 的實(shí)現(xiàn)比較簡(jiǎn)單驻债,相關(guān) HashSet 的操作乳规,基本上都是直接調(diào)用底層 HashMap 的相關(guān)方法來(lái)完成,HashSet 不允許重復(fù)的值合呐。

25. ArrayList 和 LinkedList 的區(qū)別是什么暮的?
  • 數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn):ArrayList 是動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),而 LinkedList 是雙向鏈表的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)淌实。
  • 隨機(jī)訪問(wèn)效率:ArrayList 比 LinkedList 在隨機(jī)訪問(wèn)的時(shí)候效率要高冻辩,因?yàn)?LinkedList 是線性的數(shù)據(jù)存儲(chǔ)方式,所以需要移動(dòng)指針從前往后依次查找拆祈。
  • 增加和刪除效率:在非首尾的增加和刪除操作恨闪,LinkedList 要比 ArrayList 效率要高,因?yàn)?ArrayList 增刪操作要影響數(shù)組內(nèi)的其他數(shù)據(jù)的下標(biāo)放坏。

綜合來(lái)說(shuō)咙咽,在需要頻繁讀取集合中的元素時(shí),更推薦使用 ArrayList淤年,而在插入和刪除操作較多時(shí)钧敞,更推薦使用 LinkedList。

26. 如何實(shí)現(xiàn)數(shù)組和 List 之間的轉(zhuǎn)換互亮?
  • 數(shù)組轉(zhuǎn) List:使用 Arrays. asList(array) 進(jìn)行轉(zhuǎn)換犁享。
  • List 轉(zhuǎn)數(shù)組:使用 List 自帶的 toArray() 方法。

代碼示例:

// list to arrayList<String> list = new ArrayList<String>();list. add("王磊");list. add("的博客");list. toArray();// array to listString[] array = new String[]{"王磊","的博客"};Arrays. asList(array);
27. ArrayList 和 Vector 的區(qū)別是什么豹休?
  • 線程安全:Vector 使用了 Synchronized 來(lái)實(shí)現(xiàn)線程同步炊昆,是線程安全的,而 ArrayList 是非線程安全的。
  • 性能:ArrayList 在性能方面要優(yōu)于 Vector凤巨。
  • 擴(kuò)容:ArrayList 和 Vector 都會(huì)根據(jù)實(shí)際的需要?jiǎng)討B(tài)的調(diào)整容量视乐,只不過(guò)在 Vector 擴(kuò)容每次會(huì)增加 1 倍,而 ArrayList 只會(huì)增加 50%敢茁。
28. Array 和 ArrayList 有何區(qū)別佑淀?
  • Array 可以存儲(chǔ)基本數(shù)據(jù)類型和對(duì)象,ArrayList 只能存儲(chǔ)對(duì)象彰檬。
  • Array 是指定固定大小的伸刃,而 ArrayList 大小是自動(dòng)擴(kuò)展的。
  • Array 內(nèi)置方法沒(méi)有 ArrayList 多逢倍,比如 addAll捧颅、removeAll、iteration 等方法只有 ArrayList 有较雕。
29. 在 Queue 中 poll()和 remove()有什么區(qū)別碉哑?
  • 相同點(diǎn):都是返回第一個(gè)元素,并在隊(duì)列中刪除返回的對(duì)象亮蒋。
  • 不同點(diǎn):如果沒(méi)有元素 poll()會(huì)返回 null扣典,而 remove()會(huì)直接拋出 NoSuchElementException 異常。

代碼示例:

Queue<String> queue = new LinkedList<String>();queue. offer("string"); // addSystem. out. println(queue. poll());System. out. println(queue. remove());System. out. println(queue. size());
30. 哪些集合類是線程安全的慎玖?

Vector贮尖、Hashtable、Stack 都是線程安全的凄吏,而像 HashMap 則是非線程安全的远舅,不過(guò)在 JDK 1.5 之后隨著 Java. util. concurrent 并發(fā)包的出現(xiàn)闰蛔,它們也有了自己對(duì)應(yīng)的線程安全類痕钢,比如 HashMap 對(duì)應(yīng)的線程安全類就是 ConcurrentHashMap。

31. 迭代器 Iterator 是什么序六?

Iterator 接口提供遍歷任何 Collection 的接口任连。我們可以從一個(gè) Collection 中使用迭代器方法來(lái)獲取迭代器實(shí)例。迭代器取代了 Java 集合框架中的 Enumeration例诀,迭代器允許調(diào)用者在迭代過(guò)程中移除元素随抠。

32. Iterator 怎么使用?有什么特點(diǎn)繁涂?

Iterator 使用代碼如下:

List<String> list = new ArrayList<>();Iterator<String> it = list. iterator();while(it. hasNext()){  String obj = it. next();  System. out. println(obj);}

Iterator 的特點(diǎn)是更加安全拱她,因?yàn)樗梢源_保,在當(dāng)前遍歷的集合元素被更改的時(shí)候扔罪,就會(huì)拋出 ConcurrentModificationException 異常秉沼。

33. Iterator 和 ListIterator 有什么區(qū)別?
  • Iterator 可以遍歷 Set 和 List 集合,而 ListIterator 只能遍歷 List唬复。
  • Iterator 只能單向遍歷矗积,而 ListIterator 可以雙向遍歷(向前/后遍歷)。
  • ListIterator 從 Iterator 接口繼承敞咧,然后添加了一些額外的功能棘捣,比如添加一個(gè)元素、替換一個(gè)元素休建、獲取前面或后面元素的索引位置乍恐。
34. 怎么確保一個(gè)集合不能被修改?

可以使用 Collections. unmodifiableCollection(Collection c) 方法來(lái)創(chuàng)建一個(gè)只讀集合测砂,這樣改變集合的任何操作都會(huì)拋出 Java. lang. UnsupportedOperationException 異常禁熏。

示例代碼如下:

List<String> list = new ArrayList<>();list. add("x");Collection<String> clist = Collections. unmodifiableCollection(list);clist. add("y"); // 運(yùn)行時(shí)此行報(bào)錯(cuò)System. out. println(list. size());
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市邑彪,隨后出現(xiàn)的幾起案子瞧毙,更是在濱河造成了極大的恐慌,老刑警劉巖寄症,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宙彪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡有巧,警方通過(guò)查閱死者的電腦和手機(jī)释漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)篮迎,“玉大人男图,你說(shuō)我怎么就攤上這事√鸪鳎” “怎么了逊笆?”我有些...
    開(kāi)封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)岂傲。 經(jīng)常有香客問(wèn)我难裆,道長(zhǎng),這世上最難降的妖魔是什么镊掖? 我笑而不...
    開(kāi)封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任乃戈,我火速辦了婚禮,結(jié)果婚禮上亩进,老公的妹妹穿的比我還像新娘症虑。我一直安慰自己,他們只是感情好归薛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布谍憔。 她就那樣靜靜地躺著驶冒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪韵卤。 梳的紋絲不亂的頭發(fā)上骗污,一...
    開(kāi)封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死因篇,一個(gè)胖子當(dāng)著我的面吹牛酥泛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了汗洒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤父款,失蹤者是張志新(化名)和其女友劉穎溢谤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體憨攒,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡世杀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肝集。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞻坝。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杏瞻,靈堂內(nèi)的尸體忽然破棺而出所刀,到底是詐尸還是另有隱情,我是刑警寧澤捞挥,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布浮创,位于F島的核電站,受9級(jí)特大地震影響树肃,放射性物質(zhì)發(fā)生泄漏蒸矛。R本人自食惡果不足惜瀑罗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一胸嘴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斩祭,春花似錦劣像、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绑青。三九已至,卻和暖如春屋群,著一層夾襖步出監(jiān)牢的瞬間闸婴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工芍躏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邪乍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓对竣,卻偏偏與公主長(zhǎng)得像庇楞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子否纬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 在一個(gè)方法內(nèi)部定義的變量都存儲(chǔ)在棧中吕晌,當(dāng)這個(gè)函數(shù)運(yùn)行結(jié)束后,其對(duì)應(yīng)的棧就會(huì)被回收临燃,此時(shí)睛驳,在其方法體中定義的變量將不...
    Y了個(gè)J閱讀 4,413評(píng)論 1 14
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,580評(píng)論 1 114
  • 所有知識(shí)點(diǎn)已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)膜廊? 在 Jav...
    侯蛋蛋_閱讀 2,415評(píng)論 1 4
  • 生命的重啟 : 風(fēng)是最初的夢(mèng) __ 微型散文詩(shī) 作者 : 何強(qiáng) " 沒(méi)有一聲巨響柏靶,世界不會(huì)理你的 " 兒女大了,不...
    天邊的凝紅閱讀 217評(píng)論 0 1
  • 索引的重點(diǎn)在辭典溃论,辭典包含了關(guān)鍵詞和指向頻率文件和位置文件的指針屎蜓,同時(shí)還包含了field信息。 https://w...
    周倜吉閱讀 354評(píng)論 0 1