一,簡述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 比較的是值,==比較的是內存地址。
閱讀更多 3T教育編程猿 的文章