全靠這套大廠Java面試題目指南,讓我成功斬獲 25*16 薪資的offer

Hello,今天給各位童鞋們分享JavaWeb,趕緊拿出小本子記下來吧!

Java web

web編程基礎

服務器

請問JAVA應用服務器都有哪些?

從功能上看分為兩種:web應用服務器和java EE服務器

web服務器

Tomcat、Jetty、Orion、Resin、 Bejy Tiger、Geronimo、Jonas、Jrun

java EE 服務器

TongWeb 、BES Application Server 、 Apusic Application Server 、 IBM Websphere 、Sun Application Server 、Oracle 的 Oracle9i/AS 、Sun Java System Application Server 、Bea Weblogic 、JBoss、開源GlassFish。

JAVA 調試

請問在什么情況下會使用assert?

作用:用于檢查一個boolean表達式是否正確

如果一個程序要保證其正確性,就必須使此表達式的返回值為true,返回false,則此程序有誤

應用場景:通過在開發和測試中開啟,在軟件發布后是關閉的

tomcat

限流的幾種方法:計數器,滑動窗口、漏桶法、令牌桶

請問如何在鏈接里不輸入項目名稱的情況下啟動項目?

配置虛擬路徑

此處的WEB-INF可以直接粘貼tomcat中的webapps/root/WEB-INF

配置完以后重啟tomcat即可訪問到

JSP

請說明一下JSP中的靜態包含和動態包含的有哪些區別?

請求方式不同

? ?靜態包含頁面:<%@include file="static.jsp" %>

? ?動態包含頁面 <jsp:include page="dynamic.jsp"/>

編譯過程不同

靜態包含:包含頁面以及被(靜態)包含的頁面只能擁有一個head,body等,且遵循先包含再編譯,即只會生成一個class文件

動態包含:被(動態)包含的頁面遵循先編譯后包含,則會生成不同的.java文件

對于JSP文件首先會通過WEB服務器生成index_jsp.java(servlet文件)再經過編譯生成index.class文件

request

靜態包含:包含頁面不能向被包含的頁面傳參,因為兩個頁面會合成一個頁面進行編譯,就沒有了我們所謂再傳參的頁面,使用的是同一個request對象

動態包含:包含頁面能向被包含的頁面傳參,因為被包含的頁面是是執行到這個語句時才會加載的,且會生成不同的class文件,既然包含頁面可以向被包含的頁面傳參,那么兩個頁面的參數個數是不一樣的的,所以它們有各自的request對象,因此使用的是不同的request對象

注意事項

靜態包含:因為是先包含再編譯,因此頁面的 <%@page contentType=“text/html;charset=utf-8”%> 應該保持一致,否則包含整合以后的頁面會報錯,盡量不用出現一樣的語句否則會進行覆蓋

請談一談JSP有哪些內置對象?以及這些對象的作用分別是什么?

request:用戶對服務器的請求,通過post/get請求并傳遞參數

response:封裝服務器對客戶端的響應

session:會話對象,從第一個請求開始,到頁面的關閉結束,當刷新瀏覽器時,此對象不會發生變化,可以看作是一次全局的,不管哪個頁面都可訪問,多頁面共享

page:當前jsp頁面自身,相當于this,即對應的servlet類的對象

pageContext:當前頁面的上下文,可以獲取此頁面的內容

application:可以存放全局共享的變量,從服務器開啟一直到服務器關閉結束,可以看作是多客戶端共享的

exception:當前頁面發生異常時,會有此對象,<%@page isErrorPage=“true” %>,JSP中的exception對象才有效。

config:web的配置對象,取得再web.xml中的初始化參數

out:向客戶端輸出信息的流對象

請說明一下jsp有哪些動作? 這些動作的作用又分別是什么?

jsp:include:動態包含頁面

jsp:useBean:創建一個Bean對象

jsp:setproperty:給Bean對象中的屬性賦值

jsp:getProperty:獲取Bean對象屬性中的值

jsp:forward:請求轉發

jsp:plugin:根據瀏覽器的類型為Java插件生成OBJECT或EMBED標記

請簡要說明一下四種會話跟蹤技術分別是什么?

為什么要使用會話跟蹤技術?因為服務端和客戶端是通過http傳輸的,http是“無狀態”的,一次響應完之后會斷開,需要再次請求,因此需要判斷是否為同一用戶

重寫URL:其原理是將session的id信息重寫到url中

表單隱藏域:會話會將id添加到表單中,用戶不會看到,存在于源碼中

cookie:客戶請求時可以將信息發送給服務器

? cookie存在于客戶端,不是很安全,會被解析

? 每個cookie限制4kb,且數量為200之內

session:每個用戶都有各自的session

session存在于服務端,當創建一個session時,其id會隨著cookie傳送到用戶端,當每次用戶請求的時候會將sessionId傳送到服務端識別不同的用戶

當訪問量多的時候,使用session服務器的性能會下降

請簡要說明一下JSP和Servlet有哪些相同點和不同點?另外他們之間的聯系又是什么呢?

JSP

本質還是Servlet

可以實現html和Java相結合

JSP會被編譯成Servlet,Servlet再負責用戶的請求

Servlet

由web容器加載和管理

是Java應用程序

用于生成動態web內容

負責處理客戶端請求

其實Jsp本質上還是Servlet(index_jsp.java),只是相比較Servlet更加視圖化,而Servlet更偏向邏輯控制,其實顯示用戶請求以及響應的業務本質還是有Servlet實現的

EL

請說一下表達式語言(EL)的隱式對象以及該對象的作用

用于讀取jsp內置對象的(pageScope、requestScope、sessionScope、applicationScope)分別對應page、request、session、application對象

${requestScope.username}獲取request中的username

與輸入有關的(param、paramValues),可以獲得用戶請求的參數

${param.name}

與cookie有關的

${cookie.username.value}獲取cookie中username的值

讀取請求頭的數據header和headerValues

${header[“User-Agent”]}

讀取web.xml中的參數值initParam

用于獲取與其他用戶有關的頁面或者要求pageContext

${pageContext.request.contextPath} 獲取web application名稱

Request

請詳細說明一下Request對象的主要方法是什么?

getParameter():獲取前端傳來的參數

getAttribute(String name):返回name指定的屬性值

serAttribute(String name,Object o):設置name指定的屬性值

getCookies():獲取cookie

getSession():獲取session

getInputStream():獲取輸入流

JAVA對象

請說明一下JSP的內置對象以及該對象的使用方法。

page

request

getParameter():獲取前端傳來的參數

getAttribute(String name):返回name指定的屬性值

serAttribute(String name,Object o):設置name指定的屬性值

getCookies():獲取cookie

getSession():獲取session

getInputStream():獲取輸入流

foward:請求轉發

? 3.response

sendRedirect():重定向

addCookies():添加cookie

? 4.session

? 5.application

? 6.pageContext

? 7.config

? 8.exception

? 9.out

xml文件

請說明一下web.xml文件中可以配置哪些內容?

配置DispatcherServlet

<servlet>

? ?<servlet-name>dispatcher</servlet-name>

? ?<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

? ? ? ?<init-param>

? ? ? ? ? ?<param-name>contextConfigLocation</param-name>? ? ? ??

? ? ? ? ? ?<param-value>classpath:applicationContext.xml</param-value>? ??

? ? ? ?</init-param>? ??

? ? ? ?<load-on-startup>1</load-on-startup>

? ?</servlet>

? ?<servlet-mapping>

? ? ? ?<servlet-name>dispatcher</servlet-name>

? ? ? ?<url-pattern>/</url-pattern>

? ?</servlet-mapping><!--不過濾靜態資源? 相當于 <mvc:default-servlet-handler/> -->

? ?<servlet-mapping>

? ? ? ?<servlet-name>default</servlet-name>? ??

? ? ? ?<url-pattern>*.png</url-pattern>

? ?</servlet-mapping>

? 2.過濾器

<!--? ? 過濾亂碼-->? ??

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>? ? ? ??

<init-param>

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

? 3.session超時時間

<!--? ? session超時30分鐘-->? ??

<session-config>

? ? ? ? <session-timeout>30</session-timeout>

</session-config>

監聽器

請談談你對Javaweb開發中的監聽器的理解?

Javaweb中的監聽器主要針對于application、session、request三個對象

application

ServletContextListener:對Servlet上下文的創建和銷毀進行監聽

ServletContextAttributeListener:對Servlet上下文中的屬性的添加,刪除和修改進行監聽

session

HttpSessionListener:對Session的創建和銷毀進行監聽

HttpSessionAttributeListener:對Session中的屬性的添加,刪除和修改進行監聽

request

ServletRequestListener:對Request的創建和銷毀進行監聽

ServletRequestAttributeListener:對Request中的屬性的添加,刪除和修改進行監聽

過濾器

請問過濾器有哪些作用?以及過濾器的用法又是什么呢?

對請求和響應進行攔截,并且按照要求進行過濾,在發送給下一個過濾器或者servlet

過濾亂碼

對位登錄的請求進行過濾(控制訪問權限)

敏感字符過濾

補充

過濾器和攔截器的區別

過濾器依賴于servlet,攔截器不依賴于servlet

過濾器是回調函數,攔截器是通過Java的反射機制

過濾器只在容器初始化的時候init一次【幾乎對所有請求起作用】,而攔截器可以在action請求的生命周期中多次初始化【只對action請求起作用】

攔截器可以通過IOC容器獲取各個Bean,而過濾器不行,還可以將service注入,調用業務邏輯

觸發時機

過濾器是請求進入容器之后在請求進入servlet之前進行預處理,請求結束也是在servlet處理完之后在容器處理完之前

所以過濾器過濾的請求參數是doFilter(ServletRequest request, ServletResponse response, FilterChain chain),而不是HttpServletRequest,因為是在HttpServlet之前請求的

chain.doFilter(request, response);此方法是分水嶺在Servlet的doService()中

(prehandler()和afterCompletion()是攔截器中的方法)

prehandler()—>do.chain()—>afterCompletion() prehandler()–[可以操控Controller的ModelAndView內容]–>return ModelAndView

SpringMVC的機制是由同一個Servlet來分發請求給不同的Controller,其實這一步是在Servlet的service()方法中執行的

攔截器是spring容器的,是spring支持的

總結:攔截器功在對請求權限鑒定方面確實很有用處,在我所參與的這個項目之中,第三方的遠程調用每個請求都需要參與鑒定,所以這樣做非常方便,而且他是很獨立的邏輯,這樣做讓業務邏輯代碼很干凈。和框架的其他功能一樣,原理很簡單,使用起來也很簡單,大致看了下SpringMVC這一部分的源碼,其實還是比較容易理解的。

我們項目中僅僅用到了preHandle這個方法,而未用其他的,框架提供了一個已經實現了攔截器接口的適配器類HandlerInterceptorAdapter,繼承這個類然后重寫一下需要用到的方法就行了,可以少幾行代碼,這種方式Java中很多地方都有體現。

web編程進階(一)

初始化

請問使用Servlet如何獲取用戶配置的初始化參數以及服務器上下文參數?

重寫Servlet中的init(),getInitParameter()獲取初始化參數

getServletContext()獲取上下文對象,getInitParameter()獲取上下文參數

servlet

請問使用Servlet如何獲取用戶提交的查詢參數以及表單數據?

getParameter()

getParameterValues()

getParameterMap()

服務器收到用戶提交的表單數據,請問調用了以下方法中的哪一個方法?第一個是Servlet中的doGet()方法,第二個Servlet中的是doPost()方法

根據我們提交表單的method,如果是post,則會調用doPost(),如果是get,則會調用doGet()

請說明一下Servlet 3中的異步處理指的是什么?

因為在沒有異步處理的時候,當用戶端發送請求時,由servlet接受請求,經過對一些信息的預處理,開始調用接口執行業務邏輯,但此時的servlet是處于阻塞狀態的,導致在高并發的情況下,性能低下,如果此時有了異步請求,在servlet阻塞的時候,會有一個子線程去執行其他任務,會將結果信息返回或者發送給其他servlet,此時不會降低性能

說說Servlet接口中有哪些方法?

void init(ServletConfig var1) throws ServletException;

Servlet初始化

ServletConfig getServletConfig();

獲取Servlet的配置

void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

service(),會調用doGet()和doPost()

String getServletInfo();

void destroy();

銷毀

補充

什么時候實例化Servlet:

Servlet只初始化一次,即所謂的單例模式

如果設置loan-on-startup為1,則是在web容器加載的時候實例化

如果沒有設置,則是在第一次請求servlet的時候實例化

闡述一下闡述Servlet和CGI的區別?

Servlet創建之后就不會銷毀,每次使用會調用Servlet的一個線程,且不會銷毀;但是CGI(公共網關接口)每次調用的是一個進程,而且調用完畢后會銷毀,導致開銷很大

在Servlet執行的過程中,一般實現哪幾個方法?

首先在容器加載時可能會創建Servlet對象或者第一次請求時,調用init();每次的請求【doPost、doGet】都會調用service(),當容器關閉時會銷毀servlet,調用destroy()。對于getServletConfig()會獲取Servlet的上下文或者返回ServletConfig對象;對于getServletInfo()會獲取一些信息,比如作者、版權…

請說出Servlet的生命周期是什么樣的?并且請分析一下Servlet和CGI的區別。

在第一次請求的時候調用init(),會將初始化的Servlet對象保存在內存中,在以后的每次請求中(doPost()、doGet())都會調用service(),當容器關閉時,會調用destroy(),當Servlet對象實例化時,其有關配置的初始化參數會保存在容器中,可以通過getServletConfig()獲取,對于getServletInfo()可以獲取有關作者,出版社等信息

對于Servlet而言,其只有創建一次,以后都會直接調用,但是對于CGI而言,每次請求都會創建一個,會不停的創建銷毀,開銷比較大

補充

為什么需要Servlet,因為傳統的方式web容器和客戶端之間只能以靜態頁面進行交互,因為兩者是通過Http協議進行信息的傳輸,想要使用動態頁面進行交互就要通過Servlet的支持,什么是Servlet,可以簡單的理解為是一種運行于服務端的程序,狹義的理解為是Servlet接口,廣義的理解為是實現Servlet接口的任何實現類,下面以圖的形式展現Servlet的作用

請回答一下servlet的生命周期是什么。servlet是否為單例以及原因是什么?

在第一次請求的時候調用init(),會將初始化的Servlet對象保存在內存中,在以后的每次請求中(doPost()、doGet())都會調用service(),當容器關閉時,會調用destroy(),當Servlet對象實例化時,其有關配置的初始化參數會保存在容器中,可以通過getServletConfig()獲取,對于getServletInfo()可以獲取有關作者,出版社等信息

是單例模式

因為servlet是在容器加載或者第一次請求的時候初始化,直到容器關閉時才會銷毀

請簡要說明一下forward與redirect區別,并且說一下你知道的狀態碼都有哪些?以及redirect的狀態碼又是多少?

forward:請求轉發,此時的地址欄不會改變,可以共享request里面的數據,效率高

redirect:重定向,此時的地址欄會發生改變,不能共享request里面的數據,效率低

200:正確

302:重定向

404:找不到資源

500:代碼錯誤

文件傳輸

請問如何在基于Java的Web項目中實現文件上傳和下載?

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>??

<head>? ?

<title>$Title$</title>??

</head>??

<body>??

?<form method="post" action="uploadServlet" enctype="multipart/form-data">? ?

選擇文件: <input type="file" name="fileUp">? ??

<input type="submit" value="上傳">??

</form>? ${hint}?

</body>

</html>

@MultipartConfig@WebServlet("/uploadServlet")public class uploadServlet extends HttpServlet {? ??

@Override? ??

protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {? ? ? ??

Part picture = request.getPart("picture");? ? ? ??

if (picture != null && picture.getSubmittedFileName().length() > 0) {? ? ? ? ? ??

String realPath = request.getServletContext().getRealPath("/upload");? ? ? ? ? ?

picture.write(realPath + "/" + picture.getSubmittedFileName());? ? ? ? ? ?

request.setAttribute("hint", "success");? ? ? ??

}else {? ? ? ? ? ?

request.setAttribute("hint", "failure");? ? ? ? ? ? }? ? ? ?

request.getRequestDispatcher("index.jsp").forward(request, response);? ??

}

}

web編程進階(二)

對象

談一下,什么是DAO模式?

dao模式可以理解為底層模式,是持久層,是與數據庫進行交互的,可以通過sql語句對數據庫中的數據進行增刪查改

MVC

說一說,MVC的各個部分都有那些技術來實現?如何實現?

Model

是模型層,可以用來創建與數據庫有關的實體

View

視圖層,用來作為給客戶端顯示的頁面,同時也可以將從前端獲取的數據傳送到后端,進行處理

Controller

控制層,是用來作為與視圖層交互的,可以獲取前端傳來的數據交給service處理邏輯業務,同時也可以將要顯示在前端的數據傳輸給頁面

JSP標簽

談一談,使用標簽庫有什么好處?如何自定義JSP標簽?

可以在jsp頁面中使用Java語言

可以自定義jsp標簽

具有較好的可移植性,可重用性和可維護性

自定義JSP標簽

繼承TagSupport類,重寫doStartTag(),然后再編寫.tld對自定義標簽進行部署

JSTL

請說說你做過的項目中,使用過哪些JSTL標簽?

jsp <c:foreach> <c:if> <c:choose> <c:when> <c:otherwise>

web編程原理

HTTP請求

說說你對get和post請求,并且說說它們之間的區別?

post和get都可以向服務器提交數據,get是獲取數數據,post是提交數據

約定俗成:

get是將提交的數據通過追加在url中提交數據;post是通過body提交數據【只是約定說get通過url提交,post放在body中提交,并沒有硬性要求】

get的數據是暴露的,不安全;post的數據是安全的

get的提交數據大小有限制;post沒有限制

get提交數據只能是ASCII編碼;post可以是任何編碼類型

get可以緩存;post不會緩存

get速度快;post速度慢

補充

因為get是將自己提交的數據,追加在url中因此不需要使用content-type,但是對于post請求是將提交的數據放在了body中,因此需要通過請求頭content-type來通知服務器以什么語言來解析post中的body

常用的提交方式(content-type的值):

application/x-www-form-urlencoded

multipart/form-data

application/json

text/xml

請談一談,get和post的區別?

約定俗成:

get是將提交的數據通過追加在url中提交數據;post是通過body提交數據【只是約定說get通過url提交,post放在body中提交,并沒有硬性要求】

get的數據是暴露的,不安全;post的數據是安全的

get的提交數據大小有限制;post沒有限制

get提交數據只能是ASCII編碼;post可以是任何編碼類型

get可以緩存;post不會緩存

get速度快;post速度慢

重定向

請談談,轉發和重定向之間的區別?

次數

轉發:請求一次

重定向:請求兩次,通過發送狀態碼

url

轉發:不會發生變化

重定向:會發生變化

request有效

轉發:有效

重定向:無效

效率

轉發:高效

重定向:低效

web service

請你解釋一下,什么是Web Service?

就是一個可以提供一個接口給多個程序之間相互調用,實現其之間的通信,而且web Service并不關注你是使用何種語言的

請求類型

請你說明一下,如何設置請求的編碼以及響應內容的類型?

request.setCharacterEncoding(“utf-8”);

response.setContentType(“application/json”);

response.setHeader(String,String);

客戶端/服務器模式

請說明 BS與CS 的聯系,還有區別。

區別

1.硬件環境不同

C/S 一般建立在專用的網絡上

B/S 建立在廣域網之上的,一般只要有操作系統和瀏覽器就行

2.對安全要求不同

C/S 一般面向相對固定的用戶群, 對信息安全的控制能力很強. 一般高度機密的信息系統采用C/S 結構適宜.

可以通過B/S發布部分可公開信息。B/S 建立在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。

3.對程序架構不同

C/S 程序可以更加注重流程, 可以對權限多層次校驗, 對系統運行速度可以較少考慮.

B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優化的基礎之上. 比C/S有更高的要求 B/S結構的程序架構是發展的趨勢, 從MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持網絡的構件搭建的系統. SUN 和IBM推的JavaBean 構件技術等,使B/S更加成熟.

4.軟件重用不同

C/S 程序可以不可避免的整體性考慮, 構件的重用性不如在B/S要求下的構件的重用性好.

B/S 對的多重結構,要求構件相對獨立的功能. 能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在墻上的石頭桌子

5.系統維護不同

C/S 程序由于整體性, 必須整體考察, 處理出現的問題以及系統升級. 升級難. 可能是再做一個全新的系統

B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減到最小.用戶從網上自己下載安裝就可以實現升級.

6.處理問題不同

C/S 程序可以處理用戶面固定, 并且在相同區域, 安全要求高需求, 與操作系統相關. 應該都是相同的系統

B/S 建立在廣域網上, 面向不同的用戶群, 分散地域, 這是C/S無法作到的. 與操作系統平臺關系最小.

7.用戶接口不同

C/S 多是建立的Window平臺上,表現方法有限,對程序員普遍要求較高

B/S 建立在瀏覽器上, 有更加豐富和生動的表現方式與用戶交流. 并且大部分難度減低,減低開發成本.

8.信息流不同

C/S 程序一般是典型的中央集權的機械式處理, 交互性相對低

B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更像交易中心。

資源請求方式

請你說明,forward 和redirect的區別?

url

forward :不發生變化

redirect:發生變化

次數

forward :請求一次

redirect:請求兩次

效率

forward :較高

redirect:較低

request

forward :有效

redirect:失效

web訪問

請你說說,cookie 和 session的區別?

cookie是從服務端發出,保存在客戶端的;session是保存在服務端的

cookie是不安全的可以被解析

cookie不能超過4M,并且不能多于200個

session放在服務端,當數量過多會影響服務器的性能

好啦,今天的文章就到這里,希望能幫助到屏幕前迷茫的你們!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容