1. 程式人生 > >JAVA:面試題及答案

JAVA:面試題及答案

1.你最常上的兩個技術站和最常使用的兩個app分別進什麼?主要解決你什麼需求?

csdn、部落格園,解決問題 github,參考程式碼 processon,畫流程圖

2.請簡述http協議中get請求和post請求的區別.

1) get和post請求都是客戶端與伺服器之間得互動,請求——應答模式的協議 2)
get是從伺服器上獲取資料,post是向伺服器傳送資料,一般用於更新資源資訊 3)
get請求時通過URL直接請求資料,資料資訊可以在URL中直接看到,比如瀏覽器訪問;而post請求是放在請求頭中的,我們是無法直接看到的
4) get提交有資料大小的限制,一般是不超過2KB,而POST理論上預設是沒有限制 5)
get請求因為資料引數是暴露在URL中的,所以安全性比較低,如密碼不能暴露的就不能用get請求;post請求中,請求資訊是放在請求頭的,安全性較高,可以使用。

3.請簡述session和cookie的區別.

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙 考慮到安全應當使用session。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能 考慮到減輕伺服器效能方面,應當使用COOKIE。

4、單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie。

5、所以個人建議: 將登陸資訊等重要資訊存放為SESSION 其他資訊如果需要保留,可以放在COOKIE中

4.簡述Servlet與JSP的關係

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

5.JSP內建物件有哪些,各自起到的作用

1、request 觸發服務呼叫的請求
2、response 對請求的應答
3、session 為請求的客戶建立的session物件
4、application 從 servlet 配置物件獲得的 servlet 上下文(如在getServletConfig(),getContext()的呼叫中)
5、out 向輸出流寫入內容的物件
6、pageContext 本 JSP 的頁面上下文
7、page實現處理本頁當前請求的類的例項
8、config 本 JSP 的 ServletConfig
9、exception表示JSP頁面執行時產生的異常

6.簡述你所理解的JAVA封裝、繼承、多型。

7.寫出2個常用的設計模式(虛擬碼),並簡述應用場景。
23種設計模式(2)五種常用設計模式
8.HashMap和HashTable區別。
HashTable和HashMap的區別詳解
9.HashSet和TreeSet的區別。

10.ArrayList和LinkedList的區別。

ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。

對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。

對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。

11.==與equals的區別。

== 比較的是變數(棧)記憶體中存放的物件的(堆)記憶體地址,用來判斷兩個物件的地址是否相同,即是否是指相同一個物件。比較的是真正意義上的指標操作。
  equals用來比較的是兩個物件的內容是否相等,由於所有的類都是繼承自java.lang.Object類的,所以適用於所有物件,如果沒有對該方法進行覆蓋的話,呼叫的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。

12.簡述泛型、反射、註解應用場景及各自解決了哪些問題。

13.Thread類的方法有哪些,如何多種方式實現執行緒同步。

14程序與執行緒的區別,JAVA中有哪些方式可以建立執行緒。

程序是資源分配的最小單位,執行緒是程式執行的最小單位。

程序有自己的獨立地址空間,每啟動一個程序,系統就會為它分配地址空間,建立資料表來維護程式碼段、堆疊段和資料段,這種操作非常昂貴。而執行緒是共享程序中的資料的,使用相同的地址空間,因此CPU切換一個執行緒的花費遠比程序要小很多,同時建立一個執行緒的開銷也比程序要小很多。

執行緒之間的通訊更方便,同一程序下的執行緒共享全域性變數、靜態變數等資料,而程序之間的通訊需要以通訊的方式(IPC)進行。不過如何處理好同步與互斥是編寫多執行緒程式的難點。

但是多程序程式更健壯,多執行緒程式只要有一個執行緒死掉,整個程序也死掉了,而一個程序死掉並不會對另外一個程序造成影響,因為程序有自己獨立的地址空間。

15.現有一學生表結構(student-id,class-id,name),請寫出統計每班有多少學生的SQL語句。

select class_id,count(*) from student group by class_id

16.假如你正在開發一個系統的登入程式,請簡述你是如何實現記住使用者名稱和密碼這個操作的,並如何實現?

17.在檢視層不支援儲存cookie,服務端不支援session的場景下如何保持使用者登陸狀態。

18.設計一套CMS系統或者部落格系統的表結構(畫出大概的UML圖即可)。