1. 程式人生 > >基礎面試題20-2017年11月25日

基礎面試題20-2017年11月25日

70、說一下Servlet的體系結構。


所有的Servlet都必須要實現的核心的介面是javax.servlet.Servlet。每一個Servlet都必須要直接或者是間接實現這個介面,或者是繼承javax.servlet.GenericServlet或者javax.servlet.http.HTTPServlet。最後,Servlet使用多執行緒可以並行的為多個請求服務。
71、GenericServlet和HttpServlet有什麼區別?


GenericServlet是一個通用的協議無關的Servlet,它實現了Servlet和ServletConfig介面。繼承自GenericServlet的Servlet應該要覆蓋service()方法。最後,為了開發一個能用在網頁上服務於使用HTTP協議請求的Servlet,你的Servlet必須要繼承自HttpServlet。


72.解釋下Servlet的生命週期。


對每一個客戶端的請求,Servlet引擎載入Servlet,呼叫它的init()方法,完成Servlet的初始化。然後,Servlet物件通過為每一個請求單獨呼叫service()方法來處理所有隨後來自客戶端的請求,最後,呼叫Servlet(譯者注:這裡應該是Servlet而不是server)的destroy()方法把Servlet刪除掉。


73.doGet()方法和doPost()方法有什麼區別?


doGet:GET方法會把名值對追加在請求的URL後面。因為URL對字元數目有限制,進而限制了用在客戶端請求的引數值的數目。並且請求中的引數值是可見的,因此,敏感資訊不能用這種方式傳遞。


doPOST:POST方法通過把請求引數值放在請求體中來克服GET方法的限制,因此,可以傳送的引數的數目是沒有限制的。最後,通過POST請求傳遞的敏感資訊對外部客戶端是不可見的。


74.Class.forName()方法有什麼作用?


這個方法用來載入跟資料庫建立連線的驅動。


75.PreparedStatement比Statement有什麼優勢?


PreparedStatements是預編譯的,因此,效能會更好。同時,不同的查詢引數值,PreparedStatement可以重用。


76.什麼時候使用CallableStatement?用來準備CallableStatement的方法是什麼?


CallableStatement用來執行儲存過程。儲存過程是由資料庫儲存和提供的。儲存過程可以接受輸入引數,也可以有返回結果。非常鼓勵使用儲存過程,因為它提供了安全性和模組化。準備一個CallableStatement的方法是:


1
CallableStament.prepareCall();
77.資料庫連線池是什麼意思?


像開啟關閉資料庫連線這種和資料庫的互動可能是很費時的,尤其是當客戶端數量增加的時候,會消耗大量的資源,成本是非常高的。可以在應用伺服器啟動的時候建立很多個數據庫連線並維護在一個池中。連線請求由池中的連線提供。在連線使用完畢以後,把連線歸還到池中,以用於滿足將來更多的請求。




78.如何知道是哪一個客戶端的機器正在請求你的Servlet?


ServletRequest類可以找出客戶端機器的IP地址或者是主機名。getRemoteAddr()方法獲取客戶端主機的IP地址,getRemoteHost()可以獲取主機名


79.HTTP響應的結構是怎麼樣的?


HTTP響應由三個部分組成:


狀態碼(Status Code):描述了響應的狀態。可以用來檢查是否成功的完成了請求。請求失敗的情況下,狀態碼可用來找出失敗的原因。如果Servlet沒有返回狀態碼,預設會返回成功的狀態碼HttpServletResponse.SC_OK。


HTTP頭部(HTTP Header):它們包含了更多關於響應的資訊。比如:頭部可以指定認為響應過期的過期日期,或者是指定用來給使用者安全的傳輸實體內容的編碼格式。如何在Serlet中檢索HTTP的頭部看這裡。


主體(Body):它包含了響應的內容。它可以包含HTML程式碼,圖片,等等。主體是由傳輸在HTTP訊息中緊跟在頭部後面的資料位元組組成的。


80.什麼是cookie?session和cookie有什麼區別?


cookie是Web伺服器傳送給瀏覽器的一塊資訊。瀏覽器會在本地檔案中給每一個Web伺服器儲存cookie。以後瀏覽器在給特定的Web伺服器發請求的時候,同時會發送所有為該伺服器儲存的cookie。下面列出了session和cookie的區別:


無論客戶端瀏覽器做怎麼樣的設定,session都應該能正常工作。客戶端可以選擇禁用cookie,但是,session仍然是能夠工作的,因為客戶端無法禁用服務端的session。


在儲存的資料量方面session和cookies也是不一樣的。session能夠儲存任意的Java物件,cookie只能儲存String型別的物件。


81.瀏覽器和Servlet通訊使用的是什麼協議?
瀏覽器和Servlet通訊使用的是HTTP協議。


82.sendRedirect()和forward()方法有什麼區別?


sendRedirect()方法會建立一個新的請求,而forward()方法只是把請求轉發到一個新的目標上。重定向(redirect)以後,之前請求作用域範圍以內的物件就失效了,因為會產生一個新的請求,而轉發(forwarding)以後,之前請求作用域範圍以內的物件還是能訪問的。一般認為sendRedirect()比forward()要慢。


83.什麼是URL編碼和URL解碼?


URL編碼是負責把URL裡面的空格和其他的特殊字元替換成對應的十六進位制表示,反之就是解碼。


84.JSP請求是如何被處理的?


瀏覽器首先要請求一個以.jsp副檔名結尾的頁面,發起JSP請求,然後,Web伺服器讀取這個請求,使用JSP編譯器把JSP頁面轉化成一個Servlet類。需要注意的是,只有當第一次請求頁面或者是JSP檔案發生改變的時候JSP檔案才會被編譯,然後伺服器呼叫servlet類,處理瀏覽器的請求。一旦請求執行結束,servlet會把響應傳送給客戶端。


85.JSP有什麼優點?


下面列出了使用JSP的優點:


JSP頁面是被動態編譯成Servlet的,因此,開發者可以很容易的更新展現程式碼。
JSP頁面可以被預編譯。
JSP頁面可以很容易的和靜態模板結合,包括:HTML或者XML,也可以很容易的和產生動態內容的程式碼結合起來。
開發者可以提供讓頁面設計者以類XML格式來訪問的自定義的JSP標籤庫。
開發者可以在元件層做邏輯上的改變,而不需要編輯單獨使用了應用層邏輯的頁面。
86.什麼是JSP指令(Directive)?JSP中有哪些不同型別的指令?


Directive是當JSP頁面被編譯成Servlet的時候,JSP引擎要處理的指令。Directive用來設定頁面級別的指令,從外部檔案插入資料,指定自定義的標籤庫。Directive是定義在<%@ 和 %>之間的。下面列出了不同型別的Directive:


包含指令(Include directive):用來包含檔案和合並檔案內容到當前的頁面。
頁面指令(Page directive):用來定義JSP頁面中特定的屬性,比如錯誤頁面和緩衝區。
Taglib指令: 用來宣告頁面中使用的自定義的標籤庫。
87.什麼是JSP動作(JSP action)?


JSP動作以XML語法的結構來控制Servlet引擎的行為。當JSP頁面被請求的時候,JSP動作會被執行。它們可以被動態的插入到檔案中,重用JavaBean元件,轉發使用者到其他的頁面,或者是給Java外掛產生HTML程式碼。下面列出了可用的動作:


jsp:include-當JSP頁面被請求的時候包含一個檔案。
jsp:useBean-找出或者是初始化Javabean。
jsp:setProperty-設定JavaBean的屬性。
jsp:getProperty-獲取JavaBean的屬性。
jsp:forward-把請求轉發到新的頁面。
jsp:plugin-產生特定瀏覽器的程式碼。


88.隱含物件是什麼意思?有哪些隱含物件?


JSP隱含物件是頁面中的一些Java物件,JSP容器讓這些Java物件可以為開發者所使用。開發者不用明確的宣告就可以直接使用他們。JSP隱含物件也叫做預定義變數。下面列出了JSP頁面中的隱含物件:


application
page
request
response
session
exception
out
config
pageContext


89.說出你常用的五個異常類.


90.解釋下Serialization和Deserialization。


Java提供了一種叫做物件序列化的機制,他把物件表示成一連串的位元組,裡面包含了物件的資料,物件的型別資訊,物件內部的資料的型別資訊等等。因此,序列化可以看成是為了把物件儲存在磁碟上或者是從磁碟上讀出來並重建物件而把物件扁平化的一種方式。反序列化是把物件從扁平狀態轉化成活動物件的相反的步驟。




91.什麼是Servlet?


Servlet是用來處理客戶端請求併產生動態網頁內容的Java類。Servlet主要是用來處理或者是儲存HTML表單提交的資料,產生動態內容,在無狀態的HTTP協議下管理狀態資訊。

相關推薦

基礎試題20-20171125

70、說一下Servlet的體系結構。所有的Servlet都必須要實現的核心的介面是javax.servlet.Servlet。每一個Servlet都必須要直接或者是間接實現這個介面,或者是繼承javax.servlet.GenericServlet或者javax.servl

2017114 vs類和結構的區別&哈希表&隊列集合&棧集合&函數

b- protect htable private turn queue ole 長度 ack 類和結構的區別 類:類是引用類型在堆上分配,類的實例進行賦值只是復制了引用,都指向同一段實際對象分配的內存類有構造和析構函數類可以繼承和被繼承結構:結構是值類型在棧上分配(雖然

20171112--1(ES的數據類型-應用數據)

例如 bre per 小數位 運行 傳遞 concat 行為 tofixed ES標準 1引用類型 Boolean 對象是 Boolean 原始類型的引用類型。 要創建 Boolean 對象,只需要傳遞 Boolean 值作為參數:var oBooleanObject =

20171130 C#TreeNode遞歸&郵箱驗證&新用戶窗體

安全證書 event 數據 隨機 false 設置 tex 成功 創建 TreeNode遞歸 遞歸:自己調用自己一層一層的把數據找出來 TreeNode:可以創建多個節點 private void button1_Click(object sender, EventA

Saving James Bond - Easy Version 原創 20171123 13:07:33

oid nta roc bottom ++ lan was html 技術分享 06-圖2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the m

Debian將於2017111關閉其官方FTP服務

Debian 專案告訴使用者,到2017年11月1日,ftp://ftp.debian.org 和 ftp://security.debian.org將停止運作。 原因很簡單:Debian貢獻者錫德利克·布蒂利耶(Cédric Boutillier)聲稱“FTP伺服器不支援快取或加速機制”,這可能

2017111普及組模擬賽【解題報告】

第一題 I Got a Matrix! 大意 給定一個長和寬都小於等於100的矩陣,求出矩陣邊緣的和 思路 暴力模擬 程式碼 #include<cstdio> using namespace std; int a,n,m,

經】猿題庫-2017825,散招實習生

首先感謝熱心助人的崔同學,耐心給我講解猿題庫的面試風格,讓我能安心只准備了演算法和system design。不過演算法也沒準備,最近正常刷題而已;system design也只是複習了下搜狗的專案。相當於是裸面了。。。萬幸其他方面一點都沒有問,最後也拿到了實習

SSL2834 2017114提高組T2 揹包(二分)

2017年11月4日提高組T2 揹包 Description 蛤布斯有n種商品,第i種物品的價格為ai,價值為bi。有m個人來向蛤布斯購買商品,每個人每種物品只能購買一個。第j個人有cj的錢,他會不停選擇一個能買得起的價格最高的商品買走(如果有多個則選擇價值

瞭解ASP.NET Core 依賴注入,看這篇就夠了 於2017116由jesseliu釋出

var services = new ServiceCollection() .AddScoped<IOperationScoped, Operation>() .AddTransient<IOperationTransient, Operation>() .AddSingleto

2017725多校一Function

case pac lld esp break bool 題目 amp else Function這道題我當時一直很迷,到底怎麽來的啊,為什麽會這樣啊?? 然後看了題解才知道,原來是找循環啊。 已知f(i)=b[f(a(i)],則 f(0) = b

傳智168期 day61 redis 筆記(201782519:16:30)

inux -s 入門 cnblogs com 操作 筆記 image 密碼 redis入門筆記,介紹了如何在Linux下搭建redis,開啟redis服務,還有常見的操作。 筆記下載: 鏈接:https://pan.baidu.com/s/1sl9GneP 密碼:

黑馬23期Linux+Nginx 筆記(201782519:12:50)

過程 style aid src linux環境 下載 http baidu span 主要是介紹在Linux環境下搭建nginx的過程。 筆記下載: 鏈接:https://pan.baidu.com/s/1o7KvxB8 密碼:7xki黑馬23期Linux+Ngin

20181125ICPC焦作站參賽總結

可能就這麼退役了吧。 對這次ICPC還是比較有信心的,畢竟心態都放平和了。 路途很波折,熱身賽還是趕上了。 等到了正賽的時候,開場看出了A題的簽到,簽到肯定是我來籤的,11分鐘簽完了這道題之後,開始看第二個要開的題,I題 I題是一個簡單的貪心,但是剛開始思路不明確,寫一半卡住了,然後換人換題了 I題

2018112521:58:14

歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能

20191125開發手記

對濾波後的影象做行列投影,通過閾值得到運動影象橫縱座標點集。使用水平與豎直投影演算法,投影演算法的時間複雜度為O(x2),哪怕進行優化也最多可變為O(xlogx),時間上無法接受。再次使用傅立葉變換?還是將目標放在輪廓點整合? 使用豎直投影法的話還不如直接遍歷所有點找輪廓,這對後面進行聚類也比較方便。 決定採

2017526 20:56:11

-c script 描述 spa key name inpu cnblogs 人的   自己寫api文檔。   不要自負的認為自己不需要文檔,你不需要別人需要啊。看了一個月的別人的接口文檔,今天學著自己動手寫api文檔。   api文檔最重要的包括:   接口名 言簡意賅

jQuery試題-201771

一、jQuery的美元符號$是什麼意思有什麼作用? $是jQuery的別名,就代表了jQuery物件 例如,$(“div”) 和 jQuery(“div”)是等價的。 jQuery中就是通過這個美元符號來實現各種靈活的DOM元素選擇的,例如$(“#mai

154173526顏靈營 現代軟件工程工作室半月(2017220~2017531)學習情況總結

學習內容總結 用法 情況 能力 軟件工程 以及 .com 工作室 工程 學習內容總結: 深入學習了java,提高了一些解決問題的能力。 學到了github的用法。 應對問題的解決思路。 問題1:利用git上傳不了 問題1解決方案:通過百度,以及教程成功上傳 問題2:隨機生

MiniProfiler使用點滴記錄-201762311:08:23

性能 連接 控制器名 ef6 rem conf mon key mes 1.看似針對同樣一段查詢表ef達式,重復執行卻沒有被記錄下來。其實這是正常情況,因為ef並沒有重復去執行 相同sql查詢。 2.MiniProfiler結合MVC過濾器進行 攔截記錄Sql,示例代