面試集錦1

JAVA基礎(chǔ)

JAVA中的幾種基本類型娱节,各占用多少字節(jié)?

String能被繼承嗎辐益?為什么断傲?

不可以,因?yàn)镾tring類有final修飾符荷腊,而final修飾的類是不能被繼承的艳悔,實(shí)現(xiàn)細(xì)節(jié)不允許改變。平常我們定義的String str=”a”;其實(shí)和String str=new String(“a”)還是有差異的女仰。

前者默認(rèn)調(diào)用的是String.valueOf來(lái)返回String實(shí)例對(duì)象猜年,至于調(diào)用哪個(gè)則取決于你的賦值,比如String num=1,調(diào)用的是

public static String valueOf(int i) {

return Integer.toString(i);

}

后者則是調(diào)用如下部分:

public String(String original) {

this.value = original.value;

this.hash = original.hash;

}

最后我們的變量都存儲(chǔ)在一個(gè)char數(shù)組中

private final char value[];

String疾忍, Stringbuffer乔外, StringBuilder 的區(qū)別。

String 字符串常量(final修飾一罩,不可被繼承)杨幼,String是常量,當(dāng)創(chuàng)建之后即不能更改。(可以通過StringBuffer和StringBuilder創(chuàng)建String對(duì)象(常用的兩個(gè)字符串操作類)差购。)

StringBuffer 字符串變量(線程安全),其也是final類別的四瘫,不允許被繼承,其中的絕大多數(shù)方法都進(jìn)行了同步處理欲逃,包括常用的Append方法也做了同步處理(synchronized修飾)找蜜。其自jdk1.0起就已經(jīng)出現(xiàn)。其toString方法會(huì)進(jìn)行對(duì)象緩存稳析,以減少元素復(fù)制開銷洗做。

public synchronized String toString() {

if (toStringCache == null) {

toStringCache = Arrays.copyOfRange(value, 0, count);

}

return new String(toStringCache, true);

}

StringBuilder 字符串變量(非線程安全)其自jdk1.5起開始出現(xiàn)。與StringBuffer一樣都繼承和實(shí)現(xiàn)了同樣的接口和類彰居,方法除了沒使用synch修飾以外基本一致诚纸,不同之處在于最后toString的時(shí)候,會(huì)直接返回一個(gè)新對(duì)象陈惰。

public String toString() {

// Create a copy, don’t share the array

return new String(value, 0, count);

}

ArrayList 和 LinkedList 有什么區(qū)別畦徘。

ArrayList和LinkedList都實(shí)現(xiàn)了List接口,有以下的不同點(diǎn):

1抬闯、ArrayList是基于索引的數(shù)據(jù)接口旧烧,它的底層是數(shù)組。它可以以O(shè)(1)時(shí)間復(fù)雜度對(duì)元素進(jìn)行隨機(jī)訪問画髓。與此對(duì)應(yīng),LinkedList是以元素列表的形式存儲(chǔ)它的數(shù)據(jù)平委,每一個(gè)元素都和它的前一個(gè)和后一個(gè)元素鏈接在一起奈虾,在這種情況下,查找某個(gè)元素的時(shí)間復(fù)雜度是O(n)廉赔。

2肉微、相對(duì)于ArrayList,LinkedList的插入蜡塌,添加碉纳,刪除操作速度更快,因?yàn)楫?dāng)元素被添加到集合任意位置的時(shí)候馏艾,不需要像數(shù)組那樣重新計(jì)算大小或者是更新索引劳曹。

3、LinkedList比ArrayList更占內(nèi)存琅摩,因?yàn)長(zhǎng)inkedList為每一個(gè)節(jié)點(diǎn)存儲(chǔ)了兩個(gè)引用铁孵,一個(gè)指向前一個(gè)元素,一個(gè)指向下一個(gè)元素房资。

講講類的實(shí)例化順序蜕劝,比如父類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段岖沛,子類靜態(tài)數(shù)據(jù)暑始,構(gòu)造函數(shù),字段婴削,當(dāng) new 的時(shí)候廊镜, 他們的執(zhí)行順序。

此題考察的是類加載器實(shí)例化時(shí)進(jìn)行的操作步驟(加載–>連接->初始化)馆蠕。

父類靜態(tài)代變量期升、

父類靜態(tài)代碼塊、

子類靜態(tài)變量互躬、

子類靜態(tài)代碼塊播赁、

父類非靜態(tài)變量(父類實(shí)例成員變量)、

父類構(gòu)造函數(shù)吼渡、

子類非靜態(tài)變量(子類實(shí)例成員變量)容为、

子類構(gòu)造函數(shù)。

測(cè)試demo:http://blog.csdn.net/u014042066/article/details/77574956

參閱我的博客《深入理解類加載》:http://blog.csdn.net/u014042066/article/details/77394480

用過哪些 Map 類寺酪,都有什么區(qū)別坎背,HashMap 是線程安全的嗎,并發(fā)下使用的 Map 是什么,他們內(nèi)部原理分別是什么寄雀,比如存儲(chǔ)方式得滤, hashcode,擴(kuò)容盒犹, 默認(rèn)容量等懂更。

hashMap是線程不安全的,HashMap是數(shù)組+鏈表+紅黑樹(JDK1.8增加了紅黑樹部分)實(shí)現(xiàn)的急膀,采用哈希表來(lái)存儲(chǔ)的沮协,

參照該鏈接:https://zhuanlan.zhihu.com/p/21673805

JAVA8 的 ConcurrentHashMap 為什么放棄了分段鎖,有什么問題嗎卓嫂,如果你來(lái)設(shè)計(jì)慷暂,你如何設(shè)計(jì)。

參照:https://yq.aliyun.com/articles/36781

有沒有有順序的 Map 實(shí)現(xiàn)類晨雳, 如果有行瑞, 他們是怎么保證有序的。

TreeMap和LinkedHashMap是有序的(TreeMap默認(rèn)升序悍募,LinkedHashMap則記錄了插入順序)蘑辑。

參照:http://uule.iteye.com/blog/1522291

抽象類和接口的區(qū)別,類可以繼承多個(gè)類么坠宴,接口可以繼承多個(gè)接口么,類可以實(shí)現(xiàn)多個(gè)接口么洋魂。

1、抽象類和接口都不能直接實(shí)例化,如果要實(shí)例化副砍,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對(duì)象衔肢,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對(duì)象。

2豁翎、抽象類要被子類繼承角骤,接口要被類實(shí)現(xiàn)。

3心剥、接口只能做方法申明邦尊,抽象類中可以做方法申明,也可以做方法實(shí)現(xiàn)

4优烧、接口里定義的變量只能是公共的靜態(tài)的常量蝉揍,抽象類中的變量是普通變量。

5畦娄、抽象類里的抽象方法必須全部被子類所實(shí)現(xiàn)又沾,如果子類不能全部實(shí)現(xiàn)父類抽象方法,那么該子類只能是抽象類熙卡。同樣杖刷,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如不能全部實(shí)現(xiàn)接口方法驳癌,那么該類也只能為抽象類滑燃。

6、抽象方法只能申明颓鲜,不能實(shí)現(xiàn)不瓶。abstract void abc();不能寫成abstract void abc(){}。

7灾杰、抽象類里可以沒有抽象方法

8、如果一個(gè)類里有抽象方法熙参,那么這個(gè)類只能是抽象類

9艳吠、抽象方法要被實(shí)現(xiàn),所以不能是靜態(tài)的孽椰,也不能是私有的昭娩。

10、接口可繼承接口黍匾,并可多繼承接口栏渺,但類只能單根繼承。

繼承和聚合的區(qū)別在哪锐涯。

繼承指的是一個(gè)類(稱為子類磕诊、子接口)繼承另外的一個(gè)類(稱為父類、父接口)的功能,并可以增加它自己的新功能的能力霎终,繼承是類與類或者接口與接口之間最常見的關(guān)系滞磺;在Java中此類關(guān)系通過關(guān)鍵字extends明確標(biāo)識(shí),在設(shè)計(jì)時(shí)一般沒有爭(zhēng)議性莱褒;

聚合是關(guān)聯(lián)關(guān)系的一種特例击困,他體現(xiàn)的是整體與部分、擁有的關(guān)系广凸,即has-a的關(guān)系阅茶,此時(shí)整體與部分之間是可分離的,他們可以具有各自的生命周期谅海,部分可以屬于多個(gè)整體對(duì)象脸哀,也可以為多個(gè)整體對(duì)象共享;比如計(jì)算機(jī)與CPU胁赢、公司與員工的關(guān)系等企蹭;表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的智末,只能從語(yǔ)義級(jí)別來(lái)區(qū)分谅摄;

參考:http://www.cnblogs.com/jiqing9006/p/5915023.html

講講你理解的 nio和 bio 的區(qū)別是啥,談?wù)?reactor 模型系馆。

IO是面向流的送漠,NIO是面向緩沖區(qū)的

參考:https://zhuanlan.zhihu.com/p/23488863

http://developer.51cto.com/art/201103/252367.htm

http://www.reibang.com/p/3f703d3d804c

反射的原理,反射創(chuàng)建類實(shí)例的三種方式是什么

參照:http://www.reibang.com/p/3ea4a6b57f87?amp

http://blog.csdn.net/yongjian1092/article/details/7364451

反射中由蘑,Class.forName 和 ClassLoader 區(qū)別闽寡。

https://my.oschina.net/gpzhang/blog/486743

描述動(dòng)態(tài)代理的幾種實(shí)現(xiàn)方式,分別說(shuō)出相應(yīng)的優(yōu)缺點(diǎn)尼酿。

Jdk cglib jdk底層是利用反射機(jī)制爷狈,需要基于接口方式,這是由于

Proxy.newProxyInstance(target.getClass().getClassLoader(),

target.getClass().getInterfaces(), this);

Cglib則是基于asm框架裳擎,實(shí)現(xiàn)了無(wú)反射機(jī)制進(jìn)行代理涎永,利用空間來(lái)?yè)Q取了時(shí)間,代理效率高于jdk

http://lrd.ele.me/2017/01/09/dynamic_proxy/

動(dòng)態(tài)代理與 cglib 實(shí)現(xiàn)的區(qū)別

同上(基于invocationHandler和methodInterceptor)

為什么 CGlib 方式可以對(duì)接口實(shí)現(xiàn)代理鹿响。

同上

final 的用途

類羡微、變量、方法

http://www.importnew.com/7553.html

寫出三種單例模式實(shí)現(xiàn)惶我。

懶漢式單例妈倔,餓漢式單例,雙重檢查等

參考:https://my.oschina.net/dyyweb/blog/609021

如何在父類中為子類自動(dòng)完成所有的 hashcode 和 equals 實(shí)現(xiàn)绸贡?這么做有何優(yōu)劣盯蝴。

同時(shí)復(fù)寫hashcode和equals方法毅哗,優(yōu)勢(shì)可以添加自定義邏輯,且不必調(diào)用超類的實(shí)現(xiàn)结洼。

參照:http://java-min.iteye.com/blog/1416727

請(qǐng)結(jié)合 OO 設(shè)計(jì)理念黎做,談?wù)勗L問修飾符 public、private松忍、protected蒸殿、default 在應(yīng)用設(shè)計(jì)中的作用。

訪問修飾符鸣峭,主要標(biāo)示修飾塊的作用域宏所,方便隔離防護(hù)

同一個(gè)類? ? 同一個(gè)包? ? 不同包的子類? 不同包的非子類

Private √

Default √ √

Protected √ √ √

Public √ √ √ √

public: Java語(yǔ)言中訪問限制最寬的修飾符,一般稱之為“公共的”摊溶。被其修飾的類爬骤、屬性以及方法不

僅可以跨類訪問,而且允許跨包(package)訪問莫换。

private: Java語(yǔ)言中對(duì)訪問權(quán)限限制的最窄的修飾符霞玄,一般稱之為“私有的”。被其修飾的類拉岁、屬性以

及方法只能被該類的對(duì)象訪問坷剧,其子類不能訪問,更不能允許跨包訪問喊暖。

protect: 介于public 和 private 之間的一種訪問修飾符惫企,一般稱之為“保護(hù)形”。被其修飾的類陵叽、

屬性以及方法只能被類本身的方法及子類訪問狞尔,即使子類在不同的包中也可以訪問。

default:即不加任何訪問修飾符巩掺,通常稱為“默認(rèn)訪問模式“偏序。該模式下,只允許在同一個(gè)包中進(jìn)行訪

問胖替。

深拷貝和淺拷貝區(qū)別禽车。

http://www.oschina.net/translate/java-copy-shallow-vs-deep-in-which-you-will-swim

數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)描述,各自的時(shí)間復(fù)雜度

http://blog.csdn.net/snow_wu/article/details/53172721

error 和 exception 的區(qū)別刊殉,CheckedException,RuntimeException 的區(qū)別

http://blog.csdn.net/woshixuye/article/details/8230407

請(qǐng)列出 5 個(gè)運(yùn)行時(shí)異常州胳。

同上

在自己的代碼中记焊,如果創(chuàng)建一個(gè) java.lang.String 對(duì)象,這個(gè)對(duì)象是否可以被類加載器加載栓撞?為什么

類加載無(wú)須等到“首次使用該類”時(shí)加載遍膜,jvm允許預(yù)加載某些類碗硬。。瓢颅。恩尾。

http://www.cnblogs.com/jasonstorm/p/5663864.html

說(shuō)一說(shuō)你對(duì) java.lang.Object 對(duì)象中 hashCode 和 equals 方法的理解。在什么場(chǎng)景下需要重新實(shí)現(xiàn)這兩個(gè)方法挽懦。

參考上邊試題

在 jdk1.5 中翰意,引入了泛型,泛型的存在是用來(lái)解決什么問題信柿。

泛型的本質(zhì)是參數(shù)化類型冀偶,也就是說(shuō)所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù),泛型的好處是在編譯的時(shí)候檢查類型安全渔嚷,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的进鸠,以提高代碼的重用率

http://baike.baidu.com/item/java%E6%B3%9B%E5%9E%8B

這樣的 a.hashcode() 有什么用,與 a.equals(b)有什么關(guān)系形病。

hashcode

hashcode()方法提供了對(duì)象的hashCode值客年,是一個(gè)native方法,返回的默認(rèn)值與System.identityHashCode(obj)一致漠吻。

通常這個(gè)值是對(duì)象頭部的一部分二進(jìn)制位組成的數(shù)字量瓜,具有一定的標(biāo)識(shí)對(duì)象的意義存在,但絕不定于地址侥猩。

作用是:用一個(gè)數(shù)字來(lái)標(biāo)識(shí)對(duì)象榔至。比如在HashMap、HashSet等類似的集合類中欺劳,如果用某個(gè)對(duì)象本身作為Key唧取,即要基于這個(gè)對(duì)象實(shí)現(xiàn)Hash的寫入和查找,那么對(duì)象本身如何實(shí)現(xiàn)這個(gè)呢划提?就是基于hashcode這樣一個(gè)數(shù)字來(lái)完成的旭愧,只有數(shù)字才能完成計(jì)算和對(duì)比操作。

hashcode是否唯一

hashcode只能說(shuō)是標(biāo)識(shí)對(duì)象武福,在hash算法中可以將對(duì)象相對(duì)離散開覆旱,這樣就可以在查找數(shù)據(jù)的時(shí)候根據(jù)這個(gè)key快速縮小數(shù)據(jù)的范圍,但hashcode不一定是唯一的伊履,所以hash算法中定位到具體的鏈表后韩容,需要循環(huán)鏈表,然后通過equals方法來(lái)對(duì)比Key是否是一樣的唐瀑。

equals與hashcode的關(guān)系

equals相等兩個(gè)對(duì)象群凶,則hashcode一定要相等。但是hashcode相等的兩個(gè)對(duì)象不一定equals相等哄辣。

https://segmentfault.com/a/1190000004520827

有沒有可能 2 個(gè)不相等的對(duì)象有相同的 hashcode请梢。

Java 中的 HashSet 內(nèi)部是如何工作的赠尾。

底層是基于hashmap實(shí)現(xiàn)的

http://wiki.jikexueyuan.com/project/java-collection/hashset.html

什么是序列化,怎么序列化毅弧,為什么序列化气嫁,反序列化會(huì)遇到什么問題,如何解決够坐。

http://www.importnew.com/17964.html

JVM 知識(shí)

什么情況下會(huì)發(fā)生棧內(nèi)存溢出寸宵。

如果線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的深度,將拋出StackOverflowError異常咆霜。 如果虛擬機(jī)在動(dòng)態(tài)擴(kuò)展棧時(shí)無(wú)法申請(qǐng)到足夠的內(nèi)存空間邓馒,則拋出OutOfMemoryError異常。

參照:http://wiki.jikexueyuan.com/project/java-vm/storage.html

JVM 的內(nèi)存結(jié)構(gòu)蛾坯,Eden 和 Survivor 比例光酣。

eden 和 survior 是按8比1分配的

http://blog.csdn.net/lojze_ly/article/details/49456255

jvm 中一次完整的 GC 流程是怎樣的,對(duì)象如何晉升到老年代脉课,說(shuō)說(shuō)你知道的幾種主要的jvm 參數(shù)救军。

對(duì)象誕生即新生代->eden,在進(jìn)行minor gc過程中倘零,如果依舊存活唱遭,移動(dòng)到from,變成Survivor呈驶,進(jìn)行標(biāo)記代數(shù)拷泽,如此檢查一定次數(shù)后,晉升為老年代袖瞻,

http://www.cnblogs.com/redcreen/archive/2011/05/04/2037056.html

http://ifeve.com/useful-jvm-flags/

https://wangkang007.gitbooks.io/jvm/content/jvmcan_shu_xiang_jie.html

你知道哪幾種垃圾收集器司致,各自的優(yōu)缺點(diǎn),重點(diǎn)講下 cms聋迎,包括原理脂矫,流程,優(yōu)缺點(diǎn)

Serial霉晕、parNew庭再、ParallelScavenge、SerialOld牺堰、ParallelOld拄轻、CMS、G1

https://wangkang007.gitbooks.io/jvm/content/chapter1.html

垃圾回收算法的實(shí)現(xiàn)原理伟葫。

http://www.importnew.com/13493.html

當(dāng)出現(xiàn)了內(nèi)存溢出恨搓,你怎么排錯(cuò)。

首先分析是什么類型的內(nèi)存溢出扒俯,對(duì)應(yīng)的調(diào)整參數(shù)或者優(yōu)化代碼奶卓。

https://wangkang007.gitbooks.io/jvm/content/4jvmdiao_you.html

JVM 內(nèi)存模型的相關(guān)知識(shí)了解多少,比如重排序撼玄,內(nèi)存屏障夺姑,happen-before,主內(nèi)存掌猛,工作內(nèi)存等盏浙。

內(nèi)存屏障:為了保障執(zhí)行順序和可見性的一條cpu指令

重排序:為了提高性能,編譯器和處理器會(huì)對(duì)執(zhí)行進(jìn)行重拍

happen-before:操作間執(zhí)行的順序關(guān)系荔茬。有些操作先發(fā)生废膘。

主內(nèi)存:共享變量存儲(chǔ)的區(qū)域即是主內(nèi)存

工作內(nèi)存:每個(gè)線程copy的本地內(nèi)存孔飒,存儲(chǔ)了該線程以讀/寫共享變量的副本

http://ifeve.com/java-memory-model-1/

http://www.reibang.com/p/d3fda02d4cae

http://blog.csdn.net/kenzyq/article/details/50918457

簡(jiǎn)單說(shuō)說(shuō)你了解的類加載器。

類加載器的分類(bootstrap,ext,app,curstom)鸠匀,類加載的流程(load-link-init)

http://blog.csdn.net/gjanyanlig/article/details/6818655/

講講 JAVA 的反射機(jī)制诽凌。

Java程序在運(yùn)行狀態(tài)可以動(dòng)態(tài)的獲取類的所有屬性和方法狱窘,并實(shí)例化該類杜顺,調(diào)用方法的功能

http://baike.baidu.com/link?url=C7p1PeLa3ploAgkfAOK-4XHE8HzQuOAB7K5GPcK_zpbAa_Aw-nO3997K1oir8N–1_wxXZfOThFrEcA0LjVP6wNOwidVTkLBzKlQVK6JvXYvVNhDWV9yF-NIOebtg1hwsnagsjUhOE2wxmiup20RRa#7

你們線上應(yīng)用的 JVM 參數(shù)有哪些。

-server

Xms6000M

-Xmx6000M

-Xmn500M

-XX:PermSize=500M

-XX:MaxPermSize=500M

-XX:SurvivorRatio=65536

-XX:MaxTenuringThreshold=0

-Xnoclassgc

-XX:+DisableExplicitGC

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC

-XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction=0

-XX:+CMSClassUnloadingEnabled

-XX:-CMSParallelRemarkEnabled

-XX:CMSInitiatingOccupancyFraction=90

-XX:SoftRefLRUPolicyMSPerMB=0

-XX:+PrintClassHistogram

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-XX:+PrintHeapAtGC

-Xloggc:log/gc.log

g1 和 cms 區(qū)別,吞吐量?jī)?yōu)先和響應(yīng)優(yōu)先的垃圾收集器選擇蘸炸。

Cms是以獲取最短回收停頓時(shí)間為目標(biāo)的收集器躬络。基于標(biāo)記-清除算法實(shí)現(xiàn)搭儒。比較占用cpu資源穷当,切易造成碎片提茁。

G1是面向服務(wù)端的垃圾收集器,是jdk9默認(rèn)的收集器馁菜,基于標(biāo)記-整理算法實(shí)現(xiàn)茴扁。可利用多核汪疮、多cpu峭火,保留分代,實(shí)現(xiàn)可預(yù)測(cè)停頓智嚷,可控卖丸。

http://blog.csdn.net/linhu007/article/details/48897597

請(qǐng)解釋如下 jvm 參數(shù)的含義:

-server -Xms512m -Xmx512m -Xss1024K

-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20

XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly。

Server模式啟動(dòng)

最小堆內(nèi)存512m

最大512m

每個(gè)線程椪档溃空間1m

永久代256

最大永久代256

最大轉(zhuǎn)為老年代檢查次數(shù)20

Cms回收開啟時(shí)機(jī):內(nèi)存占用80%

命令JVM不基于運(yùn)行時(shí)收集的數(shù)據(jù)來(lái)啟動(dòng)CMS垃圾收集周期

開源框架知識(shí)

簡(jiǎn)單講講 tomcat 結(jié)構(gòu)稍浆,以及其類加載器流程。

Server- –多個(gè)service

Container級(jí)別的:–>engine–》host–>context

Listenter

Connector

Logging摇天、Naming粹湃、Session、JMX等等

通過WebappClassLoader 加載class

http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/

http://blog.csdn.net/dc_726/article/details/11873343

http://www.cnblogs.com/xing901022/p/4574961.html

http://www.reibang.com/p/62ec977996df

tomcat 如何調(diào)優(yōu)泉坐,涉及哪些參數(shù)为鳄。

硬件上選擇,操作系統(tǒng)選擇腕让,版本選擇孤钦,jdk選擇,配置jvm參數(shù)纯丸,配置connector的線程數(shù)量偏形,開啟gzip壓縮,trimSpaces觉鼻,集群等

http://blog.csdn.net/lifetragedy/article/details/7708724

講講 Spring 加載流程俊扭。

通過listener入口,核心是在AbstractApplicationContext的refresh方法坠陈,在此處進(jìn)行裝載bean工廠萨惑,bean,創(chuàng)建bean實(shí)例仇矾,攔截器庸蔼,后置處理器等。

https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/

講講 Spring 事務(wù)的傳播屬性贮匕。

七種傳播屬性姐仅。

事務(wù)傳播行為

所謂事務(wù)的傳播行為是指,如果在開始當(dāng)前事務(wù)之前,一個(gè)事務(wù)上下文已經(jīng)存在掏膏,此時(shí)有若干選項(xiàng)可以指定一個(gè)事務(wù)性方法的執(zhí)行行為劳翰。在TransactionDefinition定義中包括了如下幾個(gè)表示傳播行為的常量:

TransactionDefinition.PROPAGATION_REQUIRED:如果當(dāng)前存在事務(wù),則加入該事務(wù)馒疹;如果當(dāng)前沒有事務(wù)磕道,則創(chuàng)建一個(gè)新的事務(wù)。

TransactionDefinition.PROPAGATION_REQUIRES_NEW:創(chuàng)建一個(gè)新的事務(wù)行冰,如果當(dāng)前存在事務(wù),則把當(dāng)前事務(wù)掛起伶丐。

TransactionDefinition.PROPAGATION_SUPPORTS:如果當(dāng)前存在事務(wù)悼做,則加入該事務(wù);如果當(dāng)前沒有事務(wù)哗魂,則以非事務(wù)的方式繼續(xù)運(yùn)行肛走。

TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事務(wù)方式運(yùn)行,如果當(dāng)前存在事務(wù)录别,則把當(dāng)前事務(wù)掛起朽色。

TransactionDefinition.PROPAGATION_NEVER:以非事務(wù)方式運(yùn)行,如果當(dāng)前存在事務(wù)组题,則拋出異常葫男。

TransactionDefinition.PROPAGATION_MANDATORY:如果當(dāng)前存在事務(wù),則加入該事務(wù)崔列;如果當(dāng)前沒有事務(wù)梢褐,則拋出異常。

TransactionDefinition.PROPAGATION_NESTED:如果當(dāng)前存在事務(wù)赵讯,則創(chuàng)建一個(gè)事務(wù)作為當(dāng)前事務(wù)的嵌套事務(wù)來(lái)運(yùn)行盈咳;如果當(dāng)前沒有事務(wù),則該取值等價(jià)于TransactionDefinition.PROPAGATION_REQUIRED边翼。

https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/

Spring 如何管理事務(wù)的鱼响。

編程式和聲明式

同上

Spring 怎么配置事務(wù)(具體說(shuō)出一些關(guān)鍵的 xml 元素)。

說(shuō)說(shuō)你對(duì) Spring 的理解组底,非單例注入的原理丈积?它的生命周期?循環(huán)注入的原理斤寇, aop 的實(shí)現(xiàn)原理桶癣,說(shuō)說(shuō) aop 中的幾個(gè)術(shù)語(yǔ),它們是怎么相互工作的娘锁。

核心組件:bean牙寞,context,core,單例注入是通過單例beanFactory進(jìn)行創(chuàng)建间雀,生命周期是在創(chuàng)建的時(shí)候通過接口實(shí)現(xiàn)開啟悔详,循環(huán)注入是通過后置處理器,aop其實(shí)就是通過反射進(jìn)行動(dòng)態(tài)代理惹挟,pointcut茄螃,advice等。

Aop相關(guān):http://blog.csdn.net/csh624366188/article/details/7651702/

Springmvc 中 DispatcherServlet 初始化過程连锯。

入口是web.xml中配置的ds归苍,ds繼承了HttpServletBean,F(xiàn)rameworkServlet运怖,通過其中的init方法進(jìn)行初始化裝載bean和實(shí)例拼弃,initServletBean是實(shí)際完成上下文工作和bean初始化的方法。

http://www.mamicode.com/info-detail-512105.html

操作系統(tǒng)

Linux 系統(tǒng)下你關(guān)注過哪些內(nèi)核參數(shù)摇展,說(shuō)說(shuō)你知道的吻氧。

Tcp/ip io cpu memory

net.ipv4.tcp_syncookies = 1

#啟用syncookies

net.ipv4.tcp_max_syn_backlog = 8192

#SYN隊(duì)列長(zhǎng)度

net.ipv4.tcp_synack_retries=2

#SYN ACK重試次數(shù)

net.ipv4.tcp_fin_timeout = 30

#主動(dòng)關(guān)閉方FIN-WAIT-2超時(shí)時(shí)間

net.ipv4.tcp_keepalive_time = 1200

#TCP發(fā)送keepalive消息的頻度

net.ipv4.tcp_tw_reuse = 1

#開啟TIME-WAIT重用

net.ipv4.tcp_tw_recycle = 1

#開啟TIME-WAIT快速回收

net.ipv4.ip_local_port_range = 1024 65000

#向外連接的端口范圍

net.ipv4.tcp_max_tw_buckets = 5000

#最大TIME-WAIT數(shù)量,超過立即清除

net.ipv4.tcp_syn_retries = 2

#SYN重試次數(shù)

echo “fs.file-max=65535” >> /etc/sysctl.conf

sysctl -p

http://www.haiyun.me/category/system/

Linux 下 IO 模型有幾種咏连,各自的含義是什么盯孙。

阻塞式io,非阻塞io祟滴,io復(fù)用模型振惰,信號(hào)驅(qū)動(dòng)io模型,異步io模型垄懂。

https://yq.aliyun.com/articles/46404

https://yq.aliyun.com/articles/46402

epoll 和 poll 有什么區(qū)別报账。

select的本質(zhì)是采用32個(gè)整數(shù)的32位,即32*32= 1024來(lái)標(biāo)識(shí)埠偿,fd值為1-1024透罢。當(dāng)fd的值超過1024限制時(shí),就必須修改FD_SETSIZE的大小冠蒋。這個(gè)時(shí)候就可以標(biāo)識(shí)32*max值范圍的fd羽圃。

對(duì)于單進(jìn)程多線程,每個(gè)線程處理多個(gè)fd的情況抖剿,select是不適合的朽寞。

1.所有的線程均是從1-32*max進(jìn)行掃描,每個(gè)線程處理的均是一段fd值斩郎,這樣做有點(diǎn)浪費(fèi)

2.1024上限問題脑融,一個(gè)處理多個(gè)用戶的進(jìn)程,fd值遠(yuǎn)遠(yuǎn)大于1024

所以這個(gè)時(shí)候應(yīng)該采用poll缩宜,

poll傳遞的是數(shù)組頭指針和該數(shù)組的長(zhǎng)度肘迎,只要數(shù)組的長(zhǎng)度不是很長(zhǎng)甥温,性能還是很不錯(cuò)的,因?yàn)閜oll一次在內(nèi)核中申請(qǐng)4K(一個(gè)頁(yè)的大小來(lái)存放fd)妓布,盡量控制在4K以內(nèi)

epoll還是poll的一種優(yōu)化姻蚓,返回后不需要對(duì)所有的fd進(jìn)行遍歷,在內(nèi)核中維持了fd的列表匣沼。select和poll是將這個(gè)內(nèi)核列表維持在用戶態(tài)狰挡,然后傳遞到內(nèi)核中。但是只有在2.6的內(nèi)核才支持释涛。

epoll更適合于處理大量的fd 加叁,且活躍fd不是很多的情況,畢竟fd較多還是一個(gè)串行的操作

https://yq.aliyun.com/articles/10525

平時(shí)用到哪些 Linux 命令唇撬。

Ls,find,tar,tail,cp,rm,vi殉农,grep,ps,pkill等等

https://yq.aliyun.com/articles/69417?spm=5176.100240.searchblog.18.Zrbh9R

用一行命令查看文件的最后五行。

Tail -n 5 filename

用一行命令輸出正在運(yùn)行的 java 進(jìn)程局荚。

ps -ef|grep Java

介紹下你理解的操作系統(tǒng)中線程切換過程。

控制權(quán)的轉(zhuǎn)換愈污,根據(jù)優(yōu)先級(jí)切換上下文(用戶耀态,寄存器,系統(tǒng))

http://www.cnblogs.com/kkshaq/p/4544426.html

進(jìn)程和線程的區(qū)別暂雹。

Linux 實(shí)現(xiàn)并沒有區(qū)分這兩個(gè)概念(進(jìn)程和線程)

1. 進(jìn)程:程序的一次執(zhí)行

2. 線程:CPU的基本調(diào)度單位

一個(gè)進(jìn)程可以包含多個(gè)線程首装。

http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

多線程

多線程的幾種實(shí)現(xiàn)方式,什么是線程安全杭跪。

實(shí)現(xiàn)runable接口仙逻,繼承thread類。

http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/

volatile 的原理涧尿,作用系奉,能代替鎖么。

Volatile利用內(nèi)存柵欄機(jī)制來(lái)保持變量的一致性姑廉。不能代替鎖缺亮,其只具備數(shù)據(jù)可見性一致性,不具備原子性桥言。

http://blog.csdn.net/gongzi2311/article/details/20715185

畫一個(gè)線程的生命周期狀態(tài)圖萌踱。

新建,可運(yùn)行号阿,運(yùn)行中并鸵, 睡眠,阻塞扔涧,等待园担,死亡。

http://ifeve.com/thread-status

sleep 和 wait 的區(qū)別。

Sleep是休眠線程粉铐,wait是等待疼约,sleep是thread的靜態(tài)方法,wait則是object的方法蝙泼。

Sleep依舊持有鎖程剥,并在指定時(shí)間自動(dòng)喚醒。wait則釋放鎖汤踏。

http://www.reibang.com/p/4ec3f4b3903d

Lock 與 Synchronized 的區(qū)別织鲸。

首先兩者都保持了并發(fā)場(chǎng)景下的原子性和可見性,區(qū)別則是synchronized的釋放鎖機(jī)制是交由其自身控制溪胶,且互斥性在某些場(chǎng)景下不符合邏輯搂擦,無(wú)法進(jìn)行干預(yù),不可人為中斷等哗脖。

而lock常用的則有ReentrantLock和readwritelock兩者瀑踢,添加了類似鎖投票、定時(shí)鎖等候和可中斷鎖等候的一些特性才避。此外橱夭,它還提供了在激烈爭(zhēng)用情況下更佳的性能。

http://blog.csdn.net/vking_wang/article/details/9952063

synchronized 的原理是什么桑逝,解釋以下名詞:重排序棘劣,自旋鎖,偏向鎖楞遏,輕量級(jí)鎖茬暇,可重入鎖,公平鎖寡喝,非公平鎖糙俗,樂觀鎖,悲觀鎖预鬓。

Synchronized底層是通過監(jiān)視器的enter和exit實(shí)現(xiàn)

https://my.oschina.net/cnarthurs/blog/847801

http://blog.csdn.net/a314773862/article/details/54095819

用過哪些原子類臼节,他們的原理是什么。

AtomicInteger珊皿; AtomicLong网缝; AtomicReference; AtomicBoolean蟋定;基于CAS原語(yǔ)實(shí)現(xiàn) 粉臊,比較并交換、加載鏈接/條件存儲(chǔ)驶兜,最壞的情況下是旋轉(zhuǎn)鎖

https://www.ibm.com/developerworks/cn/java/j-jtp11234/index.html

http://www.jmatrix.org/java/848.html

用過線程池嗎扼仲,newCache 和 newFixed 有什么區(qū)別远寸,他們的原理簡(jiǎn)單概括下,構(gòu)造函數(shù)的各個(gè)參數(shù)的含義是什么屠凶,比如 coreSize驰后,maxsize 等。

newSingleThreadExecutor返回以個(gè)包含單線程的Executor,將多個(gè)任務(wù)交給此Exector時(shí)矗愧,這個(gè)線程處理完一個(gè)任務(wù)后接著處理下一個(gè)任務(wù)灶芝,若該線程出現(xiàn)異常,將會(huì)有一個(gè)新的線程來(lái)替代唉韭。

  newFixedThreadPool返回一個(gè)包含指定數(shù)目線程的線程池夜涕,如果任務(wù)數(shù)量多于線程數(shù)目,那么沒有沒有執(zhí)行的任務(wù)必須等待属愤,直到有任務(wù)完成為止女器。

newCachedThreadPool根據(jù)用戶的任務(wù)數(shù)創(chuàng)建相應(yīng)的線程來(lái)處理,該線程池不會(huì)對(duì)線程數(shù)目加以限制住诸,完全依賴于JVM能創(chuàng)建線程的數(shù)量驾胆,可能引起內(nèi)存不足。

底層是基于ThreadPoolExecutor實(shí)現(xiàn)贱呐,借助reentrantlock保證并發(fā)丧诺。

coreSize核心線程數(shù),maxsize最大線程數(shù)吼句。

http://ifeve.com/java-threadpoolexecutor/

線程池的關(guān)閉方式有幾種,各自的區(qū)別是什么事格。

Shutdown shutdownNow tryTerminate 清空工作隊(duì)列惕艳,終止線程池中各個(gè)線程,銷毀線程池

http://blog.csdn.net/xxcupid/article/details/51993235

假如有一個(gè)第三方接口驹愚,有很多個(gè)線程去調(diào)用獲取數(shù)據(jù)远搪,現(xiàn)在規(guī)定每秒鐘最多有 10 個(gè)線程同時(shí)調(diào)用它,如何做到逢捺。

ScheduledThreadPoolExecutor 設(shè)置定時(shí)谁鳍,進(jìn)行調(diào)度。

public ScheduledThreadPoolExecutor(int corePoolSize,

ThreadFactory threadFactory) {

super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.NANOSECONDS,

new DelayedWorkQueue(), threadFactory);

}

http://ifeve.com/java-scheduledthreadpoolexecutor/

spring 的 controller 是單例還是多例劫瞳,怎么保證并發(fā)的安全倘潜。

單例

通過單例工廠 DefaultSingletonBeanRegistry實(shí)現(xiàn)單例

通過保AsyncTaskExecutor持安全

用三個(gè)線程按順序循環(huán)打印 abc 三個(gè)字母,比如 abcabcabc志于。

public static void main(String[] args) {

final String str=”abc”;

ExecutorService executorService= Executors.newFixedThreadPool(3);

executorService.execute(new Runnable() {

@Override

public void run() {

System.out.println(“1”+str);

}

});executorService.execute(new Runnable() {

@Override

public void run() {

System.out.println(“2”+str);

}

});executorService.execute(new Runnable() {

@Override

public void run() {

System.out.println(“2”+str);

}

});

}

ThreadLocal 用過么涮因,用途是什么,原理是什么伺绽,用的時(shí)候要注意什么养泡。

Threadlocal底層是通過threadlocalMap進(jìn)行存儲(chǔ)鍵值 每個(gè)ThreadLocal類創(chuàng)建一個(gè)Map嗜湃,然后用線程的ID作為Map的key,實(shí)例對(duì)象作為Map的value澜掩,這樣就能達(dá)到各個(gè)線程的值隔離的效果购披。

ThreadLocal的作用是提供線程內(nèi)的局部變量,這種變量在線程的生命周期內(nèi)起作用肩榕,減少同一個(gè)線程內(nèi)多個(gè)函數(shù)或者組件之間一些公共變量的傳遞的復(fù)雜度刚陡。

誰(shuí)設(shè)置誰(shuí)負(fù)責(zé)移除

http://qifuguang.me/2015/09/02/[Java%E5%B9%B6%E5%8F%91%E5%8C%85%E5%AD%A6%E4%B9%A0%E4%B8%83]%E8%A7%A3%E5%AF%86ThreadLocal/

如果讓你實(shí)現(xiàn)一個(gè)并發(fā)安全的鏈表,你會(huì)怎么做点把。

Collections.synchronizedList() ConcurrentLinkedQueue

http://blog.csdn.net/xingjiarong/article/details/48046751

有哪些無(wú)鎖數(shù)據(jù)結(jié)構(gòu)橘荠,他們實(shí)現(xiàn)的原理是什么。

LockFree郎逃,CAS

基于jdk提供的原子類原語(yǔ)實(shí)現(xiàn)哥童,例如AtomicReference

http://blog.csdn.net/b_h_l/article/details/8704480

講講 java 同步機(jī)制的 wait 和 notify。

首先這兩個(gè)方法只能在同步代碼塊中調(diào)用褒翰,wait會(huì)釋放掉對(duì)象鎖贮懈,等待notify喚醒。

http://blog.csdn.net/ithomer/article/details/7685594

多線程如果線程掛住了怎么辦优训。

根據(jù)具體情況(sleep,wait,join等)朵你,酌情選擇notifyAll,notify進(jìn)行線程喚醒揣非。

http://blog.chinaunix.net/uid-122937-id-215913.html

countdowlatch 和 cyclicbarrier 的內(nèi)部原理和用法抡医,以及相互之間的差別。

CountDownLatch是一個(gè)同步輔助類早敬,在完成一組正在其他線程中執(zhí)行的操作之前忌傻,它運(yùn)行一個(gè)或者多個(gè)線程一直處于等待狀態(tài)。

CyclicBarrier要做的事情是搞监,讓一組線程到達(dá)一個(gè)屏障(也可以叫同步點(diǎn))時(shí)被阻塞水孩,直到最后一個(gè)線程到達(dá)屏障時(shí),屏障才會(huì)開門琐驴,所有被屏障攔截的線程才會(huì)繼續(xù)運(yùn)行俘种。

CyclicBarrier初始化的時(shí)候,設(shè)置一個(gè)屏障數(shù)绝淡。線程調(diào)用await()方法的時(shí)候宙刘,這個(gè)線程就會(huì)被阻塞,當(dāng)調(diào)用await()的線程數(shù)量到達(dá)屏障數(shù)的時(shí)候牢酵,主線程就會(huì)取消所有被阻塞線程的狀態(tài)荐类。

前者是遞減,不可循環(huán)茁帽,后者是遞加玉罐,可循環(huán)用

countdowlatch 基于abq cb基于ReentrantLock Condition

http://www.reibang.com/p/a101ae9797e3

http://blog.csdn.net/tolcf/article/details/50925145

使用 synchronized 修飾靜態(tài)方法和非靜態(tài)方法有什么區(qū)別屈嗤。

對(duì)象鎖和類鎖

https://yq.aliyun.com/articles/24226

簡(jiǎn)述 ConcurrentLinkedQueue LinkedBlockingQueue 的用處和不同之處。

LinkedBlockingQueue 是一個(gè)基于單向鏈表的吊输、范圍任意的(其實(shí)是有界的)饶号、FIFO 阻塞隊(duì)列。

ConcurrentLinkedQueue是一個(gè)基于鏈接節(jié)點(diǎn)的無(wú)界線程安全隊(duì)列季蚂,它采用先進(jìn)先出的規(guī)則對(duì)節(jié)點(diǎn)進(jìn)行排序茫船,當(dāng)我們添加一個(gè)元素的時(shí)候,它會(huì)添加到隊(duì)列的尾部扭屁,當(dāng)我們獲取一個(gè)元素時(shí)算谈,它會(huì)返回隊(duì)列頭部的元素。它采用了“wait-free”算法來(lái)實(shí)現(xiàn)料滥,該算法在Michael & Scott算法上進(jìn)行了一些修改, Michael & Scott算法的詳細(xì)信息可以參見參考資料一然眼。

http://ifeve.com/concurrentlinkedqueue/

http://ifeve.com/juc-linkedblockingqueue/

http://blog.csdn.net/xiaohulunb/article/details/38932923

導(dǎo)致線程死鎖的原因?怎么解除線程死鎖葵腹。

死鎖問題是多線程特有的問題高每,它可以被認(rèn)為是線程間切換消耗系統(tǒng)性能的一種極端情況。在死鎖時(shí)践宴,線程間相互等待資源鲸匿,而又不釋放自身的資源,導(dǎo)致無(wú)窮無(wú)盡的等待阻肩,其結(jié)果是系統(tǒng)任務(wù)永遠(yuǎn)無(wú)法執(zhí)行完成带欢。死鎖問題是在多線程開發(fā)中應(yīng)該堅(jiān)決避免和杜絕的問題。

一般來(lái)說(shuō)烤惊,要出現(xiàn)死鎖問題需要滿足以下條件:

1. 互斥條件:一個(gè)資源每次只能被一個(gè)線程使用乔煞。

2. 請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放撕氧。

3. 不剝奪條件:進(jìn)程已獲得的資源瘤缩,在未使用完之前喇完,不能強(qiáng)行剝奪伦泥。

4. 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

只要破壞死鎖 4 個(gè)必要條件之一中的任何一個(gè)锦溪,死鎖問題就能被解決不脯。

https://www.ibm.com/developerworks/cn/java/j-lo-deadlock/

非常多個(gè)線程(可能是不同機(jī)器),相互之間需要等待協(xié)調(diào)刻诊,才能完成某種工作防楷,問怎么設(shè)計(jì)這種協(xié)調(diào)方案。

此問題的本質(zhì)是保持順序執(zhí)行则涯「淳郑可以使用executors

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜡坊,更是在濱河造成了極大的恐慌芥颈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件角钩,死亡現(xiàn)場(chǎng)離奇詭異吝沫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)递礼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門惨险,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人脊髓,你說(shuō)我怎么就攤上這事辫愉。” “怎么了供炼?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵一屋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我袋哼,道長(zhǎng)冀墨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任涛贯,我火速辦了婚禮诽嘉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弟翘。我一直安慰自己虫腋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布稀余。 她就那樣靜靜地躺著悦冀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪睛琳。 梳的紋絲不亂的頭發(fā)上盒蟆,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音师骗,去河邊找鬼历等。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辟癌,可吹牛的內(nèi)容都是我干的寒屯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼黍少,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寡夹!你這毒婦竟也來(lái)了处面?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤菩掏,失蹤者是張志新(化名)和其女友劉穎鸳君,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體患蹂,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡或颊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了传于。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囱挑。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沼溜,靈堂內(nèi)的尸體忽然破棺而出平挑,到底是詐尸還是另有隱情,我是刑警寧澤系草,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布通熄,位于F島的核電站,受9級(jí)特大地震影響找都,放射性物質(zhì)發(fā)生泄漏唇辨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一能耻、第九天 我趴在偏房一處隱蔽的房頂上張望赏枚。 院中可真熱鬧,春花似錦晓猛、人聲如沸饿幅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)栗恩。三九已至,卻和暖如春洪燥,著一層夾襖步出監(jiān)牢的瞬間磕秤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工蚓曼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亲澡,地道東北人钦扭。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓纫版,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親客情。 傳聞我的和親對(duì)象是個(gè)殘疾皇子其弊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • Java8張圖 11癞己、字符串不變性 12、equals()方法梭伐、hashCode()方法的區(qū)別 13痹雅、...
    Miley_MOJIE閱讀 3,701評(píng)論 0 11
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,075評(píng)論 25 707
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料糊识? 從這篇文章中你...
    hw1212閱讀 12,714評(píng)論 2 59
  • 敢想敢做绩社,堅(jiān)持到底 ——觀《極速蝸牛》有感 前...
    逃課的小壞閱讀 379評(píng)論 0 5
  • 今天星期五了赂苗,早晨尹秀鑫過來(lái)的挺早愉耙,她昨晚在她奶奶家睡覺的,早晨起床就早拌滋,但是在她自己房間里睡覺朴沿,我叫她起床就沒那...
    地球與我同在閱讀 317評(píng)論 0 0