運(yùn)維工程師面試總結(jié)

前言:

最近在面試找工作,整理一下遇到的面試題.大公司更傾向于基礎(chǔ),小公司更偏向于業(yè)務(wù)處理,但整體上遇到的面試問題大部分都會(huì)圍繞于你簡(jiǎn)歷中寫了哪些技術(shù).
寫下這些面試題,權(quán)且當(dāng)做對(duì)用到的技術(shù)做概念上的梳理.當(dāng)然其中一些答案有的是我摘自別人的,可能存在不嚴(yán)謹(jǐn)?shù)那闆r,建議自行驗(yàn)證

Django

講一下Django的生命周期

瀏覽器發(fā)起請(qǐng)求>>WSGI創(chuàng)建socket服務(wù)端,接收請(qǐng)求(Httprequest)>>中間件處理請(qǐng)求>>url路由,根據(jù)當(dāng)前請(qǐng)求的URL找到視圖函數(shù)>>view視圖,進(jìn)行業(yè)務(wù)處理>>中間件處理響應(yīng)>>WSGI返回響應(yīng)(HttpResponse)>>瀏覽器渲染

說一下用過哪些中間件
  • 緩存中間件: django.middleware.cache.UpdateCacheMiddleware django.middleware.cache.FetchFromCacheMiddleware 開啟全站范圍的緩存哼凯。 如果開啟了這些緩存拭抬,任何一個(gè)由Django提供的頁面將會(huì)被緩存遇八,緩存時(shí)長(zhǎng)在CACHE_MIDDLEWARE_SECONDS中配置定義。

  • 會(huì)話中間件 django.contrib.sessions.middleware.SessionMiddleware 開啟會(huì)話支持辰晕,session支持中間件梁肿,加入這個(gè)中間件飘千,會(huì)在數(shù)據(jù)庫中生成一個(gè)django_session的表。

  • 通用中間件: django.middleware.common.CommonMiddleware 通用中間件栈雳,會(huì)處理一些URL,比如baidu.com會(huì)自動(dòng)的處理成www.baidu.com缔莲。比如/blog/111會(huì)處理成/blog/111/自動(dòng)加上反斜杠哥纫。

  • CSRF保護(hù)中間件 django.middleware.csrf.CsrfViewMiddleware 跨域請(qǐng)求偽造中間件。加入這個(gè)中間件痴奏,在提交表單的時(shí)候會(huì)必須加入csrf_token蛀骇,cookie中也會(huì)生成一個(gè)名叫csrftoken的值,也會(huì)在header中加入一個(gè)HTTP_X_CSRFTOKEN的值來放置CSRF攻擊读拆。

  • 用戶授權(quán)中間件: django.contrib.auth.middleware.AuthenticationMiddleware 他會(huì)在每個(gè)HttpRequest對(duì)象到達(dá)view之前添加當(dāng)前登錄用戶的user屬性擅憔,也就是你可以在view中通過request訪問user。

  • 消息中間件 django.contrib.messages.middleware.MessageMiddleware 展示一些后臺(tái)信息給前端頁面檐晕。如果需要用到消息暑诸,還需要在INSTALLED_APPS中添加django.contrib.message才能有效蚌讼。如果不需要,可以把這兩個(gè)都刪除个榕。

  • XFrameOptionsMiddleware中間件 django.middleware.clickjacking.XFrameOptionsMiddleware 防止通過瀏覽器頁面跨Frame出現(xiàn)clickjacking(欺騙點(diǎn)擊)攻擊出現(xiàn)篡石。

Python

python中倆個(gè)列表如何取交集

獲取兩個(gè)list 的交集

  • 方法一:
a=[2,3,4,5]
b=[2,5,8]
tmp = [j for j in a if j in b] #列表推導(dǎo)式求的兩個(gè)列表的交集
print(tmp)
  • 方法二:
print(list(set(a).intersection(set(b)))) # #列用集合的取交集方法
  • 方法三:
lst = []
for i in a:
if i in b :
lst.append(i)
print(lst)

拓展:
獲取兩個(gè) list 的差集
方法一:
ret = list(set(a)-set(b))
print(ret)
方法二:
print(list(set(b).difference(set(a)))) # b中有而a中沒有的
獲取兩個(gè) list 的并集
方法一:
ret = list(set(a)-set(b))
print(ret)
方法二:
print(list(set(b).difference(set(a)))) # b中有而a中沒有的

python全局變量應(yīng)用場(chǎng)景

Python 允許在所有函數(shù)的外部定義變量,這樣的變量稱為全局變量(Global Variable)
全局變量的默認(rèn)作用域是整個(gè)程序西采,即全局變量既可以在各個(gè)函數(shù)的外部使用凰萨,也可以在各函數(shù)內(nèi)部使用
globals() 函數(shù)為 Python 的內(nèi)置函數(shù),它可以返回一個(gè)包含全局范圍內(nèi)所有變量的字典械馆,該字典中的每個(gè)鍵值對(duì)胖眷,鍵為變量名,值為該變量的值
locals() 函數(shù)也是 Python 內(nèi)置函數(shù)之一霹崎,通過調(diào)用該函數(shù)珊搀,我們可以得到一個(gè)包含當(dāng)前作用域內(nèi)所有變量的字典。這里所謂的“當(dāng)前作用域”指的是仿畸,在函數(shù)內(nèi)部調(diào)用 locals() 函數(shù)食棕,會(huì)獲得包含所有局部變量的字典;而在全局范文內(nèi)調(diào)用 locals() 函數(shù)错沽,其功能和 globals() 函數(shù)相同

python可變數(shù)據(jù)類型有哪些

  • 可變數(shù)據(jù)類型:list(列表)簿晓、dict(字典)、set(集合千埃,不常用)

  • 不可變數(shù)據(jù)類型:數(shù)值類型(int憔儿、float、bool)放可、string(字符串)谒臼、tuple(元組)

可變數(shù)據(jù)類型:當(dāng)該數(shù)據(jù)類型對(duì)應(yīng)的變量的值發(fā)生了變化時(shí),如果它對(duì)應(yīng)的內(nèi)存地址不發(fā)生改變耀里,那么這個(gè)數(shù)據(jù)類型就是 可變數(shù)據(jù)類型蜈缤。

不可變數(shù)據(jù)類型:當(dāng)該數(shù)據(jù)類型對(duì)應(yīng)的變量的值發(fā)生了變化時(shí),如果它對(duì)應(yīng)的內(nèi)存地址發(fā)生了改變冯挎,那么這個(gè)數(shù)據(jù)類型就是 不可變數(shù)據(jù)類型底哥。

總結(jié):可變數(shù)據(jù)類型更改值后,內(nèi)存地址不發(fā)生改變房官。不可變數(shù)據(jù)類型更改值后趾徽,內(nèi)存地址發(fā)生改變。

裝飾器用過嗎,寫一個(gè)簡(jiǎn)單的裝飾器

用自己的話總結(jié)一下
裝飾器可完成對(duì)原函數(shù)的擴(kuò)展,可傳遞函數(shù)做為參數(shù)

# 一個(gè)簡(jiǎn)單的裝飾器
def wsm(f):
    def wzj(*args,**kwargs):
        s = time.time()
        res = f(*args,**kwargs)
        e = time.time()
        h = (e -s)
        print(f'當(dāng)前耗時(shí){h}秒')
        return res
    return wzj

@wsm
def func():
    time.sleep(2)
    list1 = [1,2,2,3]
    list2 =  list(set(list1))

    print(list2)
func()

Docker

Dockerfile中ENTRYPOINT和CMD的區(qū)別:
  • CMD命令設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令及其參數(shù)翰守,但CMD設(shè)置的命令能夠被docker run命令后面的命令行參數(shù)替換
  • ENTRYPOINT配置容器啟動(dòng)時(shí)的執(zhí)行命令(不會(huì)被忽略孵奶,一定會(huì)被執(zhí)行,即使運(yùn)行 docker run時(shí)指定了其他命令)

總結(jié):CMD和ENTRYPOINT可指定容器啟動(dòng)運(yùn)行的參數(shù),但是真實(shí)啟動(dòng)時(shí)如果RUN后面修改了啟動(dòng)參數(shù),那以RUN修改的參數(shù)優(yōu)先,而ENTRYPOINT比較倔,就不改

ADD和COPY的區(qū)別:
  • ADD支持從遠(yuǎn)程URL獲取資源
  • COPY只能從本地獲取
docker的幾種網(wǎng)絡(luò)模型
  • host模式:net=host 容器和宿主機(jī)共享network namespace
  • container模式:net=container:NAME_or_ID 容器之間共享Network namespace,k8s中的pod就是多個(gè)容器共享一個(gè)Network namespace
  • none模式:net=none 容器有獨(dú)立的Network namespace,但并沒有對(duì)其進(jìn)行熱河網(wǎng)絡(luò)設(shè)置,如分配veth pair和網(wǎng)橋連接配置ip等
  • bridge模式:net=bridge 默認(rèn)為該模式

K8S

k8s的工作原理

用戶創(chuàng)建pod請(qǐng)求信息>>存到etcd中>>scheduler查詢分配未使用的node創(chuàng)建pod>>kubelet接收創(chuàng)建指令,實(shí)時(shí)匯報(bào)pod信息>>contrller-manager通過apiserver監(jiān)控集群狀態(tài),確保集群處于預(yù)期工作中
用戶通過kubectl或者APIserver的rest api接口提交需要運(yùn)行的docker容器(創(chuàng)建pod請(qǐng)求)
api server將創(chuàng)建pod相關(guān)請(qǐng)求數(shù)據(jù)存儲(chǔ)至etcd中
scheduler監(jiān)聽API server,查詢還未分配的Node的pod,然后根據(jù)調(diào)度策略為這些pod分配節(jié)點(diǎn)
kubelet負(fù)責(zé)在所在的node節(jié)點(diǎn)上接收主節(jié)點(diǎn)發(fā)來的指令,管理pod及pod中的容器,并定時(shí)向master主節(jié)點(diǎn)匯報(bào)節(jié)點(diǎn)資源的使用情況及容器的情況
controller-manager則通過api-server監(jiān)控整個(gè)集群的狀態(tài),并確保集群處于預(yù)期的工作

k8s中的常用組件
  • etcd:提供數(shù)據(jù)庫服務(wù)保存了整個(gè)集群的狀態(tài)
  • kube-apiserver:提供了資源操作的唯一入口蜡峰,并提供認(rèn)證了袁、授權(quán)朗恳、訪問控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制
  • kube-controller-manager:負(fù)責(zé)維護(hù)集群的狀態(tài)早像,比如故障檢測(cè)僻肖、自動(dòng)擴(kuò)展、滾動(dòng)更新等
  • cloud-controller-manager:是與底層云計(jì)算服務(wù)商交互的控制器
  • kub-scheduler:負(fù)責(zé)資源的調(diào)度卢鹦,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上
  • kubelet:負(fù)責(zé)維護(hù)容器的生命周期臀脏,同時(shí)也負(fù)責(zé)Volume和網(wǎng)絡(luò)的管理
  • kube-proxy:負(fù)責(zé)為Service提供內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,并維護(hù)網(wǎng)絡(luò)規(guī)則
  • container-runtime:是負(fù)責(zé)管理運(yùn)行容器的軟件冀自,比如docker
k8s的網(wǎng)絡(luò)模式

k8s 網(wǎng)絡(luò)模型要符合四個(gè)基礎(chǔ)原則揉稚、三個(gè)網(wǎng)絡(luò)要求原則、一個(gè)架構(gòu)原則熬粗、一個(gè) IP 原則搀玖。
每個(gè) Pod 都擁有一個(gè)獨(dú)立的 IP 地址,而且假定所有 Pod 都在一個(gè)可以直接連通的驻呐、扁平的網(wǎng)絡(luò)空間中灌诅,不管是否運(yùn)行在同一 Node 上都可以通過 Pod 的 IP 來訪問。
k8s 中的 Pod 的 IP 是最小粒度 IP含末。同一個(gè) Pod 內(nèi)所有的容器共享一個(gè)網(wǎng)絡(luò)堆棧猜拾,該模型稱為 IP-per-Pod 模型。

  • Pod 由 docker0 實(shí)際分配的 IP佣盒。
  • Pod 內(nèi)部看到的 IP 地址和端口與外部保持一致挎袜。
  • 同一個(gè) Pod 內(nèi)的不同容器共享網(wǎng)絡(luò),可以通過localhost來訪問對(duì)方的端口肥惭,類似同一個(gè)虛擬機(jī)內(nèi)不同的進(jìn)程盯仪。
    IP-per-Pod 模型從端口分配、域名解析蜜葱、服務(wù)發(fā)現(xiàn)全景、負(fù)載均衡、應(yīng)用配置等角度看牵囤,Pod 可以看做是一臺(tái)獨(dú)立的虛擬機(jī)或物理機(jī)爸黄。
  • 所有容器都可以不用 NAT 的方式同別的容器通信。
  • 所有節(jié)點(diǎn)都可以在不同 NAT 方式下同所有容器通信奔浅,反之亦然。
  • 容器的地址和別人看到的地址是同一個(gè)地址诗良。
pod有幾種狀態(tài)
  • Pending:Pod創(chuàng)建已經(jīng)提交給k8s汹桦,但是因?yàn)槟撤N原因不能順利創(chuàng)建,例如下載鏡像慢鉴裹,調(diào)度不成功等
  • Running:Pod已經(jīng)綁定到一個(gè)節(jié)點(diǎn)上了舞骆,并且已經(jīng)創(chuàng)建了所有容器钥弯。只是有一個(gè)容器正在運(yùn)行,或者在啟動(dòng)中督禽。
  • Secceeded:Pod中的所有容器都已經(jīng)成功終止脆霎,不能重新啟動(dòng)。
  • Failed: Pod中所有的容器均已經(jīng)終止狈惫,且至少有一個(gè)容器已經(jīng)在故障中終止睛蛛。
  • Unkown:由于某中原因apiserver無法獲取到Pod的狀態(tài)。通常是由于Master與pod所在的主機(jī)失去連接了
pod服務(wù)啟動(dòng)失敗有哪些原因及排查:
# 獲取信息
kubectl describe pod 資源id
# 查看日志
kubectl logs 資源id
# 進(jìn)入資源中
kubectl exec -it 資源id bash

常見故障

  • Pod狀態(tài) 一直處于Pending

    Pending狀態(tài)意味著Pod的YAML文件已經(jīng)提交給Kubernetes胧谈,API對(duì)象已經(jīng)被創(chuàng)建并保存在Etcd當(dāng)中忆肾。但是,這個(gè)Pod里有些容器因?yàn)槟撤N原因而不能被順利創(chuàng)建菱肖。比如客冈,調(diào)度不成功(可以通過kubectl describe pod 命令查看到當(dāng)前Pod的事件,進(jìn)而判斷為什么沒有調(diào)度)稳强〕≈伲可能原因:資源不足(集群內(nèi)所有的Node都不滿足該P(yáng)od請(qǐng)求的CPU、內(nèi)存退疫、GPU等資源)渠缕;HostPort已被占用(通常推薦使用Service對(duì)外開放服務(wù)端口

  • Pod狀態(tài) 一直處于Waiting

    首先還是通過kubectl describe pod 命令查看當(dāng)前Pod的事件√憧В可能的原因有:

    1褐健、鏡像拉取失敗,比如鏡像地址配置錯(cuò)誤澜汤、拉取不了國(guó)外鏡像源(gcr.io)蚜迅、私有鏡像密鑰配置錯(cuò)誤、鏡像太大導(dǎo)致拉取超時(shí)(可以適當(dāng)調(diào)整kubelet的-image-pull-progress-deadline和-runtime-request-timeout選項(xiàng))等俊抵。

    2谁不、CNI網(wǎng)絡(luò)錯(cuò)誤,一般需要檢查CNI網(wǎng)絡(luò)插件的配置徽诲,比如:無法配置Pod網(wǎng)絡(luò)刹帕、無法分配IP地址。

    3谎替、容器無法啟動(dòng)偷溺,需要檢查是否打包了正確的鏡像或者是否配置了正確的容器參數(shù)

    4、Failed create pod sandbox钱贯,查看kubelet日志挫掏,原因可能是磁盤壞道(input/output error)

  • Pod狀態(tài) 一直處于ContainerCreating

    處理方法同Waiting

  • Pod狀態(tài) 處于ImagePullBackOff

    通常是鏡像名稱配置錯(cuò)誤或者私有鏡像的密鑰配置錯(cuò)誤導(dǎo)致。這種情況可以使用docker pull來驗(yàn)證鏡像是否可以正常拉取

  • Pod狀態(tài) 處于CrashLoopBackOff

    此狀態(tài)說明容器曾經(jīng)啟動(dòng)了秩命,但又異常退出尉共。這時(shí)可以先查看一下容器的日志

  • Pod狀態(tài) 處于Error

    通常處于Error狀態(tài)說明Pod啟動(dòng)過程中發(fā)生了錯(cuò)誤褒傅。常見的原因:依賴的ConfigMap、Secret或PV等不存在袄友;請(qǐng)求的資源超過了管理員設(shè)置的限制殿托,比如超過了LimitRange等;違反集群的安全策略剧蚣,比如違反了PodSecurityPolicy等支竹;容器無法操作集群內(nèi)的資源,比如開啟RDAC后券敌,需要為ServiceAccount配置角色綁定

  • Pod狀態(tài) 一直處于Terminating

    從v1.5開始唾戚,Kubernetes不會(huì)因?yàn)镹ode失聯(lián)而刪除其上正在運(yùn)行的Pod,而是將其標(biāo)記為Terminating 或 Unknown 狀態(tài)待诅。想要?jiǎng)h除這些狀態(tài)的Pod有三種方法:

    1叹坦、從集群中刪除Node。使用公有云時(shí)卑雁,kube-controller-manager會(huì)在VM刪除后自動(dòng)刪除對(duì)應(yīng)的Node募书。而在物理機(jī)部署的集群中,需要管理員手動(dòng)刪除Node(kubectl delete node)测蹲。

    2莹捡、Node恢復(fù)正常。kubelet會(huì)重新跟kube-apiserver通信確認(rèn)這些Pod的期待狀態(tài)扣甲,進(jìn)而再?zèng)Q定刪除或者繼續(xù)運(yùn)行這些Pod篮赢。用戶強(qiáng)制刪除,用戶可以執(zhí)行(kubectl delete pods pod-name --grace-period=0 --force)強(qiáng)制刪除Pod琉挖。除非明確知道Pod的確處于停止?fàn)顟B(tài)(比如Node所在VM或物理機(jī)已經(jīng)關(guān)機(jī))启泣,否則不建議使用該方法。特別是StatefulSet 管理的Pod示辈,強(qiáng)制刪除容易導(dǎo)致腦裂或數(shù)據(jù)丟失等問題寥茫。

    3、Pod行為異常矾麻,這里所說的行為異常是指Pod沒有按預(yù)期的行為執(zhí)行纱耻,比如沒有運(yùn)行podSpec 里面設(shè)置的命令行參數(shù)。這一般是podSpec yaml文件內(nèi)容有誤险耀,可以嘗試使用 --validate 參數(shù)重建容器弄喘,比如(kubectl delete pod mypod 和 kubectl create --validate -f mypod.yaml);也可以查看創(chuàng)建后的podSpec是否是對(duì)的甩牺,比如(kubectl get pod mypod -o yaml)蘑志;修改靜態(tài)Pod的Manifest后未自動(dòng)重建匈棘,kubelet 使用inotify 機(jī)制檢測(cè) /etc/kubernetes/manifests 目錄(可通過 kubelet 的 -pod-manifest-path 選項(xiàng)指定)中靜態(tài)Pod的變化九秀,并在文件發(fā)生變化后重新創(chuàng)建相應(yīng)的 Pod绞呈。但有時(shí)也會(huì)發(fā)現(xiàn)修改靜態(tài)Pod的 Manifest后未自動(dòng)創(chuàng)建新 Pod的情景呀打,此時(shí)已過簡(jiǎn)單的修復(fù)方法是重啟 Kubelet

  • Pod狀態(tài) 處于Unknown

    這個(gè)異常狀態(tài)意味著Pod的狀態(tài)不能持續(xù)地被 kubelet匯報(bào)給 kube-apiserver擎颖,這很有可能是主從節(jié)點(diǎn)(Master 和 Kubelet)間的通信出現(xiàn)了問題

VUE

vue中組件間怎么傳遞數(shù)據(jù):
  • 父組件向子組件傳遞數(shù)據(jù)泼各,使用props屬性谱俭;子組件向父組件中傳遞數(shù)據(jù)笙纤,在子組件中使用$emit派發(fā)事件查描,父組件中使用v-on
    監(jiān)聽事件突委;缺點(diǎn):組件嵌套層次多的話,傳遞數(shù)據(jù)比較麻煩冬三。

  • 祖先組件通過依賴注入(inject / provide)的方式匀油,向其所有子孫后代傳遞數(shù)據(jù);缺點(diǎn):無法監(jiān)聽數(shù)據(jù)修改的來源勾笆,不支持響應(yīng)式敌蚜。

  • 通過屬性root /parent / $children /
    ref,訪問根組件窝爪、父級(jí)組件弛车、子組件中的數(shù)據(jù);缺點(diǎn):要求組件之間要有傳遞性蒲每。

  • 通過事件總線(event
    bus)的方式纷跛,可以實(shí)現(xiàn)任意兩個(gè)組件間進(jìn)行數(shù)據(jù)傳遞;缺點(diǎn):不支持響應(yīng)式邀杏,這個(gè)概念是vue1.0版本中的贫奠,現(xiàn)在已經(jīng)廢棄。

  • 通過 VueJs 的狀態(tài)管理模式 Vuex望蜡,實(shí)現(xiàn)多個(gè)組件進(jìn)行數(shù)據(jù)共享唤崭,推薦使用這種方式進(jìn)行項(xiàng)目中各組件間的數(shù)據(jù)傳遞。
    下面詳細(xì)介紹數(shù)據(jù)傳遞的幾種方式

vue中data內(nèi)要return為什么:
  • 組件是一個(gè)可復(fù)用的實(shí)例泣特,當(dāng)你引用一個(gè)組件的時(shí)候浩姥,組件里的data是一個(gè)對(duì)象,所有用到這個(gè)組件的都引用的同一個(gè)對(duì)象状您,就會(huì)造成數(shù)據(jù)污染
  • 將data封裝成函數(shù)后勒叠,在引用組件的時(shí)候,我們只是調(diào)用了data函數(shù)生成的數(shù)據(jù)副本膏孟,是一個(gè)新對(duì)象眯分,避免了數(shù)據(jù)污染
vue組件的生命周期:

組件的生命周期就是一個(gè)組件創(chuàng)建、數(shù)據(jù)初始化柒桑、掛載弊决、更新、銷毀的整個(gè)過程,其中具體方法:

beforeCreate
// 在實(shí)例初始化之后,數(shù)據(jù)觀測(cè)和event/watcher時(shí)間配置之前被調(diào)用
created
// 實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用飘诗。在這一步与倡,實(shí)例已經(jīng)完成以下的配置:數(shù)據(jù)觀測(cè),屬性和方法的運(yùn)算昆稿,watch/event事件回調(diào)纺座。然而,掛載階段還沒開始溉潭,$el屬性目前不可見
beforeMount
// 在掛載開始之前被調(diào)用:相關(guān)的render函數(shù)首次被調(diào)用净响。
// 該鉤子在服務(wù)器端渲染期間不被調(diào)用
mounted (
// el被新創(chuàng)建的vm.$el替換,并掛在到實(shí)例上去之后調(diào)用該鉤子函數(shù)喳瓣。如果root實(shí)例掛載了一個(gè)文檔內(nèi)元素馋贤,當(dāng)mounted被調(diào)用時(shí)vm.$el也在文檔內(nèi)。
// 該鉤子在服務(wù)端渲染期間不被調(diào)用畏陕。
    beforeUpdate
   // 數(shù)據(jù)更新時(shí)調(diào)用配乓,發(fā)生在虛擬DOM重新渲染和打補(bǔ)丁之前。
  // 你可以在這個(gè)鉤子中進(jìn)一步第更改狀態(tài)惠毁,這不會(huì)觸發(fā)附加的重渲染過程扰付。
  // 該鉤子在服務(wù)端渲染期間不被調(diào)用。
    updated
    // 由于數(shù)據(jù)更改導(dǎo)致的虛擬DOM重新渲染和打補(bǔ)丁仁讨,在這之后會(huì)調(diào)用該鉤子羽莺。
   // 當(dāng)這個(gè)鉤子被調(diào)用時(shí),組件DOM已經(jīng)更新洞豁,所以你現(xiàn)在可以執(zhí)行依賴于DOM的操作盐固。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài)丈挟,因?yàn)檫@可能會(huì)導(dǎo)致更新無限循環(huán)刁卜。
   //該鉤子在服務(wù)端渲染期間不被調(diào)用
)

beforeDestroy
// 實(shí)例銷毀之間調(diào)用。在這一步曙咽,實(shí)例仍然完全可用蛔趴。
// 該鉤子在服務(wù)端渲染期間不被調(diào)用。
destroyed
// Vue實(shí)例銷毀后調(diào)用例朱。調(diào)用后孝情,Vue實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽器會(huì)被移除洒嗤,所有的子實(shí)例也會(huì)被銷毀箫荡。
// 該鉤子在服務(wù)端渲染不會(huì)被調(diào)用

DevOps

jenkins的流程,怎么構(gòu)建的
  1. 開發(fā)者開發(fā)代碼
  2. 提交至git倉庫
  3. jenkins從倉庫拉取代碼
  4. jenkins通過maven(ant,gradle等)構(gòu)建項(xiàng)目推到docker倉庫
  5. 生成一個(gè)在tomcat運(yùn)行的項(xiàng)目的docker容器
  6. 測(cè)試人員測(cè)試
jenkins的webhook怎么配置

shell

使用腳本取公網(wǎng)ip和內(nèi)網(wǎng)ip
  • 使用curl 獲取本機(jī)公網(wǎng)ip

    curl cip.cc
    curl v4.ident.me
    curl myip.ipip.net
    
  • 使用正則匹配

    ip a|grep 'inet'|grep -v 'inet6'|awk '{print $2}'|cut -d '/' -f 1
    
  • 使用路由獲取

    ip route show
    
  • 使用hostname獲取

    題目有限制要求取所有內(nèi)網(wǎng)ip,可以在取出所有ip后,使用grep過濾出內(nèi)網(wǎng)IP

    hostname -I
    

還有很多其他方法....

strace命令可以獲取一個(gè)程序調(diào)用哪些函數(shù)的整個(gè)過程,貌似是這個(gè)命令

使用腳本寫出多塊4T盤,格式化后分區(qū)掛載并添加自啟動(dòng)
for V in $(ls /dev/sd[b-z])
do
  echo -e "n\np\n\n\n\nw\n" |parted $V
  mkfs.xfs -i size=512 ${V}1 &>/dev/null
  sleep 1
  M=$(echo "$V" |awk -F "/" '{print $3}')
  mkdir -p /data/${M}1 &>/dev/null
  echo -e "${V}1 /data/${M}1 xfs defaults 0 0\n" >>/etc/fstab
  mount -a &>/dev/null
done
使用腳本監(jiān)測(cè)一個(gè)程序每15秒的狀態(tài),如果15秒中未監(jiān)測(cè)到進(jìn)程,則視為程序退出了(還有其他需求,大致記得這么多)

一個(gè)簡(jiǎn)單思路,未做驗(yàn)證,還有語法可能不通

c = 1
while true
do
# 獲取此程序pid
A = ps -ef|grep '程序'
    if '$A' == '';then
        sleep 3
        c += 1
        if [ $c -eq 5 ];then
            break
        fi
    else
        continue
    fi
done

其他

Linux開機(jī)啟動(dòng)順序

我覺得不準(zhǔn)確,再查一查

1渔隶、加載BIOS(包含了CPU的相關(guān)信息羔挡、設(shè)備啟動(dòng)順序信息、硬盤信息、內(nèi)存信息绞灼、時(shí)鐘信息利术、PnP特性等)
2、讀取MBR(硬盤上第0磁道第一個(gè)扇區(qū))
3低矮、Boot Loader(初始化硬件設(shè)備氯哮、建立內(nèi)存空間的映射圖)
4、加載內(nèi)核
5商佛、設(shè)定運(yùn)行等級(jí)(init0-init6)
6、執(zhí)行rc.sysinit
7姆打、啟動(dòng)內(nèi)核模塊
8良姆、執(zhí)行不同運(yùn)行級(jí)別的腳本
9、執(zhí)行rc.local
10幔戏、執(zhí)行/bin/login 進(jìn)入登陸狀態(tài)

Redis持久化
  • 默認(rèn)為RDB(redis database),定時(shí)快照至硬盤,對(duì)應(yīng)產(chǎn)生的數(shù)據(jù)文件為dump.rdb
  • AOF 持久化(即Append Only File持久化)玛追,則是將Redis執(zhí)行的每次寫命令記錄到單獨(dú)的日志文件中,當(dāng)重啟Redis會(huì)重新將持久化的日志中文件恢復(fù)數(shù)據(jù)
Zabbix自動(dòng)發(fā)現(xiàn)及分布式
  • 自動(dòng)發(fā)現(xiàn)(server端輪詢網(wǎng)段掃描發(fā)現(xiàn)agent)

  • 自動(dòng)發(fā)現(xiàn):server-->輪詢掃描-->ip地址段

  • 自動(dòng)發(fā)現(xiàn):ip闲延、ftp痊剖、ssh、web垒玲、pop3陆馁、imap、tcp

    • ip范文自動(dòng)發(fā)現(xiàn)(兩個(gè)階段:發(fā)現(xiàn)-->動(dòng)作)
      • zabbix-web自動(dòng)發(fā)現(xiàn)定義自動(dòng)監(jiān)控的網(wǎng)段中的zabixx-agent(配置文件中server已經(jīng)定義zabbix-server地址)
  • 自動(dòng)發(fā)現(xiàn)所執(zhí)行的動(dòng)作

    • 發(fā)送消息
    • 添加/刪除主機(jī)
    • 啟用/禁用主機(jī)
    • 添加主機(jī)到組
    • 從組中刪除主機(jī)
    • 將主機(jī)鏈接到模板/從模板中取消鏈接
    • 執(zhí)行遠(yuǎn)程腳本命令
  • 主動(dòng)注冊(cè)(agent端主動(dòng)告訴server端請(qǐng)求加入)

  • zabbix-server必須開啟自動(dòng)注冊(cè)-->操作-->(通知|加入監(jiān)控|套用模板)

軟連接與硬鏈接的區(qū)別:
  • 軟連接原文件與連接文件擁有不同的inode號(hào),是倆個(gè)不同的文件,而硬鏈接是和鏈接文件共一個(gè)inode,是同一個(gè)文件
  • 軟鏈接支持跨文件系統(tǒng)建立,硬鏈接不支持
  • 軟鏈接的鏈接數(shù)目不會(huì)增加,文件大小是不一樣的,硬鏈接顯示的大小是和源文件一樣的
僵尸進(jìn)程和孤兒進(jìn)程的區(qū)別:
  • 孤兒進(jìn)程:一個(gè)父進(jìn)程退出合愈,而它的一個(gè)或多個(gè)子進(jìn)程還在運(yùn)行叮贩,那么那些子進(jìn)程將成為孤兒進(jìn)程。孤兒進(jìn)程將被init進(jìn)程(進(jìn)程號(hào)為1)所收養(yǎng)佛析,并由init進(jìn)程對(duì)它們完成狀態(tài)收集工作益老。
  • 僵尸進(jìn)程:一個(gè)進(jìn)程使用fork創(chuàng)建子進(jìn)程,如果子進(jìn)程退出寸莫,而父進(jìn)程并沒有調(diào)用wait或waitpid獲取子進(jìn)程的狀態(tài)信息捺萌,那么子進(jìn)程的進(jìn)程描述符仍然保存在系統(tǒng)中。這種進(jìn)程稱之為僵死進(jìn)程膘茎。
  • 僵尸進(jìn)程危害場(chǎng)景:
    例如有個(gè)進(jìn)程桃纯,它定期的產(chǎn) 生一個(gè)子進(jìn)程,這個(gè)子進(jìn)程需要做的事情很少披坏,做完它該做的事情之后就退出了慈参,因此這個(gè)子進(jìn)程的生命周期很短,但是刮萌,父進(jìn)程只管生成新的子進(jìn)程驮配,至于子進(jìn)程 退出之后的事情,則一概不聞不問,這樣壮锻,系統(tǒng)運(yùn)行上一段時(shí)間之后琐旁,系統(tǒng)中就會(huì)存在很多的僵死進(jìn)程,倘若用ps命令查看的話猜绣,就會(huì)看到很多狀態(tài)為Z的進(jìn)程灰殴。 嚴(yán)格地來說,僵死進(jìn)程并不是問題的根源掰邢,罪魁禍?zhǔn)资钱a(chǎn)生出大量僵死進(jìn)程的那個(gè)父進(jìn)程牺陶。因此,當(dāng)我們尋求如何消滅系統(tǒng)中大量的僵死進(jìn)程時(shí)辣之,答案就是把產(chǎn)生大 量僵死進(jìn)程的那個(gè)元兇槍斃掉(也就是通過kill發(fā)送SIGTERM或者SIGKILL信號(hào)啦)掰伸。槍斃了元兇進(jìn)程之后,它產(chǎn)生的僵死進(jìn)程就變成了孤兒進(jìn) 程怀估,這些孤兒進(jìn)程會(huì)被init進(jìn)程接管狮鸭,init進(jìn)程會(huì)wait()這些孤兒進(jìn)程,釋放它們占用的系統(tǒng)進(jìn)程表中的資源多搀,這樣歧蕉,這些已經(jīng)僵死的孤兒進(jìn)程 就能瞑目而去了
怎么查看僵尸進(jìn)程:
  • 使用Top命令查找,當(dāng)zombie前的數(shù)量不為0時(shí)康铭,即系統(tǒng)內(nèi)存在相應(yīng)數(shù)量的僵尸進(jìn)程
  • 使用命令ps -A -ostat,ppid,pid,cmd |grep -e '^[Zz]'定位僵尸進(jìn)程以及該僵尸進(jìn)程的父進(jìn)程
  • 使用Kill -HUP僵尸進(jìn)程ID來殺死僵尸進(jìn)程惯退,往往此種情況無法殺死僵尸進(jìn)程,此時(shí)就需要?dú)⑺澜┦M(jìn)程的父進(jìn)程
    kill -HUP 僵尸進(jìn)程父ID
Nginx中l(wèi)ocation的匹配規(guī)則:

「=」 修飾符:要求路徑完全匹配
「~」修飾符:區(qū)分大小寫的正則匹配
「~*」不區(qū)分大小寫的正則匹配
「^~」修飾符:前綴匹配 如果該 location 是最佳的匹配从藤,那么對(duì)于匹配這個(gè) location 的字符串蒸痹, 該修飾符不再進(jìn)行正則表達(dá)式檢測(cè)。注意呛哟,這不是一個(gè)正則表達(dá)式匹配叠荠,它的目的是優(yōu)先于正則表達(dá)式的匹配

  • 精確匹配 =
  • 前綴匹配 ^~(立刻停止后續(xù)的正則搜索)
  • 按文件中順序的正則匹配 ~~*
  • 匹配不帶任何修飾的前綴匹配。
Nginx日志中出現(xiàn)499報(bào)錯(cuò)是怎么回事

后端處理請(qǐng)求時(shí)間過長(zhǎng),客戶端等的不耐煩了,提前關(guān)閉了http連接.常見于后臺(tái)接口處理時(shí)間比較長(zhǎng)扫责,而前端請(qǐng)求又自帶有超時(shí)時(shí)間
排查方法:

  • 1榛鼎、cpu(top)與內(nèi)存(free -h)的使用
  • 2、后臺(tái)程序
  • 3鳖孤、 MySQL慢查詢
Apche與Nginx的區(qū)別

簡(jiǎn)單來說apache是同步多進(jìn)程處理業(yè)務(wù),更穩(wěn)定,nginx異步處理業(yè)務(wù),面對(duì)高并發(fā)更快性能更好.
nginx適合靜態(tài)服務(wù)

  • apache 的 rewrite 比 nginx 強(qiáng)大者娱,在 rewrite 頻繁的情況下,用 apache
  • apache 發(fā)展到現(xiàn)在苏揣,模塊超多黄鳍,基本想到的都可以找到
  • apache 更為成熟,少 bug 平匈,nginx 的 bug 相對(duì)較多
  • apache 超穩(wěn)定
  • apache 對(duì) PHP 支持比較簡(jiǎn)單框沟,nginx 需要配合其他后端用
  • apache 在處理動(dòng)態(tài)請(qǐng)求有優(yōu)勢(shì)藏古,nginx 在這方面是雞肋,一般動(dòng)態(tài)請(qǐng)求要 apache 去做忍燥,nginx 適合靜態(tài)和反向拧晕。
  • apache 仍然是目前的主流,擁有豐富的特性梅垄,成熟的技術(shù)和開發(fā)社區(qū)
TCP連接的幾種狀態(tài):
LISTEN:偵聽來自遠(yuǎn)方的TCP端口的連接請(qǐng)求
SYN-SENT:再發(fā)送連接請(qǐng)求后等待匹配的連接請(qǐng)求(客戶端)
SYN-RECEIVED:再收到和發(fā)送一個(gè)連接請(qǐng)求后等待對(duì)方對(duì)連接請(qǐng)求的確認(rèn)(服務(wù)器)
ESTABLISHED:代表一個(gè)打開的連接
FIN-WAIT-1:等待遠(yuǎn)程TCP連接中斷請(qǐng)求厂捞,或先前的連接中斷請(qǐng)求的確認(rèn)
FIN-WAIT-2:從遠(yuǎn)程TCP等待連接中斷請(qǐng)求
CLOSE-WAIT:等待從本地用戶發(fā)來的連接中斷請(qǐng)求
CLOSING:等待遠(yuǎn)程TCP對(duì)連接中斷的確認(rèn)
LAST-ACK:等待原來的發(fā)向遠(yuǎn)程TCP的連接中斷請(qǐng)求的確認(rèn)
TIME-WAIT:等待足夠的時(shí)間以確保遠(yuǎn)程TCP接收到連接中斷請(qǐng)求的確認(rèn)
CLOSED:沒有任何連接狀態(tài)
常見狀態(tài)碼:
  • 400 客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法理解
  • 401 請(qǐng)求要求用戶的身份認(rèn)證
  • 403 服務(wù)器理解請(qǐng)求客戶端的請(qǐng)求队丝,但是拒絕執(zhí)行此請(qǐng)求
  • 404 服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁)靡馁。通過此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無法找到"的個(gè)性頁面
  • 405 客戶端請(qǐng)求中的方法被禁止
  • 500 服務(wù)器內(nèi)部錯(cuò)誤机久,無法完成請(qǐng)求
  • 501 服務(wù)器不支持請(qǐng)求的功能臭墨,無法完成請(qǐng)求
  • 502是報(bào)錯(cuò)類型代碼 bad gate way 錯(cuò)誤的網(wǎng)關(guān)。產(chǎn)生錯(cuò)誤的原因是連接超時(shí)吞加,我們向服務(wù)器發(fā)送請(qǐng)求,由于服務(wù)器當(dāng)前 鏈接 太多尽狠,導(dǎo)致服務(wù)器方面無法給于正常的響應(yīng)衔憨,產(chǎn)生此類報(bào)錯(cuò)
  • 504錯(cuò)誤代表網(wǎng)關(guān)超時(shí) (Gateway timeout),是指 服務(wù)器 作為網(wǎng)關(guān)或代理袄膏,但是沒有及時(shí)從上游服務(wù)器收到請(qǐng)求践图。. 服務(wù)器(不一定是 Web 服務(wù)器)正在作為一個(gè)網(wǎng)關(guān)或代理來完成客戶(如您的 瀏覽器 或我們的 CheckUpDown 機(jī)器人)訪問所需網(wǎng)址的請(qǐng)求。. 為了完成您的 HTTP 請(qǐng)求沉馆, 該服務(wù)器訪問一個(gè)上游服務(wù)器码党, 但沒得到及時(shí)的響應(yīng)。. 這通常意味著上游服務(wù)器已關(guān)閉(不響應(yīng) 網(wǎng)關(guān) / 代理)斥黑,而不是上游服務(wù)器和網(wǎng)關(guān)/代理在交換數(shù)據(jù)的協(xié)議上不一致揖盘。. 正常情況下,是由于被請(qǐng)求服務(wù)器發(fā)送超時(shí)引起锌奴。
Ansible的使用:
ansible testservers -m copy -a 'src=/root/install.log dest=/tmp/install.log owner=testuser group=testgroup'
# 先進(jìn)入somedir/ 兽狭,再在somedir/目錄下讓所有節(jié)點(diǎn)運(yùn)行somescript.sh并把log輸出到somelog.txt

ansible -i hosts all -m shell -a "somescript.sh >> somelog.txt" chdir=somedir/
LVS模式的幾種及使用場(chǎng)景:

LVS工作模式分為NAT模式、TUN模式鹿蜀、以及DR模式

  • 常用DR模式:
    直接路由模式,數(shù)據(jù)環(huán)形傳輸,用戶請(qǐng)求>>LVS>>分配請(qǐng)求給節(jié)點(diǎn)>>節(jié)點(diǎn)返回報(bào)文給用戶
    DR模式修改目標(biāo)MAC地址來完成負(fù)載分發(fā)實(shí)現(xiàn)
    場(chǎng)景:支持大并發(fā),但不能修改端口,要求調(diào)度器與后端服務(wù)器必須在同一個(gè)局域網(wǎng)內(nèi),節(jié)點(diǎn)要綁定VIP,抑制ARP
  • TUN模式:
    與DR相似,也是環(huán)形傳輸數(shù)據(jù),但是是以添加數(shù)據(jù)包頭的實(shí)現(xiàn)完成數(shù)據(jù)傳輸分發(fā)到節(jié)點(diǎn),對(duì)請(qǐng)求報(bào)文重新封裝
    場(chǎng)景:請(qǐng)求報(bào)文不能太大
  • NAT模式:
    數(shù)據(jù)為往返式傳輸,LVS在中間完成網(wǎng)絡(luò)地址轉(zhuǎn)換的工作
    用戶請(qǐng)求>>LVS>>節(jié)點(diǎn)>>LVS>>用戶
災(zāi)備是如何做的(其實(shí)就是數(shù)據(jù)庫備份)
列出服務(wù)器備份恢復(fù)策略
  • 全網(wǎng)備份服務(wù)器
  • 數(shù)據(jù)庫完全備份
  • 數(shù)據(jù)庫增量備份
  • 差異備份
  • 冷數(shù)據(jù)歸檔
  • 定時(shí)任務(wù)備份站點(diǎn)目錄箕慧,配置文件等。 恢復(fù)策略
  • 數(shù)據(jù)庫增量恢復(fù)茴恰,全量恢復(fù)
  • 站點(diǎn)目錄颠焦,配置文件等故障后隨時(shí)調(diào)取備份來備份
    mysql 主從備份,每日做一次增量備份
    每周一次完整備份異地備份
  • 增量備份
    rsync是Linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具,使用快速增量備份工具Remote Sync可以遠(yuǎn)程同步往枣,支持本地復(fù)制伐庭,或者與其他SSH粉渠、rsync主機(jī)同步
Rsync 三種模式
  • 本地模式,類似于cp
  • 隧道模式:類似scp
  • 守護(hù)進(jìn)程模式:以守護(hù)進(jìn)程socket 的方式傳輸數(shù)據(jù)
    在使用 rsync首次全量同步后,結(jié)合 inotify對(duì)源目錄進(jìn)行實(shí)時(shí)監(jiān)控似忧,只要有文件變動(dòng)或新文件產(chǎn)生渣叛,就會(huì)立刻同步到目標(biāo)目錄下,非常高效實(shí)用盯捌。
linux系統(tǒng)做過內(nèi)核優(yōu)化嗎?

沒有,但是知道是修改sysctl.conf文件其中存在比較多的參數(shù)可供優(yōu)化,但是做過nginx等中間件的優(yōu)化....

最大并發(fā)連接數(shù)
允許系統(tǒng)打開的端口范圍
發(fā)送緩存區(qū)的最大值
發(fā)送緩存區(qū)的默認(rèn)值
socket保持FN-WAIT-2狀態(tài)的最大時(shí)間 
.......
并發(fā)翻倍,系統(tǒng)正在擴(kuò)容中,但是擴(kuò)容需要7分鐘才可以完成,怎么用現(xiàn)有服務(wù)器抗住7分鐘內(nèi)的翻倍并發(fā)

我不知道
面試官答:是在代碼中做了埋點(diǎn),當(dāng)并發(fā)大于某一閾值,會(huì)觸發(fā)開關(guān),此時(shí)業(yè)務(wù)上存在的部分功能不可用,比如微博上傳視頻此時(shí)不做轉(zhuǎn)碼等等,以犧牲部分功能延緩到擴(kuò)容完成后(簡(jiǎn)單的講就是業(yè)務(wù)降級(jí))

系統(tǒng)出現(xiàn)504需要怎么排查

客戶訪問時(shí),代理不能及時(shí)地從遠(yuǎn)程服務(wù)器獲得應(yīng)答給客戶,此時(shí)要檢查后端數(shù)據(jù)服務(wù)是否出現(xiàn)問題,為什么未及時(shí)返還數(shù)據(jù)

寫一下你們現(xiàn)有的架構(gòu)

自己寫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淳衙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子饺著,更是在濱河造成了極大的恐慌箫攀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幼衰,死亡現(xiàn)場(chǎng)離奇詭異靴跛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渡嚣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門梢睛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人识椰,你說我怎么就攤上這事绝葡。” “怎么了腹鹉?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵藏畅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我功咒,道長(zhǎng)愉阎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任力奋,我火速辦了婚禮榜旦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘景殷。我一直安慰自己章办,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布滨彻。 她就那樣靜靜地躺著藕届,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亭饵。 梳的紋絲不亂的頭發(fā)上休偶,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音辜羊,去河邊找鬼踏兜。 笑死词顾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碱妆。 我是一名探鬼主播肉盹,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼疹尾!你這毒婦竟也來了上忍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤纳本,失蹤者是張志新(化名)和其女友劉穎窍蓝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體繁成,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吓笙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巾腕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片面睛。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尊搬,靈堂內(nèi)的尸體忽然破棺而出叁鉴,到底是詐尸還是另有隱情,我是刑警寧澤毁嗦,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布亲茅,位于F島的核電站回铛,受9級(jí)特大地震影響狗准,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茵肃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一腔长、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧验残,春花似錦捞附、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至氨鹏,卻和暖如春欧募,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仆抵。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工跟继, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留种冬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓舔糖,卻偏偏與公主長(zhǎng)得像娱两,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子金吗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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