Java的Web和基礎中常見的技術組合面試題,看看您都get到了沒?

一,簡述http協議中post和get方法的區別

get 方法:從指定的資源獲取數據,get方法將請求參數拼加在url地址後面,參數可見,因此數據可見,相對不是很安全,並且受到url長度限制,所以get方法請求數據長度也有限制,最大2048字符;get方法的參數保存在瀏覽器歷史記錄,能被緩存。

post方法:向指定的資源提交要被處理的數據,post請求數據放在請求表單中,參數不可見,相對而言比較安全,請求的長度不受限制,並且post請求參數不會保存在瀏覽器記錄中,不能被緩存。

二、session 和cookie的區別

cookie:cookie數據放在客戶端,並且相對不是很安全,別人可以通過分析放在本地的cookie進行cookie欺騙, session會在一定時間保存在服務器上,並且會佔用一定內存,所以在考慮減輕服務器性能方面可以考慮用cookie,考慮到安全用session。cookie可以通過設置生命週期決定cookie作用的有效時間。

比如cookie運用場景:判斷用戶是否登入過網站,方便下次能直接登入;比如購物車,用戶在不同頁面選擇商品,將這些信息存在cookie中,最後從cookie中獲取信息。

Session:session是由服務器維持的一片存儲空間,作為會話機制,實現方式有cookie和url重寫。當用戶鏈接服務器,服務器會為每一個session創建一個id,這個id是唯一的,這個sessionid通過cookie保存在客戶端,每次發送請求時,會把sessionid提交到服務器端,根據id提取到對應的session存儲空間,從而獲取session中的數據,session默認有一定的生命週期。cookie一旦失效 session也就失效。

三、簡述servlet與jsp的關係

servlet:運行在服務端的java運用程序,可以生成動態web頁面,作用在客戶端請求和服務器響應中間層,這樣就不用單獨為每一個客戶端請求創建進程。

jsp 全名 java server pages ,,叫做java服務器頁面,是一種動態頁面技術,目的是將邏輯從servlet分離出來,使程序開發變得更容易,可以看作是編譯後的servlet。

兩者的區別:servlet是在java代碼加入了htnl代碼,修改不方便,適合做流程控制和業務邏輯處理;

jsp是在html中加入java代碼,比較適合頁面顯示

servlet中沒有內置對象,jsp中的內置對象通過request ,response 對象得到。

四、jsp內置對象有哪些,有什麼作用

request:代表客戶端的請求信息,用於接收傳送到服務端的數據;

reponse:代表向客戶端的響應,將jsp容器處理的對象傳到客戶端,具有作用域,在jsp頁面有效。

session:第一次頁面加載就創建了,一種會話跟蹤技術,可以保存用戶的信息。

application: 生命週期長,服務器已啟動產生一個application對象,用於保存信息,所有用戶共用一個application對象

out:向瀏覽器輸出信息

pagecontext:獲取其他對象

config:獲取服務器的配置信息

cookie:是保存在用戶硬盤的一段文本,保留了用戶登入的信息

exception:處於異常信息

五、簡述你理解的java 封裝,繼承,多態

封裝:通過private修飾變量或方法,提供給public的getter和setter方法供外部使用

繼承:關鍵字 extends,將一些共性的東西提取出來,這樣簡化代碼,提高代碼複用性

多態:父類的變量指向子類對像,提高代碼拓展性,並通過重寫父類方法實現了提高代碼的靈活性。

六、寫出兩個常用設計模式偽代碼

單例模式:餓漢單例

public class A {

private static A a = new A ();

privtae A (){}

public static A getA(){

return a;

}

}

使用場景:i/o中與數據庫的連接,減少資源消耗;

每臺計算機有若干個打印機,但只能有一個PrinterSpooler,以避免兩個打印作業同時輸出到打印機。

工廠模式:

提供一個工程類:

public class Factory{

private Factory (){};

public static Product createProduct (string name){

if (name.equals"A"){ return new ProductA}

}

if (name.equals"B"){ return new ProductB}

}else

}

提供一個接口:

public interface Product{ public void method }

提供兩個實現類:

public class ProductA implements Product {

}

public class ProductB implements Product {

}

常用場景:情況一:如果一個對象擁有很多子類,那麼創建該對象的子類使用工廠模式是最合適的,不但可以面向接口的編程,為維護以及開發帶來方便。 利用工廠模式可以提高代碼複用率。

七、hashMap 和hashTable的區別

hashMap: 線程不安全, 可以接收null值,單線程下hashMap的速度要更快

八、hashset 和treeset的區別

兩者都有內置的順序排列,hashset根據hash值進行排序,treeset根據二差樹實現的,Treeset中的數據是自動排好序的,可一通過實現compartor方法實現自然排序。

九、arraylist和linkedlist的區別

arraylist : 會根據插入順序進行排序,是數組結構,通過下標可以方便查詢,查詢效率高;

linkedlist; 使用鏈表結構放入數據,方便插入數據

十、== 和equals的區別

比較基本數據類型時,== 和equal 效果一樣,對於引用對象的比較,equals 比較的是值,==比較的是內存地址。


Java的Web和基礎中常見的技術組合面試題,看看您都get到了沒?


分享到:


相關文章: