本節小編整理了16道JavaWeb常考的面試題,面試前看一看,或許可以讓您在學習 JavaWeb上少走許多彎路,也希望助您拿下心儀offer!
1.ajax問題
Ajax所帶來的好處是進行了更加豐富的頁面處理操作,但是隨之而來很多的人也開始思考ajax的問題(往往都是設計失敗的問題)。
它的安全隱患是可以通過這樣的操作來實現的,以上是第一步。隨著後續的發展,人們開始研究跨域訪問,所以產生了jsonp,如果想要進行jsonp的處理雙方需要進行協商,例如:一定要傳過去一些標記,而後一定要返回一些內容。後面繼續發展就有了Rest架構,這一點在SpringCloud上發揮到了極致(SpringSecurity支持),所以這個時候的安全性基本上已經可以解決了。
2.Cookie問題
在JSP的開發之中,Cookie的用處就是由服務器端設置到客戶端的數據。
所有的用戶提交都會將Cookie發送到服務器端上。服務器端是利用Cookie來區分不同的連接用戶的。Session是離不開Cookie的。
如果現在有些數據希望就保留在客戶端上,那麼就可以使用Cookie來進行處理操作。假設“免登錄”設置。
對於Cookie的操作現在已經被WEB存儲取代了不少。如果要想通過服務器端取得這些數據,那麼就需要通過Ajax處理了,而Ajax處理之中也會將客戶端的所有Cookie發送給服務器端。
Cookie的操作對象:request、response。
3.如何實現H5的離線緩存?
HTML5更多的情況下它為了更加方便的進行數據的處理,提供有一個本地存儲的概念,而這個本地存儲的概念是不可能用於大數據量的。因為瀏覽器與操作系統之間是有安全機制存在的,通過瀏覽器保存的數據都是非常小的數據。
Android或IOS的緩存呢?它是有一個APP,可以直接操作本地的存儲功能。本地存儲的操作要比Cookie更加方便,Cooike本身有無可替代的作用。
HTML5的唯一核心功能:WebSocket最好用。
4.JavaWeb與Android的數據交互怎麼做?
關鍵問題在於:一個系統的架構如何可以滿足WEB開發以及Android項目開發,這個的核心問題就是json。
這是最初的架構,現在不怎麼使用了。利用json作為整個控制層的迴應,這樣就相當於實現了一個restful的架構設計方式,而後包括SpringMVC也支持restful實現風格。利用這樣的架構,讓你整個系統設計沒有那麼複雜,就算有太多的客戶端,在整個處理上,流程也是完全一樣的。
5.JavaScript驗證
對於整個的Java學習一定是需要按照層次來進行劃分的,如果要想簡單劃分:
(1)顯示層:有美工設計、有前端開發;
(2)控制層:看不見長相的,這叫內涵,就好比紅綠燈一樣;
(3)業務層(數據層):看不見長相的,這叫內涵。
在實際開發過程中,必須要對JS的表單驗證進行重點掌握。
範例:表單一定是正常編寫
範例:樣式一定由美工設計
範例:JS的驗證一定要自己動態設置,根據ID取得內容
6.消息服務作用
如果說現在正常的一個項目,那麼肯定使用的就是MVC架構,整體的結構:
*顯示層—控制層—業務層—數據層。
但是如果說現在有人覺得某些數據發送可能在移動設備上。
消息服務接收指定設備發送來的字符串,格式一定是由開發者定義好的,而後將這些字符串的數據保存在數據庫或文件之中。
7.JQuery實現包含處理
在JSP頁面裡面有一個功能:,這個語句的特徵可以直接進行動態頁面包含,而這個語句的特徵可以直接進行動態頁面包含,這個語句還有一個最大的特點是可以直接包含進來WEB-INF下的頁面文件。
如果要是在普通的html頁面上實現這樣的包含處理就只能夠利用JQuery提供的函數完成:
這一操作指的是將指定的內容直接進行加載,這種加載裡面是利用Ajax完成的,也就是說如果你現在沒有服務器,以上的代碼是無法使用的。它可以包含靜態資源也可以包含動態處理完成的結果(html代碼)。
使用此類操作有一個前提,你需要設置好basePath的路徑。
8.JSON包導入
JSON的開發包的導入在Maven裡面比較麻煩
如果按照Maven的官方處理原則來講,肯定採用以上的處理模式,但以上的模式是無法使用的,因為這裡面缺少了一個JDK支持版本問題:
一定要加上“classifier”配置,否則無法進行JSON的導入。
9.JSON與XML的區別
如果按照時間發展進度來講,在很長一段時間內使用的都是xml,而這幾年開發都會使用json,原因如下:
(1)json數據量要遠遠小於xml數據量,例如:假如現在要描述一個人的信息,包括姓名、年齡、性別、多個興趣,那麼分別使用兩種文件結構描述:
XML:
JSON:
可以發現JSON的體積更小,而XML最大的敗筆出現在它的要求,這種要求體現在所有的XML文件必須有根節點,所有的節點必須完結;
(2)生成模式上:所有的信息都可以通過字符串的拼湊模式完成,但是這種做法難度太高,往往會使用一些處理類;
— XML文件生成(DOM DOM4J JDOM):操作過程及其複雜;
— JSON生成:JSONObject、JSONArray,互相設置個關係就解決了;
(3)在數據處理上:
— JSON的處理更加直白,直接使用key的名稱訪問即可,用一個eval()函數就可以處理了;
— XML:繼續複雜的DOM解析;
現在的開發之中,如果是新的項目已經不建議繼續使用xml進行數據的交通處理了,可以處理的模式都建議使用json,因為體積小,處理簡單。
XML並不是沒有用處了,實際上使用XML做為一些軟件的配置文件出現會比較合適一些,JSON已經被大量應用到Rest服務上。
10.Nginx實現原理,以及為什麼可以承載高訪問量?
Nginx首要的功能是進行一個轉發,也就是說Nginx會有一個負載均衡算法,利用這個負載均衡的算法,可以直接連接或稱為代理更多的WEBServer,而且Nginx主要在工作網絡層,所以它對網絡的處理速度會比較快。
Nginx裡面可以承擔許多的開發模塊,這樣如果使用了緩存模塊,那麼就減少了網絡傳輸,從而得到了性能的優化。
11.Nginx和Apache比較優勢是什麼?
Nginx的配置比Apache更加簡單,採用的算法也比Apache更好。Apache的市場份額越來越小。
12.Rest與Dubbo的不同
Rest的實現技術有一個Jersey,Jersey更多的形式還是類似於傳統的WebService,不過它比WebService強的地方是其直接支持JSON數據返回。
而Dubbo開發框架最大的本質在於:是一種RPC調用模式,而且全部的內部使用了一些自己的封裝機制進行處理,調用處直接通過ZooKeeper引用遠程接口,就可以直接獲取接口實現類的對象使用,到那時這個接口的實現子類的具體細節客戶端看不見。
Rest與Dubbo相似點:客戶端完全不需要關心子類的實現;
Rest與Dubbo不同點:Rest使用JSON,而Dubbo需要採用自己的方式來封裝。
13.Storm
Storm是流式計算框架,這些與大數據的開發有關。
Storm需要在Linux之中進行編譯。
14.Tomcat項目部署
Tomcat在進行項目發佈的時候實際上有兩種做法:
(1)直接將*.war文件上傳到tomcat/webapps目錄之中,這樣tomcat啟動之後會進行該war文件的解壓縮,這樣就可以實現項目的自動部署操作;
(2)以虛擬目錄的形式來進行配置,要去修改server.xml文件。
嚴格來講在實際的項目開發之中都應該設置虛擬目錄,因為Tomcat只是一個軟件,而真正的項目代碼有可能放到其它磁盤之中,這樣為了處理方便,就可以通過虛擬目錄的形式進行操作處理。
15.WEB調試
如果要進行WEB的調試處理,就直接在內部啟動Tomcat,一定不可能在外部啟動,隨後的調試模式和之前Java調試是沒有任何區別的,也是一個單步的跳入,以及一個單步跳過。
範例:定義數學計算類
範例:定義一個Servlet程序類
範例:定義一個表單
範例:定義show.jsp頁面
一定要保證你的Tomcat為內部啟動。
通過表單進行訪問,而後會進入到調試模式,在調試模式下面就根據之前的配置一步步完成就行了。
但是對於WEB的開發,一般是不會有人去關注WEB的Debug,因為所有的開發之中業務層一定要單獨測試完整,Junit測試一定要做到位。
16.分頁問題
從實際開發來講,分頁的操作實際分為兩個組成部分:
(1)第一部分:分頁的控制操作,核心就是控制currentPage(當前頁、cp參數名稱)、lineSize(每頁顯示的長度、Is參數名稱)
(2)第二部分:數據的顯示;
對於分頁的控制而言,必須要保證被包含的分頁工具頁面可以正常使用,這裡面就得考慮第一次頁面執行的時候,因為第一次頁面執行有可能有設置任何的參數就直接進行了點擊。
如果你能將這個cp控制好,那麼對於分頁就可以非常輕鬆的實現了,後面只需要結合相應的SQL語句就可以驅動整個分頁的處理操作。
更多專業知識,面試技巧就在面試一點通,持續更新中……
感謝瀏覽~
本內容來源於阿里雲大學-Java面試技巧