Android筆試題整理(一)

以下是某家金融證券類公司的Android筆試題觅廓,及自己整理的答案仙逻,如有錯誤請諸位看官指正茂翔,小生在此先行謝過混蔼。

基礎(chǔ)篇:

1、請描述下Activity的生命周期珊燎,說明下出現(xiàn)的條件和順序惭嚣。

按照順序分別是:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestory();
完整生命周期:一個activity從出現(xiàn)到消失,對應(yīng)的周期方法是從onCreate()到onDestory()悔政;
可見生命周期:當(dāng)activity處于用戶可見狀態(tài)晚吞,將多次執(zhí)行從onStart()到onStop();
前景生命周期:當(dāng)activity可以與用戶交互時谋国,將多次執(zhí)行從onResume()到onPause()槽地;

2、如果后臺的Activity被系統(tǒng)回收了烹卒,如何在被回收之前保存當(dāng)前狀態(tài)闷盔。

調(diào)用onSaveInstanceState() 方法保存數(shù)據(jù):

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
String statetext=tView1.getText().toString();
outState.putString("state", statetext);
}

在onCreate()中恢復(fù)保存的數(shù)據(jù):

if(savedInstanceState!=null){
String statetextString=savedInstanceState.getString("state");
}
3、如何將activity設(shè)置成窗口化旅急。

第一種方法逢勾,在styles.xml文件中,可以新建如下的類似Dialog的style藐吮。
<style name=“Theme.FloatActivity” parent=“android:style/Theme.Dialog”> </style>溺拱。然后在AndroidManifest.xml中在需要顯示為窗口的Activity中添加如下屬性: android: theme=“@style/Theme.FloatActivity”即可。
第二種方法谣辞,也可以直接添加對應(yīng)需要展示為Dialog style的Activity的android: theme屬性為android: theme=“@ android: style/Theme.Dialog”

4迫摔、如何退出activity?如何安全退出已調(diào)用多個activity的application泥从?

對于單一的activity句占,直接finish()即可,或者可以使用killProcess()和System.exit();
對于多個activity躯嫉,可以定義一個list<activity>,實現(xiàn)創(chuàng)建的時候?qū)ctivity緩存在list中纱烘,銷毀的時候從list中移除,按退出按鈕祈餐,則遍歷整個List將Activity一一銷毀擂啥;

5、請介紹下Android的數(shù)據(jù)存儲方式帆阳。

1)SharePreference:采用XML格式將數(shù)據(jù)存儲到設(shè)備中哺壶,只能在同一包名內(nèi)使用;
2)文件存儲:存儲文件到 /data/data/包名/files 內(nèi)存里面,默認(rèn)是私有的訪問權(quán)限山宾;
3)SQLite數(shù)據(jù)庫:Android自帶的輕量級嵌入式數(shù)據(jù)庫至扰,支持SQL語句;
4)ContentProvider:主要用于應(yīng)用程序之間的數(shù)據(jù)交換塌碌;
5)網(wǎng)絡(luò)存儲:通過網(wǎng)絡(luò)上的存儲空間上傳下載數(shù)據(jù)渊胸;

6、請介紹下ContentProvider時如何實現(xiàn)數(shù)據(jù)共享台妆。

ContentProvider是以Uri的形式對外提供數(shù)據(jù)翎猛,ContenrResolver是根據(jù)Uri來訪問數(shù)據(jù)。
步驟:
1)定義自己的ContentProvider類接剩,繼承系統(tǒng)的ContentProvider類
2)在Mainifest.xml文件中注冊ContentProvider切厘,注冊時需要綁定一個URL

<manifest .... >  
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <provider android:name=".PersonContentProvider"  
               android:authorities="com.faith.providers.personprovider" />  
    </application>  
</manifest>  

(注:authorities就相當(dāng)于為該ContentProvider指定URL)
3)其他程序調(diào)用ContentReslover的insert(),delete(),update(),query()進行增刪改查。

7懊缺、請介紹下Android的五種常用的布局疫稿。

FrameLayout(幀布局):從屏幕左上角開始布局,疊加顯示
LinearLayout(線性布局):可分為垂直鹃两、水平布局
AbsoluteLayout(絕對布局):用X遗座,Y坐標(biāo)制定元素位置
RelativeLatout(相對布局):以一個元素為參照物,來定位布局方式
TableLayout(表格布局):行和列的表格布局

8俊扳、如何啟動service途蒋,如何停用service。

1)調(diào)用Context.startService()方法啟動服務(wù)馋记,在服務(wù)為創(chuàng)建時系統(tǒng)會先調(diào)用onCreate()方法号坡,接著調(diào)用onStart()方法。調(diào)用Context.stopService方法結(jié)束服務(wù)梯醒,服務(wù)結(jié)束時會調(diào)用onDestroy()方法;
2)調(diào)用Context.bindService()法啟動服務(wù)宽堆,在服務(wù)為創(chuàng)建時系統(tǒng)會先調(diào)用onCreate()方法,接著調(diào)用onBind()方法茸习,這個時候調(diào)用者與服務(wù)綁定在一起了畜隶,當(dāng)調(diào)用者退出時系統(tǒng)會調(diào)用服務(wù)的onUnbind()-->onDestroy()方法。解除綁定可調(diào)用unvindService()方法号胚,調(diào)用該方法也會導(dǎo)致系統(tǒng)調(diào)用服務(wù)的onUnbind()-->onDestroy()方法代箭;

9、注冊廣播的有幾種方式涕刚,有何優(yōu)缺點?請談?wù)凙ndroid引入廣播機制的用意乙帮。

1)靜態(tài)注冊杜漠,只要是設(shè)備開啟狀態(tài),廣播接受器就是打開著的,無需擔(dān)心接收器是否被關(guān)閉驾茴;
2)動態(tài)注冊盼樟,廣播跟隨程序的生命周期,優(yōu)先級高于靜態(tài)注冊锈至;
引入廣播機制的用意:
a:從MVC的角度考慮(應(yīng)用程序內(nèi))
b:程序間互通消息(例如在自己的應(yīng)用程序內(nèi)監(jiān)聽系統(tǒng)來電)
c:效率上(參考UDP的廣播協(xié)議在局域網(wǎng)的方便性)
d:設(shè)計模式上(反轉(zhuǎn)控制的一種應(yīng)用晨缴,類似監(jiān)聽者模式)

10、請設(shè)計一段斷點續(xù)傳的代碼峡捡,說明關(guān)鍵幾點即可击碗。

在本地下載過程中要使用數(shù)據(jù)庫實時存儲到底存儲到文件的哪個位置了,這樣點擊開始繼續(xù)傳遞時们拙,才能通過HTTP的GET請求中的setRequestProperty()方法可以告訴服務(wù)器稍途,數(shù)據(jù)從哪里開始,到哪里結(jié)束砚婆。同時在本地的文件寫入時械拍,RandomAccessFile的seek()方法也支持在文件中的任意位置進行寫入操作。同時通過廣播將子線程的進度告訴Activity的ProcessBar装盯。

11坷虑、關(guān)于Android應(yīng)用程序自動更新方式,請闡述一種合理的方式埂奈。

1)獲取服務(wù)器版本迄损,對比當(dāng)前版本,判斷是否需要更新程序挥转;
2)彈出是否下載新版本對話框海蔽,點擊下載
3)在通知欄顯示下載進度
4)下載完成后,調(diào)用系統(tǒng)安裝軟件服務(wù)绑谣,安裝軟件

12党窜、Intent的幾種有關(guān)activity啟動方式有哪些,說明下每種方式的含義借宵。

Activity有如下兩種啟動模式:
1)通過AndroidMainifest.xml給Activity 指定啟動模式
2)通過intent中設(shè)置標(biāo)志位為Activity 指定啟動模式
常用的Activity 的Flags有:
FLAG_ACTIVITY_NEW_TASK :為 Activity 指定 “singleTask” 啟動模式
FLAG_ACTIVITY_SINGLE_TOP :為 Activity 指定 “singleTop” 啟動模式
FLAG_ACTIVITY_CLEAR_TOP:具有此標(biāo)志位的 Activity 幌衣,當(dāng)它啟動時,在同一個任務(wù)棧中所有位于它上面的 Activity 都要出棧壤玫。這個模式一般需要和 FLAG_ACTIVITY_NEW_TASK 配合使用豁护。singleTask 啟動模式默認(rèn)具有此標(biāo)志位的效果。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:
具有這個標(biāo)記的 Activity 不會出現(xiàn)在歷史 Activity 的列表中欲间,它等同于在 XML 中指定 Activity 的屬性 android:excludeFromRecents="true" 楚里。

13、說說你對自定義控件的想法猎贴,介紹下你做過的某些自定義控件班缎。

隨著UI越來越絢麗蝴光,Android自帶控件已無法滿足產(chǎn)品的腦洞了,這時候就需要我們自己來實現(xiàn)滿足項目需求的控件达址。常用的自定義控件有如下幾種:
1)基于原聲控件的擴展(如:實現(xiàn)可滾動字體的TextView)
2)基于組合控件的擴展(如:可以圖文混排的LinearLayout)
3)自定義View(如:波浪加載動畫)
自定義View的繪制主要有三種方法onMeasure(),onLayout(),onDraw();

14蔑祟、你如何評價Android系統(tǒng),有何優(yōu)缺點沉唠。

優(yōu)點:
開源性疆虚,市場占有率大;
無縫結(jié)合Google應(yīng)用
缺點:
安全與隱私
運行商可定制系統(tǒng)
缺乏標(biāo)準(zhǔn)配置

15满葛、請解釋下在單線程模型中Message径簿、Handler、Message Queue纱扭、Looper之間的關(guān)系牍帚。

簡單的說,Handler獲取當(dāng)前線程中的 looper對象乳蛾,looper 用來從存放 Message 的 MessageQueue中取出 Message暗赶,再有 Handler 進行 Message 的分發(fā)和處理.
Message Queue(消息隊列): 用來存放通過 Handler 發(fā)布的消息, 通常附屬于某一個創(chuàng)建它的線程肃叶,可以通過 Looper.myQueue()得到當(dāng)前線程的消息隊列
Handler:可以發(fā)布或者處理一個消息或者操作一個 Runnable蹂随,通過 Handler發(fā)布消息, 消息將只會發(fā)送到與它關(guān)聯(lián)的消息隊列因惭,然也只能處理該消息隊列中的消息
Looper:是 Handler 和消息隊列之間通訊橋梁岳锁,程序組件首先通過 Handler 把消息傳遞給 Looper,Looper 把消息放入隊列蹦魔。Looper 也把消息隊列里的消息廣播給所有的 Handler激率,Handler接受到消息后調(diào)用 handleMessage進行處理
Message:消息的類型,在 Handler 類中的 handleMessage 方法中得到單個的消息進行處理
在單線程模型下勿决, 為了線程通信問題乒躺, Android 設(shè)計了一個 Message Queue(消息隊列), 線程間可以通過該 Message Queue 并結(jié)合 Handler 和 Looper 組件進行信息交換低缩。

16嘉冒、Android 中線程與線程,進程與進程之間如何通信咆繁。

一個Android程序開始運行時讳推,會單獨啟動一個process,這個process呈現(xiàn)的是單線程模型玩般,即mianthread银觅,所有的任務(wù)都在一個線程中運行。所以mainthread所調(diào)用的每一個函數(shù)耗時越短越好坏为,對于比較耗時的工作應(yīng)該交給子線程去做究驴,以避免主線程阻塞慨仿。Android提供了Handler和Looper來滿足線程之間的通信。
Android的IPC(進程間通信)機制是為了讓activity和service之間可以隨時進行交互纳胧,所以該機制只適用于activity和service之間的通信。 要實現(xiàn)跨進程通信帘撰,需要借助AIDL(Android Interface Definition Language)跑慕。Android中的跨進程服務(wù)其實是采用C/S的架構(gòu),因而AIDL的目的就是實現(xiàn)通信接口摧找。簡單來說就是通過定義 AIDL 接口文件來定義 IPC 接口核行。Servier 端實現(xiàn) IPC接口,Client 端調(diào)用 IPC接口本地代理蹬耘。

17芝雪、 AIDL的全稱是什么?如何工作综苔?

AIDL 全稱 Android Interface Definition Language(Android 接口描述語言)是一種接口描述語言 ; 編譯器可以通過 aidl文件生成一段代碼惩系,通過預(yù)先定義的接口達到兩個進程內(nèi)部通信進程跨界對象訪問的目的。
AIDL的IPC的機制和COM 或 CORBA 類似,是基于接口的如筛,但它是輕量級的堡牡。它使用代理類在客戶端和實現(xiàn)層間傳遞值。
如果要使用 AIDL, 需要完成2件事情 :

  1. 引入AIDL的相關(guān)類;
  2. 調(diào)用aidl產(chǎn)生的 class杨刨;(理論上 , 參數(shù)可以傳遞基本數(shù)據(jù)類型和String, 還有就是Bundle的派生類 )

進階篇

1晤柄、請闡述之前使用過的網(wǎng)絡(luò)通信框架,包含了調(diào)用方式妖胀,封裝數(shù)據(jù)對象芥颈,傳輸,返回數(shù)據(jù)解析赚抡,以及全局的一場捕獲和處理爬坑。

這一題不知道具體怎么回答,就簡單列出一個OKhttp的GET請求代碼:

OkHttpClient okHttpClient=new OkHttpClient();
Request request=new Request.Builder()
        .url("http://www.baidu.com")
        .build();
Call call=okHttpClient.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {

    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        Log.d(LOG,"body"+response.body().toString());
    }
});
2怕品、有4個Activity A妇垢、B、C肉康、D在當(dāng)前應(yīng)用的頁面棧中闯估,請描述如何保證在互相隨意跳轉(zhuǎn),打開的是原來的界面吼和,并且4個activity都不會被回收或者重新打開一個新的對象涨薪。

這個問題也不知道怎么回答才好,先簡單列一下Android的四種啟動模式炫乓,再做分析吧刚夺。
1)standard:標(biāo)準(zhǔn)模式献丑,也就是Android默認(rèn)的啟動方式。在該模式下沒啟動一個activity就會重新創(chuàng)建一個新的實例侠姑,不管這個實例在任務(wù)中是否存在创橄。
2)singleTop:棧頂復(fù)用模式。假如A啟動B莽红,就會判斷A所在的棧頂是否是B實例妥畏,如果是則直接引用這個棧頂實例,如果不是則重新創(chuàng)建的B實例加載到棧頂安吁。
3)singleTask:站內(nèi)復(fù)用模式醉蚁。如果要啟動的activity不存在,則創(chuàng)建新的的實例并加載到棧頂鬼店;如果位于棧中网棍,則銷毀上面的實例,使該實例位于棧頂妇智;如果已位于棧頂滥玷,則與singleTop模式相同。
4)singleInstance:單例模式俘陷。這個是 singleTask 模式的加強版罗捎,它除了具有 singleTask 模式的所有特性外,它還有一點獨特的特性拉盾,那就是此模式的 Activity 只能單獨地位于一個任務(wù)棧桨菜,不與其他 Activity 共存于同一個任務(wù)棧。
經(jīng)過上面的描述捉偏,可以看出滿足題中條件只能使用singleTop倒得,即棧頂復(fù)用模式,具體方法就是通過AndroidMenifest 給 Activity 指定啟動模式:
<activity android:name=".SecondActivity"
android:launchMode="singleTask"></activity>

3夭禽、描述下ANR錯誤霞掺,哪些情況會發(fā)生ANR錯誤,如何避免讹躯?

Application Not Responding 程序無響應(yīng)菩彬,出現(xiàn)下列情況,會顯示ANR框:
1)輸入事件的響應(yīng)時間超過5秒
2)BroadcastReceiver在10秒內(nèi)沒有執(zhí)行完畢
造成以上兩點的原因有很多潮梯,比如在主線程中進行耗時操作骗灶,如網(wǎng)絡(luò)請求、IO等秉馏。避免方法就是不要在主線程中做耗時操作耙旦,而是采用handler+message的方式放在子線程中去實現(xiàn)。

4萝究、如何理解application免都?你的項目中锉罐,application用來管理哪些數(shù)據(jù)?

Application是單例模式的類绕娘,android系統(tǒng)為每個應(yīng)用程序創(chuàng)建一個Application類的對象且只創(chuàng)建一個脓规。
啟動Application時,系統(tǒng)會創(chuàng)建一個PID险领,即進程ID抖拦,所有的Activity都會在此進程上運行。
Application創(chuàng)建的時候初始化全局變量舷暮,同一個應(yīng)用的所有Activity都可以取到這些全局變量的值
Application對象的生命周期是整個程序中最長的,它的生命周期就等于這個程序的生命周期
Application全局的單例的噩茄,所以在不同的Activity,Service中獲得的對象都是同一個對象下面。
應(yīng)用場景:
在Android中,可以通過繼承Application類來實現(xiàn)應(yīng)用程序級的全局變量绩聘,這種全局變量方法相對靜態(tài)類更有保障沥割,直到應(yīng)用的所有Activity全部被destory掉之后才會被釋放掉。

5凿菩、說說activity的affinity屬性及其應(yīng)用場景机杜。

每個Activity都有taskAffinity屬性,這個屬性指出了它希望進入的Task衅谷。如果一個Activity沒有顯式的指明該Activity的taskAffinity椒拗,那么它的這個屬性就等于Application指明的taskAffinity,如果Application也沒有指明获黔,那么該taskAffinity的值就等于包名蚀苛。而Task也有自己的affinity屬性,它的值等于它的根Activity的taskAffinity的值玷氏。

6堵未、如何理解DVM的進程和Linux的進程

Dvm的進程是dalivk虛擬機進程,每個Android程序都運行在自己的進程里面,每個android程序系統(tǒng)都會給他分配一個單獨的liunx uid(user id),每個dvm都是Linux里面的一個進程.所以說這兩個進程是一個進程.

7、描述下JNI的編譯和工作原理盏触,你的項目中使用過JNI嗎渗蟹?

編譯過程:
1)下載和配置NDK
2)新建項目MyJniDemo,然后再新建一個類JniUtils赞辩,在其內(nèi)部聲明native方法
3)將JNI的內(nèi)容通過TextView顯示在UI上
4)執(zhí)行Build->Make Project雌芽,生成的.class文件目錄
5)根據(jù)生成的class文件,利用javah生成對應(yīng)的 .h頭文件
6)在main目錄下新建一個名為jni的目錄诗宣,講剛才的.h文件剪切過來膘怕,然后新建一個jniutils.c文件
7)在app module目錄下的build.gradle中設(shè)置庫文件名
8)在JniUtils類中添加靜態(tài)初始化load代碼
原理:
在JNI中,本地函數(shù)是通過一個獨立的.c或.cpp文件來實現(xiàn)的(C++為JNI提供的界面會更簡潔一些)召庞。當(dāng)JVM調(diào)用該函數(shù)時岛心,它傳遞了一個JNIEnv指針来破、一個jobject指針和通過Java方法定義的Java參數(shù)

8、你理解的Android安全性可以分為哪幾塊忘古?分別說說你的的一些安全解決方案徘禁,也可以單獨舉出一個場景來說明,如“登錄”髓堪,“支付”流程送朱。

1)數(shù)據(jù)傳輸過程遭劫持 解決:數(shù)據(jù)加密
2)APP反編譯 解決:應(yīng)用程序簽名,混淆打包干旁,應(yīng)用加固
3)手機ROOT驶沼,進程被劫持 解決:應(yīng)用權(quán)限控制
4)本地數(shù)據(jù)存儲的安全性 解決:數(shù)據(jù)存儲加密

9、如APP運行所需內(nèi)存較大争群,在一些低端手機上經(jīng)常會無法正常工作回怜。請給出定位、解決內(nèi)存問題的方案思路换薄,可以結(jié)合你曾經(jīng)解決過的場景說明玉雾。

本應(yīng)該被回收的對象沒有被GC回收,這些無用的對象會占用大量內(nèi)存轻要,這就是我們常說的內(nèi)存泄漏复旬。下面說一下怎么避免內(nèi)存泄漏:
1)Application Context代替Activity Context
2)使用靜態(tài)內(nèi)部類和弱引用
3)資源對象必須關(guān)閉
4)注銷監(jiān)聽器
5)不要加載過大的圖片
6)對批量加載進行緩存設(shè)計

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冲泥,隨后出現(xiàn)的幾起案子驹碍,更是在濱河造成了極大的恐慌,老刑警劉巖凡恍,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幸冻,死亡現(xiàn)場離奇詭異,居然都是意外死亡咳焚,警方通過查閱死者的電腦和手機洽损,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來革半,“玉大人碑定,你說我怎么就攤上這事∮止伲” “怎么了延刘?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長六敬。 經(jīng)常有香客問我碘赖,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任普泡,我火速辦了婚禮播掷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撼班。我一直安慰自己歧匈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布砰嘁。 她就那樣靜靜地躺著件炉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矮湘。 梳的紋絲不亂的頭發(fā)上斟冕,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音缅阳,去河邊找鬼宫静。 笑死,一個胖子當(dāng)著我的面吹牛券时,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伏伯,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼橘洞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了说搅?” 一聲冷哼從身側(cè)響起炸枣,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弄唧,沒想到半個月后适肠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡候引,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年侯养,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澄干。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡逛揩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出麸俘,到底是詐尸還是另有隱情辩稽,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布从媚,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砸民。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一各谚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侮腹,春花似錦嘲碧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至加矛,卻和暖如春履婉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斟览。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工毁腿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苛茂。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓已烤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妓羊。 傳聞我的和親對象是個殘疾皇子胯究,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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