1. 程式人生 > >JavaWeb總結(常見筆面試題)

JavaWeb總結(常見筆面試題)

Http

1.網路程式設計要解決的兩個主要問題

  (1)如何準確的定位網路上的一臺或者多臺主機

  (2)找到主機後如何可靠的進行有效的資料傳輸

2.IP負責網路主機的定位

  TCP提供可靠的或是非可靠的資料傳輸機制

3.OSI七層模型

   物理層-資料鏈路層-網路層-傳輸層-會話層-表示層-應用層

  TCP/IP模型

  網路介面層-網路層-傳輸層-應用層 

4.OSI各層使用的協議

(1)應用層:HTTP-超文字傳輸協議

(2)傳輸層:TCP、UDP協議

             TCP:面向連線的可靠的協議,比UDP多了一個建立連線的時間

             UDP:無連線不可靠協議,有大小限制,64KB以內,傳輸效率高          

5.埠號用來識別計算機上的應用程式,http使用的80埠

6.Http是一個基於請求/響應模式的,無狀態的協議

7.Http請求由三部分組成:請求頭,訊息報頭,請求正文

8.Http請求方法:GET、POST

9.Http響應:狀態行,訊息報頭,響應正文 

10.狀態碼

    1XX:指示資訊-表示請求已經接收,繼續處理

    2XX:成功-表示請求已經被成功接收,理解

    3XX:重定向-要完成必須進行進一步操作

    4XX:客戶端錯誤-請求無法實現或請求語句錯誤

     5XX:服務端錯誤-伺服器未能實現合法請求

      

       200:OK-客戶端請求成功

       301:資源(網頁等)被永久轉移到其它URL

       302:臨時移動,(重定向)

       400:客戶端請求有語法錯誤,不能被伺服器所理解

       401:請求未經授權

       403:接收到請求但是拒絕服務

       404:請求資源不存在

       500:伺服器發生了不可預期的錯誤

       503:伺服器當前不能處理客戶端請求,一段時間之後可能恢復正常

補充

1.Http的長連線和短連線

   Http1.1預設保持長連線,資料完成傳輸後TCP連線不斷開

   Http1.0預設保持短連線,每進行一次Http操作,就建立一次操作

2.Http1.0和Http1.1的區別

  (1)Http1.1支援長連線

  (2)Http1.1增加了host欄位

  (3)HTTP/1.1 加入了一個新的狀態碼 100(Continue)

3.get和post的區別

    (1)get請求的資料會附在URL之後,即HTTP協議頭中,以?分割URL和傳輸資料,引數之間以&相連post把提交的資料放在Http包的包體中

   (2)get方式請求有大小限制(1024),post沒有

   (3)post的安全性比get高

4.Http中重定向和請求轉發的區別

    (1)重定向是客戶端行為,請求轉發是服務端行為

    (2)重定向:兩次請求兩次響應,瀏覽器地址發生變化,可以訪問自己web之外的資源,傳輸的資料會丟失

              請求轉發:一次請求一次響應,瀏覽器地址不會發生變化,訪問的是自己本身的web資源,傳輸資料不會丟失

 

 

Servlet

1.Servlet的框架的核心是javax.servlet.Servlet的介面

2.Servlet介面的五個方法

  (1)init()方法:初始化servlet物件

  (2)service()方法:用於響應客戶的請求

  (3)destroy()方法:當servlet物件退出生命週期時,負責釋放佔用的資源

3.如何編寫一個Servlet

  (1)編寫一個普通類,實現servlet介面,或者繼承HttpServlet

  (2)編寫web.xml檔案

4.ServletRequest介面

  封裝了客戶請求資訊,HttpServletRequest是ServletRequest的實現類

5.ServletResponse介面

  該介面為Servlet提供了返回響應結果的方法

6.Servlet的生命週期

  三個階段:初始化階段、響應客戶階段、終止階段

  對應的三個方法:init()(只會呼叫一次)、service(),destroy()

7.ServletContext

   當Servlet容器啟動Web應用時,併為每個Web應用建立唯一一個ServletContext物件,可以將其理解為一個Web應用伺服器端元件的共享記憶體

   setAttribute(String name,Object object)把一個物件和一個屬性名繫結,儲存在ServletContext中

8.Servlet多執行緒問題

  最佳的解決辦法是:去除例項變數,使用區域性變數

 

Jsp

1.Jsp(Java service page)是用於開發動態web資源的技術

2. Jsp執行過程

  使用者-請求-查詢對應的Jsp-是否存在-是-是否第一次呼叫或者修改過jsp-是-呼叫jsp解析引擎-將jsp編譯為.class檔案

                                          否-位元組碼檔案-執行位元組碼檔案

3.Jsp語法:

   (1)編譯器指令

   (2)指令碼語法

   (3)動作語法

4.指令碼語法

  <!--註釋(非開發人員可見)-->

  <%--註釋(非開發人員不可見)--%>

5.Jsp內建了9個物件

  (1)request

  (2)response

  (3)out

  (4)pageContext

  (5)session

  (6)Application

  (7)config

  (8)page

  (9)exception 

6.使用者登入資訊,需要儲存在session中

7.Servlet為session建立識別符號,稱為SessionID,Servlet容器把Session作為Cookie儲存在客戶瀏覽器中

8.Cookie是使用者訪問Web伺服器時,伺服器在硬碟上存放的資訊。伺服器可以根據Cookie來跟蹤使用者,用來獲取使用者之前的訪問狀態,一個cookie包含鍵值對的方式

9.Servlet過濾器負責過濾的Web元件可以是Servlet、jsp或者Html檔案

10.所有的Servlet過濾器都必須實現javax.servlet.Filter介面,含有三個必須實現的的方法:init()-初始化、doFilter()-完成實際過濾操作、destroy()-釋放佔用資源

11.Listener是Servlet的監聽器,可以監聽客戶端的請求,服務端的操作

12.El表示式-替換掉Jsp頁面中大量的Java程式碼

13.El提供“.”和“[]”來獲取資料

  ${sessionScope.user.name}    ${sessionScope.user[“name”]}

14.EL存取變數資料的方法很簡單,例如:${username}。它的意思是取出某一範圍中名稱為username的變數。

   因為我們並沒有指定哪一個範圍的username,所以它會依序從Page、Request、Session、Application範圍查詢。

15.獲得當前Web應用的名字

  ${pageContext.request.contextPath}

16.JSTL是Jsp的標準標籤庫

  <c:out>  value  defult

  <c:set>  value var scope

  <c:if>  text scope

  <c:choose>,<c:when>(text),<c:otherwise>

  <c:foreach>  var item="${str}"

補充

1.Cookie和session的區別

  (1)cookie是使用者訪問Web瀏覽器時,伺服器在硬碟上存放的資訊, session是存放在web伺服器端的一塊資訊

  (2)無論客戶端怎樣設定,session都可以正常工作,當客戶端禁用cookie時無法使用cookie

  (3)session可以儲存任意java物件,cookie只能儲存String型別的物件

2.Jsp和Servlet的區別

  (1)jsp是html頁面中內嵌Java程式碼,側重於頁面展示

  (2)Servlet是html和Java程式碼分離,側重於邏輯控制

 

 

HTML

1.HTML超文字標記語言

2.一個HTML頁面包含四部分:<html>元素、<head>頭部元素、<body>主體元素、<title>標    題元素

3.常用標籤

   (1)自閉合 <br/><hr/>(水平分割線)

   (2)有開始有結束

     <p></p> 段落

        <a><a>超連結 <a href="javascript:void(0);"onclick="alert('我是超連結')">取消預設的事件</a>

 

CSS

4.CSS樣式表類別-主要是用來為網頁中的元素進行格式設定以及進行網頁排版和風格設計

   內嵌樣式表、內部樣式表、外部樣式表

5.CSS選擇器:HTML選擇器、類選擇器、ID選擇器

 

 

JavaScript

1.Java和JavaScript的區別

  (1)Js是基於物件的,Java是面向物件的

  (2)Js是動態語言,Java不是動態語言

  (3)Js是解釋性語言,Java是編譯性語言

2.宣告變數用var

3.Js中資料型別分為原始資料型別和物件型別

  原始資料型別包括數字,字串,boolear,和null、undefined(任何未被賦值的變數都是這個型別。)

4.javascript 訊息框

 (1)警告框   alert("文字")

 (2)確認框   confirm("文字")

 (3)提示框   prompt("文字")

5.陣列和字串的長度都是使用length屬性

6.事件

  (1)onbulr 失去焦點

  (2)onchange 值域發生改變觸發事件

  (3)onclick 滑鼠點選事件

  (4)onfocus 獲得焦點事件

  (5)onkeydown 鍵盤按下事件

7.什麼是javaScript

  是客戶端和伺服器的指令碼語言,是基於物件的解釋性語言 

8.XML的用途

  (1)儲存資料  (2)分離資料  (3)交換資料  (4)共享資料 

9.DTD和scheme:定義語法規則

10.DOM的四個基本介面:Document、Node、NodeList、NamedNodeMap

11.什麼是xml,使用xml的優缺點,xml的解析器有哪幾種,分別有什麼區別?

   Xml是一種可拓展標記語言,支援自定義標籤,使用DTD和Scheme標準化Xml的結構

   優點:用於配置檔案,格式統一,複合標準

   缺點:資料傳輸需要流量

   解析器有兩種:DOM和SAX,其中,使用DOM解析,xml文件以DOM樹形結構載入記憶體,而SAX採用的是事件模型

AJAX

1.非同步的JavaScript和Xml的縮寫

2.MIME是描述訊息內容型別的因特網標準

3.Document物件:每個載入瀏覽器的HTML都會成為Document物件

4.AJAX的核心是JavaScript和XMLHttpRequest

5.Ajax 的最大特點:

   可以實現區域性重新整理,在不更新整個頁面的前提下維護資料,提升使用者體驗度

 

JQuery

1.js中的onload事件是等頁面結構即:dom元素物件載入完後,還有其他的圖片、音訊資訊等二次請求資訊載入完成後進行觸發,而jQuery中的ready()方法是在頁面結構載入完成後,即dom元素載入完成後就進行觸發。