Python知識點

Python 語法

  • 說說你平時 Python 都用哪些庫

  • ==is 區(qū)別嗡呼。

    • == 是比較兩對象的值甘苍,is 是比較在內(nèi)存中的地址(id)而克, is 相當于 id(objx) == id(objy)
  • 深拷貝和淺拷貝窝撵。

# 淺拷貝操作只會拷貝被拷貝對象的第一層對象蝶缀,對于更深層級的只不過是拷貝其引用丹喻,如下例中 `a[2]`
# 和 `lst[2]` 這兩個對象為第二層,實際上淺拷貝之后翁都,這兩個還是一個對象碍论。深拷貝會完全的拷貝被拷
# 貝對象的所有層級對象,也就是一個真正意義上的拷貝柄慰。
>>> from copy import copy, deepcopy
>>> lst = [1, 2, [3, 4]]
>>> a, b = copy(lst), deepcopy(lst)
>>> a, b
([1, 2, [3, 4]], [1, 2, [3, 4]])
>>> id(lst[2]), id(a[2]), id(b[2])
(139842737414224, 139842737414224, 139842737414584)
>>> lst[0] = 10
>>> a
[1, 2, [3, 4]]
>>> b
[1, 2, [3, 4]]
>>> lst[2][0] = 'test'
>>> lst
[10, 2, ['test', 4]]
>>> a
[1, 2, ['test', 4]]
>>> b
[1, 2, [3, 4]]
  • __init____new__鳍悠。

    • __init__ 只是單純的對實例進行某些屬性的初始化,以及執(zhí)行一些需要在新建對象時的必要自定義操作坐搔,無返回值藏研。而 __new__ 返回的是用戶創(chuàng)建的實例,這個才是真正用來創(chuàng)建實例的概行,所以 __new__ 是在 __init__ 之前執(zhí)行的遥倦,先創(chuàng)建再初始化。
  • Python 2 和 Python 3 有哪些區(qū)別占锯?

    • lz 當時只是簡單的說了幾點:
      • Python2 和 Python3 的默認字符串不一樣,Python3 默認為 Unicode 形式缩筛。
      • raw_input(), input()
      • 捕捉異常/錯誤的寫法消略,Python2 除了后面的寫法還支持:except Exception, e, 而 Python3 只支持 except Exception as e
      • Python3 中沒有了 xrange瞎抛, 而使用 range 代替它艺演,在 Python3 中,range 返回的是一個可迭代對象,而不是 Python2 那樣直接返回列表胎撤。
      • Python3 中 map 如果需要立即執(zhí)行必須以 list(map()) 這樣的方式晓殊。
      • Python3 中,print 改成了函數(shù)伤提,而在 Python2 中巫俺,print 是一個關(guān)鍵字。使用上有所差異肿男。
      • Python3 中介汹,3/2 == 1.5;Python2 中舶沛,3/2 == 1嘹承。
      • 上面知識列了幾點比較常見的,這里有一篇 http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html 寫的詳細寫如庭。
  • 連接字符串都有哪些方式叹卷?

    • 格式化字符連接(%s)
    • format
    • join
    • +
  • 如何判斷某個對象是什么類型?

    • type(obj)
    • isinstance(obj)
  • 生成器是什么坪它?

  • Python 中的 GIL 是什么?全稱哟楷?舉個例子說說其具體體現(xiàn)瘤载。

    • GIL 全稱 Global Interpreter Lock(全局解釋器鎖),任何 Python 線程執(zhí)行前卖擅,必須先獲得 GIL 鎖鸣奔,然后,每執(zhí)行100條字節(jié)碼惩阶,解釋器就自動釋放GIL鎖挎狸,讓別的線程有機會執(zhí)行。要避免這種“現(xiàn)象”利用操作系統(tǒng)的多核優(yōu)勢可以有下面幾種方法:
      • 使用 C 語言編寫擴展断楷,創(chuàng)建原生線程锨匆,擺脫 GIL,但是即使是擴展冬筒,在 Python 代碼內(nèi)恐锣,任意一條Python 代碼還是會有 GIL 限制
      • 使用多進程代替多線程,使用多進程時舞痰,每個進程都有自己的 GIL土榴。故不存在進程與進程之間的 GIL 限制。但是多進程不能共享內(nèi)存响牛。
  • s = 'abcd', s[2] = 'e' 運行結(jié)果是什么玷禽?

    • 報錯赫段,字符串是不可變對象
  • Python 中,sorted 函數(shù)內(nèi)部是什么算法矢赁?

  • 編碼是一個什么樣的過程?

    • 編碼是二進制到字符的過程
  • Python 里面怎么實現(xiàn)協(xié)程撩银?

    • lz 當時也就簡單說了下可以用 yield 關(guān)鍵字實現(xiàn)给涕,舉了個小例子,還說了用戶控制調(diào)度蜒蕾,加上一些第三方框架稠炬,Gevent,tornado 之類的咪啡,可憐首启。這里安利一下 駒哥 的一篇文章 說清道明:協(xié)程是什么
  • requests 包新建一個 sessionget 和普通的 requests.get 有什么區(qū)別?(tcp長連接)

    • 維持一個會話撤摸,** 建立一個tcp長連接** 毅桃,cookie 自動保存,下次請求還是一個會話准夷。
  • Python 都有哪些數(shù)據(jù)結(jié)構(gòu)钥飞?可變對象,不可變對象分別有哪些衫嵌?

    • 可變對象:列表读宙,字典
    • 字符串,數(shù)字楔绞,元組结闸,集合
  • 在 Python 內(nèi),函數(shù)傳參是引用傳遞還是值傳遞酒朵?

    • 引用傳遞桦锄。
  • 你會對你的項目寫測試么?用哪些方法哪些庫蔫耽?

    • 只說了用 unitest......需要自行尋找答案结耀。
  • 請新建一個只有一個元素 1 的列表和元組。

    • lst = [1]
    • tup = (1,)
  • 函數(shù)默認參數(shù)是可變對象情況匙铡。

>>> def foo(a, b=[1, 2]):
        print(b)
        b.append(a)
        print(b)
>>> val = 4
>>> foo(val)
# [1, 2]
# [1, 2, 4]
>>> foo(val)
# [1, 2, 4]
# [1, 2, 4, 4]
# 這里可以看到图甜,第二次執(zhí)行函數(shù)時,默認參數(shù) b 的值已經(jīng)變成 `[1, 2, 4]` 了鳖眼,原因是黑毅,默認參數(shù)只在第
# 一次執(zhí)行時會進行初始化,后面就默認使用 **初始化后的這個對象(引用)**具帮,但是這里 b 是可變對象博肋,
#添加了一個元素還是之前的對象,所以蜂厅,引用沒變匪凡,不過是值變了而已。
  • Flask 的 Route 是怎么實現(xiàn)的掘猿? 你認為 Flask 框架有什么優(yōu)缺點病游?

    • 實際上在 Flask 類里面,route 可以簡單理解為不過是把對應的路由規(guī)則作為鍵稠通,裝飾的視圖函數(shù)作為值衬衬,存到 werkzeug.routing.Map 對象(可以看成是和字典類似的數(shù)據(jù)結(jié)構(gòu))里。這里是 源碼改橘,好理解些滋尉。這是之前寫的一篇 筆記
    • Flask 優(yōu)點是輕量,靈活飞主,可高度定制狮惜,插件化。缺點也是過于輕量碌识,功能必須通過第三方插件實現(xiàn)碾篡,插件質(zhì)量參差不齊,也不能完全保證后期維護筏餐。
    • 這幾點都只是個人之見开泽,更詳細標準的還需自行尋找答案。
  • WSGI 是什么魁瞪?uWSGI穆律, nginx 這些都是什么用途?

    • 這里有維基百科 的解釋佩番,WSGI 就是一個通用的標準众旗,遵守這個標準,我們能讓我們的 Web 框架更加通用趟畏,編寫更加簡單贡歧。
    • uwsgi 和 Nginx 都是 Web Server,不同的是 Nginx 負責 外網(wǎng)請求 ---(轉(zhuǎn)換)--> 內(nèi)網(wǎng)請求赋秀,uwsgi 負責的是 內(nèi)網(wǎng)請求 -> Python Web 程序利朵。
  • nginx 和 Apache 的區(qū)別?(參考 interview_python)

    • nginx 相對 apache 的優(yōu)點:
      • 輕量級猎莲,同樣起web 服務绍弟,比apache 占用更少的內(nèi)存及資源
      • 抗并發(fā),nginx 處理請求是異步非阻塞的著洼,支持更多的并發(fā)連接樟遣,而apache 則是阻塞型的而叼,在高并發(fā)下nginx 能保持低資源低消耗高性能
      • 配置簡潔
      • 高度模塊化的設計,編寫模塊相對簡單
      • 社區(qū)活躍
    • apache 相對nginx 的優(yōu)點:
      • rewrite 豹悬,比nginx 的rewrite 強大
      • 模塊超多葵陵,基本想到的都可以找到
      • 少bug ,nginx 的bug 相對較多
      • 超穩(wěn)定
  • 你部署 Python 項目時用的是 uWSGI 的哪個模式瞻佛?

    • 默認模式
    • 這個應該問的可能性極小了脱篙,可翻閱 uwsgi 文檔 查找更詳細的資料

數(shù)據(jù)結(jié)構(gòu),算法

  • 層次遍歷二叉樹用什么方法伤柄?
# coding: utf-8

from collections import deque

class BNode:
    """ 二叉樹節(jié)點 """

    def __init__(self, value, left=None, right=None):
        self.value = value
        self.left = left
        self.right = right

def level_traverse(binary_tree):
    """ 層次遍歷二叉樹 """
    stack = deque([binary_tree])
    while stack:
        top = stack.popleft()
        print(top.value)
        if top.left:
            stack.append(top.left)
        if top.right:
            stack.append(top.right)

if __name__ == "__main__":
    b_tree = BNode(1, BNode(2, BNode(4, BNode(5, BNode(7)))), BNode(3, BNode(6, right=BNode(8))))
    level_traverse(b_tree)
  • 非平衡二叉數(shù)如何變成平衡二叉數(shù)绊困?

  • 先,中适刀,后序遍歷二叉數(shù)秤朗。完全二叉數(shù)是什么?

    • 完全二叉樹:深度為k有n個節(jié)點的二叉樹蔗彤,當且僅當其中的每一節(jié)點川梅,都可以和同樣深度k的滿二叉樹,序號為1到n的節(jié)點一對一對應時然遏,稱為“完全二叉樹”贫途。(摘自維基百科)
    • 先序:先根后左再右
    • 中序:先左后中再右
    • 后序:先左后右再根
  • 如何判斷兩個單鏈表是否相交于某個節(jié)點,包括 X 型待侵,Y 型丢早,V 型。

    • X 型不可能存在秧倾,一個單鏈表節(jié)點不存在兩個不同的后繼怨酝。
# 存在 V 型和 Y 型,如果交叉那先,則最后一個節(jié)點肯定是相同的农猬,故直接從最后一個節(jié)點進行反向遍歷。
# 反轉(zhuǎn)單鏈表
def reverse_single_link_lst(link_lst):
    if not link_lst:
        return link_lst
    pre = link_lst
    cur = link_lst.next
    pre.next = None
    while cur:
        tmp = cur.next
        cur.next = pre
        pre = cur
        cur = tmp
    return pre

# 尋找交叉點
def point(node_a, node_b):
    if node_a is None or node_b is None:
        return None
    next_a, next_b = node_a, node_b
    while next_a or next_b:
        if next_a.val == next_b.val:
            if next_a.next and next_b.next and (next_a.next.val == next_b.next.val):
                next_a, next_b = next_a.next, next_b.next
                continue
            return next_a.val
        next_a, next_b = next_a.next, next_b.next
    return None

# 構(gòu)造單鏈表
class Node(object):
    def __init__(self, value, next=None):
        self.val = value
        self.next = next

a = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))
b = ListNode(7, ListNode(9, ListNode(4, ListNode(5))))

ra = reverse_single_link_lst(a)
rb = reverse_single_link_lst(b)
point(ra, rb)
# output:
# 4
  • 如何判斷兩個單鏈表是否是同一個鏈表售淡。

    • 直接判斷第一個節(jié)點即可斤葱。
  • 單鏈表逆轉(zhuǎn)。

    • 見上面判斷交叉鏈表內(nèi)的 reverse_single_link_lst() 函數(shù)揖闸。
  • 堆揍堕,棧,隊列汤纸。

  • 說說你知道的排序算法以及其時間復雜度贮泞。

  • 手寫快速排序楞慈。畫畫堆排序的原理及過程幔烛。

# 快速排序,lz 當時寫的比較復雜囊蓝,但是是最常見的寫法(緊張導致有幾個小bug)说贝,如下
def quick_sort(lst, start, stop):
    if start < stop:
        i, j, x = start, stop, lst[start]
        while i < j:
            while (i < j) and (lst[j] > x):
                j -= 1
            if (i < j):
                lst[i] = lst[j]
                i += 1
            while (i < j) and (lst[i] < x):
                i += 1
            if (i < j):
                lst[j] = lst[i]
                j -= 1
        lst[i] = x
        quick_sort(lst, start, i-1)
        quick_sort(lst, i+1, stop)
    return lst

之后面試官 akun 大哥給了個特別簡潔的寫法,三路復用慎颗,地址在 Gist

def qsort(alist):
    """
    quick sort(easy way, but more memory)
    test: python -m doctest qsort.py
    >>> import math
    >>> import random
    >>> size = 100
    >>> alist = [random.randint(0, size * 10) for i in range(size)]
    >>> qlist = qsort(alist)
    >>> alist.sort()
    >>> assert qlist == alist
    """

    if len(alist) <= 1:
        return alist

    key = alist[0]
    left_list, middle_list, right_list = [], [], []

    [{i < key: left_list, i == key: middle_list, i > key: right_list}[
        True
    ].append(i) for i in alist]

    return qsort(left_list) + middle_list + qsort(right_list)
  • 說說你所了解的加密算法,編碼算法言询,以及壓縮算法俯萎。了解 base64 的原理么?
    • 只說了聽過 base64, md5 這幾種編碼运杭。夫啊。。辆憔。撇眯。自行搜索吧,考的概率極小虱咧。

數(shù)據(jù)庫

網(wǎng)絡

  • 從瀏覽器輸入網(wǎng)址到網(wǎng)頁渲染完畢這過程發(fā)生了什么磅摹?

    • 這里 說的非常詳細崎溃,看面的崗位不同运敢,回答的側(cè)重點不一樣邑遏。如面的 Web 另玖,可以側(cè)重說說 nginx -> uwsgi -> Python -> uwsgi -> nginx 這個過程困曙,(WSGI 標準)
  • TCP 三次握手四次揮手詳細說下。

  • 為什么是三次握手日矫?兩次不行么赂弓?

  • 說說 TCP 和 UDP 的區(qū)別。

    • TCP(傳輸層)
      • 優(yōu)點:TCP 面向連接哪轿,可靠盈魁,穩(wěn)定,傳輸數(shù)據(jù)前需要建立連接窃诉,故有三次握手四次揮手杨耙,還有擁塞控制赤套,重傳等
      • 缺點:慢,占用系統(tǒng)資源珊膜,有確認機制容握,三次握手,所以容易被攻擊车柠,DDos
    • UDP
      • 優(yōu)點:快剔氏,無狀態(tài)傳輸協(xié)議
      • 缺點:不穩(wěn)定,不可靠竹祷,容易丟包
  • 談談你對 SQL 注入谈跛、 XSS 、 CSRF 的理解塑陵。以及如何防范感憾。

  • 說說 DNS 是什么東西兼都。

    • 根據(jù)域名尋找 主機 IP 的協(xié)議嫂沉。
  • HTTP 是工作在七層模型的哪一層?DNS 又是哪一層扮碧?TCP 和 IP 呢输瓜?

    • HTTP,DNS 應用層芬萍,TCP 傳輸層尤揣,IP 網(wǎng)絡層。
  • 說說你知道的 HTTP 方法和 狀態(tài)碼柬祠。

    • 狀態(tài)碼北戏,這里只需要大概說說,以 1××漫蛔,2××嗜愈,3×× 這樣的層面說,沒有必要細到每一個狀態(tài)碼莽龟。
    • HTTP 請求方法
  • HTTP 的 GET 和 POST 有什么區(qū)別蠕嫁?

    • 本質(zhì)上,GET 和 POST 只不過是 發(fā)送機制不同 毯盈。
  • HTTP 和 HTTPS 的區(qū)別剃毒?

    • HTTPS = HTTP + SSL
    • HTTP 默認使用 80 端口,HTTPS 使用 443 端口。
    • 更詳細
  • 說說你知道的 HTTP 包頭部信息里都有哪些字段赘阀。

    • 這個隨便抓下包就知道了益缠,就不說了~
  • HTTP 包頭部信息里面的 Host 字段是什么作用?

    • 表示當前請求服務器的主機名
  • 說說 cookie 里面你都知道哪些字段基公。

  • Session 是什么東西幅慌?

  • 在寫爬蟲過程中,如果遇見需要加載 js 的情況你是如何處理的轰豆。

    • Selenium胰伍,PhantomJS
  • 普通匿名代理和高匿代理有什么區(qū)別?

    • 來自普通匿名代理的請求在服務端能看見真實 IP酸休, 而高匿代理在服務端看不見真實 IP喇辽,只能看見代理服務器 IP。
  • 你知道哪些反爬措施雨席?

    • 加代理,加頭部吠式,爬取速度控制陡厘,隨機 UA,模擬真實用戶的點擊習慣去請求特占。

操作系統(tǒng)

  • 進程和線程以及協(xié)程的區(qū)別糙置?
  • 多線程和多進程的區(qū)別?
  • 信號量和互斥量的區(qū)別是目?
  • 堆內(nèi)存是干嘛的谤饭?
  • 如何檢驗當前機器是大端模式還是小端模式?
  • 如何讓某個程序在后臺運行懊纳?(Linux)
  • sed, awk 用法(Linux)

編程題

  • 手寫二分查找揉抵,快速排序
  • 還有一個 SQL 語句的嗤疯,一條 SQL 語句打印某張表某個 group count TOP 5冤今。
  • Python 中正則模塊 rematch 函數(shù) 和 search 函數(shù)有什么區(qū)別?舉例說明茂缚。
  • 一條語句求 0 - 999999 內(nèi)能被 7 整除的所有數(shù)的和戏罢。
  • 實現(xiàn)一個鏈表結(jié)構(gòu),要求其插入第一個節(jié)點脚囊,刪除最后一個節(jié)點的復雜度為 O(1)龟糕。
  • 實現(xiàn)一個 retry 裝飾器,使用如下:
# 可以指定重試次數(shù)悔耘,直到函數(shù)返回正確結(jié)果讲岁。
@retry(retries=3)
def func(*args, **kw):
    try:
        # some action
        return True
    except:
        return False

大概可以像下面這樣寫,

from functools import wraps

def retry(retries=3):
    def timesf(func):
        @wraps(func)
        def wrap(*args, **kw):
            i = 0
            status = True
            while status and i < times:
                status = func(*args, **kw)
                i += 1
            return status
        return wrap
    return timesf
  • 有一個4G 的文本文件,存儲的是酒店信息催首,每行存的是一個酒店ID扶踊,可以重復。請編寫程序輸出一個新文件郎任,新文件內(nèi)容為每行一條數(shù)據(jù)秧耗,每行的數(shù)據(jù)格式如下:酒店ID + 出現(xiàn)次數(shù)(最后提到了其他想法,如文件切片舶治,bitmap 之類)
  • 實現(xiàn)一個函數(shù)分井,根據(jù)字典序比較兩字符串大小,不允許用庫函數(shù)霉猛,盡量越底層實現(xiàn)越好尺锚。(手寫)
  • 實現(xiàn)一個函數(shù),檢驗一個字符串是否符合 xxxx-xx-xx 這樣的日期格式惜浅,注意潤年瘫辩,大小月,不允許用庫函數(shù)坛悉,盡量越底層實現(xiàn)越好伐厌。(手寫)
  • 我們是做地圖相關(guān)工作的,現(xiàn)在給你提供一個三維的數(shù)據(jù)裸影,數(shù)據(jù)描述的是不同時間一些地圖上的一些地點坐標挣轨,分別有時間,x軸坐標轩猩,y軸坐標卷扮,請你設計一個算法,能夠得到一天內(nèi)地圖上的 TOP 10 熱點地區(qū)均践,地區(qū)大小也相應的自己作合適調(diào)整晤锹,開放性題目。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彤委,一起剝皮案震驚了整個濱河市抖甘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葫慎,老刑警劉巖衔彻,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異偷办,居然都是意外死亡艰额,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門椒涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柄沮,“玉大人,你說我怎么就攤上這事∽娲辏” “怎么了狱意?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拯欧。 經(jīng)常有香客問我详囤,道長,這世上最難降的妖魔是什么镐作? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任藏姐,我火速辦了婚禮,結(jié)果婚禮上该贾,老公的妹妹穿的比我還像新娘羔杨。我一直安慰自己,他們只是感情好杨蛋,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布兜材。 她就那樣靜靜地躺著,像睡著了一般逞力。 火紅的嫁衣襯著肌膚如雪曙寡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天掏击,我揣著相機與錄音,去河邊找鬼秩铆。 笑死砚亭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的殴玛。 我是一名探鬼主播捅膘,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滚粟!你這毒婦竟也來了寻仗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤凡壤,失蹤者是張志新(化名)和其女友劉穎署尤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亚侠,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡曹体,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了硝烂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箕别。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出串稀,到底是詐尸還是另有隱情除抛,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布母截,位于F島的核電站到忽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏微酬。R本人自食惡果不足惜绘趋,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颗管。 院中可真熱鬧陷遮,春花似錦、人聲如沸垦江。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽比吭。三九已至绽族,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衩藤,已是汗流浹背吧慢。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赏表,地道東北人检诗。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像瓢剿,于是被迫代替她去往敵國和親逢慌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345