拿下BAT的offer,這篇匯總的Servlet常見面試題正適合你

2021-01-09 愚公要移山1

這篇文章主要是對servlet的運行過程進行一個分析。涉及了一些基本的用法和常見的面試題。

一、什麼是servlet

我們使用電腦在天貓商城買東西的時候,商品往往都有相應的圖片,當我們點擊不同的商品就會顯示不同的圖片。這個過程其實是請求伺服器資源的過程。在很久以前還是使用的servlet技術的時候,伺服器的處理機制就是通過servlet來完成的。現在我們給servlet一個標準的定義:

servlet是運行在web伺服器中的小型java程序,通常通過HTTP協議接受和相應來自web客戶端的請求。

它的特點如下:

(1)Servlet對像,由Servlet容器創建。通常這個容器就是tomcat。

(2)Servlet是一個接口:位於javax.servlet包中。

我們直接通過案例來分析會更加的清晰。

二、servlet案例

畢竟不是專門介紹servlet的使用的,我們直接通過案例來分析。在這裡我使用的的IDE是Myeclipse,首先新建了一個ServletTest項目,根路徑就是項目名字,然後在com.fdd.servlet包下,建了一個MyServlet1類,內容如下:

現在我們已經創建了一個Servlet,但是如何去使用呢?我們還需要去註冊一下這個Servlet。註冊好了,客戶端才能訪問。註冊的時候就是在web.xml裡面註冊,內容如下:

註冊的時候分為了兩步:

(1)把MyServlet1作為一個實例注入進來

(2)給這個實例提供一個外界可以訪問的地址,目前的地址是/demo1。

此時我們就訪問Servlet。這個案例很簡單。下面我們分析一下這個整體的訪問過程是什麼樣的。

三、請求過程

上面通過案例演示了整體的效果,但是整個流程是怎麼樣的呢?我們給出一張圖就明白了

上面這張圖基本上把整個流程算是交代清楚了。現在我們梳理一遍。

(0)Tomcat容器中通過web.xml加載所有的Servlet。

(1)用戶在瀏覽器輸入不同的地址,向Tomcat容器請求資源。

(2)Tomcat容器根據地址首先在容器內找到應用ServletTest。

(3)Tomcat容器再根據地址去web.xml找到相應的servlet地址(/demo1)。

(4)Tomcat容器根據找到的servlet地址(/demo1)去web.xml找到相應的Servlet類,並實例化。

(5)Tomcat容器實例化相應的Servlet,首先調用init方法。

(6)Tomcat容器實例化相應的Servlet,首先調用service方法處理用戶請求,比如post或者是get。

(7)Servlet處理完成之後,先將數據給Tomcat容器,Tomcat容器再把處理結果給瀏覽器客戶端。

(8)Tomcat容器調用servlet實例的destory方法銷毀這個實例。

步驟比較容易理解。可以對比著上面的過程圖來記憶。下面我們看看其生命周期。

四、生命周期(重點)

如果你理解了上面的執行過程,對於其生命周期想必也有了一個大概的了解,比如說init方法、service方法、destory方法。其實也就是這三個方法:

(1)init:第一次請求資源的時候,執行且只執行一次init方法。

(2)service:第二次往後,執行service方法,執行多次。在這個方法內部,根據請求方式的不同,進而繼續調用不同的doGet和doPost方法。

(3)destory:當Servlet伺服器正常關閉時,執行destroy方法,只執行一次。

五、常見面試題

在一開始舉的例子中我們直接繼承的是Servlet接口,這個類比較原始。需要我們自己處理各種事件。其實java已經我們提供了很多封裝好的Servlet類,比如GenericServlet。

1、GenericServlet和HttpServlet有什麼區別?

GenericServlet 為抽象類,定義了一個通用的、獨立於底層協議的servlet,實現了 Servlet 和 ServletConfig 接口,ServletConfig接口定義了在Servlet初始化的過程中由Servlet容器傳遞給Servlet得配置信息對象。OK,這個類可能我們不是那麼熟悉,但是他的子類相信大家都知道,也就是HttpServlet ,HttpServlet 繼承自抽象類GenericServlet 具有其所有的特性並拓展了一些其他的方法,如doGet、doPost等。現在看到這倆方法都熟悉了吧。

2、什麼情況下調用doGet()和doPost()呢?

也就是在前端代碼中,如果我們的請求方式是get那就是doGet處理。同理post是doPost方法處理。

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

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

3、在這裡沒有提前端是jsp,是因為目前的前後端分離技術基本上jsp已經被淘汰了,JSP和Servlet有哪些相同點和不同點,他們之間的聯繫是什麼?

JSP是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯後是"類servlet"。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML裡分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

4、四種會話跟蹤技術

客戶端打開與伺服器的連接發出請求到伺服器響應客戶端請求的全過程稱之為會話 。瀏覽器與伺服器之間的通信是通過HTTP協議進行通信的,而HTTP協議是」無狀態」的協議,它不能保存客戶的信息,即一次響應完成之後連接就斷開了,下一次的請求需要重新連接,這樣就需要判斷是否是同一個用戶,所以才應會話跟蹤技術來實現這種要求。

(1)Cookie

(2)Session

(3)URL複寫:把會話ID編碼在URL中。

(4)隱藏表單域

5、會話作用域

(1)page域:數據在一個頁面範圍內有效,通過pageContext對象訪問

(2)request域:數據在一個伺服器請求範圍內有效,通過request對象訪問

(3)session域:數據在一次會話範圍內容有效,通過session對象訪問

(4)application域:數據在一個應用伺服器範圍內有效,通過application對象訪問

6、Cookie和Session的作用和區別

(1)cookie 是一種發送到客戶瀏覽器的文本串句柄,數據保存在客戶端,可以用來在某個WEB站點會話間持久的保持數據。

(2)session技術中所有的數據都保存在伺服器上,客戶端每次請求伺服器的時候會發送當前會話的sessionid,伺服器根據當前sessionid判斷相應的用戶數據標誌,以確定用戶是否登錄或具有某種權限。

(3)cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。

(4)cookie 和session的區別是:cookie數據保存在客戶端,session數據保存在伺服器端。

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

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

8、HTTP響應的結構是怎麼樣的?

HTTP響應由三個部分組成:

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

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

(3)主體(Body):它包含了響應的內容。它可以包含HTML代碼,圖片,等等。主體是由傳輸在HTTP消息中緊跟在頭部後面的數據字節組成的。

9、sendRedirect()和forward()方法有什麼區別?

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

10、隱含對象是什麼意思?有哪些隱含對象?

JSP隱含對象是頁面中的一些Java對象,JSP容器讓這些Java對象可以為開發者所使用。開發者不用明確的聲明就可以直接使用他們。JSP隱含對象也叫做預定義變量。下面列出了JSP頁面中的隱含對象:application、page、request、response、session、exception、out、config、pageContext。

此外,我在網上找了幾套Servlet常見的面試題,基本上就是這些。

相關焦點

  • 畢業生必備面試技巧!助你快速拿下offer
    這篇乾貨助你求職路上一舉成功~1、做一份優質的簡歷一份「漂亮」的簡歷是獲得面試機會的「敲門磚」,怎樣才能讓自己的簡歷令人眼前一亮?1、個人信息儘量寫全,聯繫電話一定要寫對,便於企業HR聯繫。溫馨提示:在視頻面試中,「半身」正裝不可取,建議像參加面對面面試一樣準備你的著裝。如果面試過程中你需要起身,得體的著裝能讓你避免尷尬。3、自我介紹 好好「推銷」自己面試如選秀,各家有各家的標準。怎麼做才能突出重圍?一起來了解一下吧!你是怎樣自我介紹的呢?
  • 面試官:「你有幾個offer」,聰明人不說具體數字,從這三點作答
    01 面試官:你目前拿到了幾個offer朋友小靖最近在考慮新的工作機會。除了收到的面試邀請,小靖手裡還另握著其它兩份offer:所以小靖在面試的時候哦還是很有信心的。在面試過程中,面試官跟他聊了不到三句便問道:「你手上有幾個offer。」
  • 面試官問:你目前拿到幾個offer,該如何回答?高情商的這麼回答
    如果面試官問你目前拿到幾個offer,怎麼回答才好?其實,這是求職過程中很常見的面試問題。看到這個面試問題的時候,有的朋友會感覺腦瓜子嗡嗡的,不知如何回答。所以,在回答這個問題之前,我們要搞清楚面試官的用意,做到知己知彼。
  • 面試中被問:你收到幾個offer?怎麼回答?職場老鳥教你
    所以小編建議,大家在面試過程中,如果被問到這個問題,一定要謹記絕對不要去批評或者詆毀已經收到的offer。再一個呢,面試官希望從你已經收到的offer當中,知道你當前的薪資水平,知道自己公司在你那邊競爭力。畢竟薪資是每一個求職者和公司都最為關心的一個問題。
  • ToseeCareer從《令人心動的offer》中總結出的3條面試萬能定律!
    作為一檔求職綜藝,《令人心動的offer》不斷向觀眾展示學霸的面貌:名校光環、海外實習、榮譽獎項…看完同齡人的幾篇簡歷,網友們紛紛自嘲唏噓:這哪裡是令人心動的offer,分明是令人自卑的offer!在學霸與律師你來我往之間,也將許多問題盡數放大,呈現在觀眾眼中。
  • 7個常見工作面試問題,面試官究竟想要什麼?
    不知道你有沒有這樣的經歷:明明自己符合招聘啟事上的各項要求,但是卻最終沒能收到offer。我們都以為,只要條件滿足,收到offer應該是水到渠成的事情。但是我們卻忽略了一個很重要的環節:面試。這也是為什麼很多人明明符合條件,卻最終應聘失敗的主要原因:他們在面試環節表現不好,沒有給面試官留下一個好的印象。這篇文章,我們將討論7個常見的面試問題,並且分析,在這些問題的背後,面試官究竟想要獲得什麼。希望能對你的面試有所幫助。
  • 面試時,如何回答「你目前收到了幾個offer」?
    在面試時,HR會問一些個人信息倆判斷應聘者的臨場應變能力和創新能力,以此作為條件對面試者進行篩選。因此,當我們遇到HR問「你目前收到幾個offer」時,要把握主動權。那麼HR為什麼會問這個問題?這個問題可以從側面觀察面試者的內在素養和個性特徵,觀察其是否對其他公司和自身做出評判和討論。求職者對收到offer態度和評價能反映發展前景。調整薪資,掌握主動權。HR想通過你對收到offer的評價和其他公司收到的薪資來調整薪資幅度。
  • 《offer2》實習生翻車?瞿澤林面試英文尷尬,又被爆料「偽學霸」
    01《令人心動的offer2》面試篇更新最近大家比較關注的回歸綜藝當中,《令人心動的offer2》是值得一提的,最近這段時間官宣之後,緊接著就就官宣定檔了,隨後又迅速更新了面試篇。不得不說《心動的offer2》這速度可是真的一點都不含糊,迅速且高效,想必不少人已經看了最近更新的面試篇吧,看點還是很足的。這一檔節目依舊是何炅作為加油團的團長,邀請到了好幾位大家比較熟悉的藝人明星們,有職場新人、老闆、律師等。
  • 英國本科留學申請:從各類offer到面試你了解多少?
    在2020年的最後一個月,2021屆的英國本科申請已經走過了一半歷程,不少同學都已經收穫了布裡斯託、愛丁堡和曼徹斯特等大學的offer,更有已經手握牛津劍橋、IC面試的同學,那麼在距離夢校僅一步之遙的時候,小易來提醒一下同學們要各外注意的幾件事。
  • 年初離職,學習半年源碼,終於拿到了螞蟻Offer,分享面試過程
    小夥伴從去年開始,一直叨叨要跳槽,大大小小的公司面試了很多,但總沒有拿到一個滿意的offer,要麼package太低,要麼就是面試被虐。經過前幾次的面試失利,終於明白了什麼叫基礎不牢,地動山搖。面試官隨便針對一個知識點深入考察一下,就回答不出來,就這樣,還怎麼能通過面試?不過,最近收到了小夥伴的捷報,已拿到阿里的offer,公司足夠大,base還可以,雖然是個P6,但還是隱隱感覺到他很滿意。其實,我還是有點疑惑,他之前的基礎很一般,咋就突然拿到了阿里的offer。
  • 你離offer只差一個好形象:面試著裝十大禁忌
    --Edith Head(著名服裝設計師)對於所有即將找工作或者已經找到工作的女生來說,面試時穿什麼都是很讓人頭疼的問題。放在平日裡或清爽或高調的打扮都不適合工作場合,尤其是第一印象可以影響面試成敗的時候。即使是先天條件優厚,又有重金資助,都可能因為一些細節而被面試官否定。
  • 比肩MBB的Deloitte Consulting全職offer如何拿下?
    剛開始求職的時候,我並沒有系統地進行職業規劃,大二的時候看到自己身邊的同學們都開始忙碌的申請暑期實習,我有點著急,於是申請了國內四大,最後拿到了國內某四大的Risk部門offer.我們主要做風險諮詢,頂級公司們都明白風險是競爭優勢的來源。 通過更有效地管理風險,頂級公司們是可以發揮其全部潛力的。
  • 陪室友去面試空姐,室友沒面上,自己卻順利拿到offer!為什麼?
    送小芳出房間的時候,看到小美在旁邊等候,一看形象不錯,以為小美也是來面試的,也叫她進去面試。小美沒有做任何解釋,就跟著面試官進去了。面試官翻翻資料,才發現沒有小美的資料,這時小美從包裡拿出自己的簡歷遞上,微笑著說:我沒有拿到你們的面試通知,今天是陪朋友來面試的,但我也是學空乘專業的,這是我的簡歷。
  • HR問「你目前有幾個offer」,聰明人會怎麼說?
    昨天,一個讀者和我聊天,說起自己最近被虐的面試經歷。他985畢業,工作3年,看中了一家月薪1.5萬的工作,準備跳槽。雖然在北京不算高,但也還不錯,他的各方麵條件也很匹配,拿下不成問題。可沒想到HR那關都沒過,就收到了拒信。
  • 面試最常問的50個問題,資深HR告訴你面試技巧,輕鬆拿下offer
    導讀面試時,面對HR提出各種問題,如何輕鬆應答順利拿到offer?聽聽資深HR的建議!18、你並非畢業於名牌學校?建議:不卑不亢地回應,比如,我認為是否畢業於名牌院校並不是最重要的,重要的是我目前掌握的技能完全可以勝任工作。而且我的經歷讓我比一些名牌院校畢業生的動手能力更強,我想我更適合這個職位。
  • 面試官問:「你收到了幾個offer?」求職者怎樣回答才顯得高情商!
    可是隨之而來的問題又讓我陷入了沉思當中,那就是面試當中的面試官問題。在我的印象裡面無非也就問問你:為什麼從上一家公司離職?之前的薪資待遇如何?你期望的薪資是多少?之類的。這些問題我都已經可以很隨意的就能回答出來了,所以也沒啥擔心的了。
  • 面試時這樣自我介紹,幫你拿offer
    ② 自我介紹過程中能與面試官互動,而不是自說自話。但是要記住一點,這種互動並不需要面試官來配合,絕對不要眼睛直勾勾地盯著面試官,逼著面試官配合你,這樣會令雙方都感到尷尬。如果面試官是中國人,在準備自我介紹的時候要著重表現自己的英語水平;如果面試官是外國人,那麼要求你用英文自我介紹的目的就不再是考察英語水平,而是要聆聽自我介紹的細節,並根據你提供的細節來進行下一步的提問
  • 《令人心動的offer》中這5個面試小技巧,可以直接copy
    昨天給大家分析了【3個面試中絕對不要踩的雷區】,今天繼續給大家分析《令人心動的offer》中,有哪些面試加分項,可以直接讓大家「抄作業」。 校園招聘中,有時候從網申到接到面試邀約,間隔的時間較長,在這個時間中,很多同學可能會有一些新的學習經歷\實習經歷\項目經歷,而這些新的經歷往往更能證明自己的能力,所以,重新準備一份新的簡歷,可以讓面試官看到與崗位更適合的你; 在重新準備簡歷的過程中,又有了一個
  • HR問你目前拿到了幾個offer怎麼回答好?
    這個問題沒有標準答案,你要根據自己的情況來回答。先分析一下HR為什麼問這個問題?能夠問出這個問題,說明HR比較認可你面試的表現,薪資談得也不錯,把你納入可以發offer的範圍。這個問題是考察求職者的市場搶手性,如果你恰好是其他公司的候選人足以說明你的優秀。
  • 面試官:你目前有沒有其他家offer?回有很傻,聰明人都這樣答?
    你有沒有其他家offer,體現出你在市場中的競爭力通過你手頭上的offer情況,面試官會對你進行價值評估,看你在市場競爭中的位置,判斷出你有多大的概率會接受他們的聘用。例如,你說出的那些offer都是行業巨頭,說明你很有競爭力,要想聘用你就得付出高成本。