中天筆試題
一、介面和抽象類的區別是什麼? 相同點: 都不能被例項化,位於繼承樹的頂端,是用於被其他類繼承或者實現的; 都可以包含抽象方法,子類都必須要實現抽象方法; 在實際的開發中,都是介面先行,一般都是先定義介面,然後開發人員實現介面,完成具體方法的實現。 抽象類是個半成品,可以作為一個模板去使用。
不同點: 抽象類中可以定義普通方法,但是介面中都是抽象方法和靜態變數; 在抽象類是可以定義靜態方法的,介面中不能定義靜態方法的; 在抽象中可以定義構造器的,但是在介面中是不存在構造器這個概念的; 一個類最多隻能有一個直接的父類或者抽象類,但是可以有多個介面的實現。
二、什麼是值傳遞和引用傳遞? 值傳遞: 方法呼叫時,實際引數把它的值傳遞給對應的形式引數,函式接收的是原始值的一個copy,此時記憶體中存在兩個相等的基本型別,即實際引數和形式引數,後面方法中的操作都是對形參這個值的修改,不影響實際引數的值。 引用傳遞: 也稱為傳地址。方法呼叫時,實際引數的引用(地址,而不是引數的值)被傳遞給方法中相對應的形式引數,函式接收的是原始值的記憶體地址;在方法執行中,形參和實參內容相同,指向同一塊記憶體地址,方法執行中對引用的操作將會影響到實際物件。
三、執行緒有幾種,你喜歡哪種,為什麼? 1.繼承Thread類 2.實現Runnable介面 3.應用程式可以使用Executor框架來建立執行緒池 實現Runnable介面這種方式更受歡迎,因為這不需要繼承Thread類。在應用設計中已經繼承了別的物件的情況下,這需要多繼承(而Java不支援多繼承),只能實現介面。
四、什麼是資料庫的連線池? 資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重複使用一個現有的資料庫連線,而不是再重新建立一個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。
五、Servlet是什麼? Servlet(伺服器端小程式)是使用Java語言編寫的伺服器端程式,可以生成動態WEB頁,Servlet主要執行在伺服器端,並由伺服器執行呼叫,是一種按照Servlet標準開發的類。
Servlet是在 Web 容器中有瀏覽器訪問地址的特殊 Java 類,一般充當的就是控制器的角色。
六、簡述一下servlet的生命週期; 分為三個階段: 1.初始化階段 :呼叫init()方法 2.響應客戶請求階段:呼叫service()方法 3.終止階段:呼叫destroy()方法
七、doPost()和doGet()方法的區別; 相同點: Get和post都能夠提交資料 不同點: 1.通過get方式提交的資料有大小的限制,通常在1024位元組左右;而post方式沒有資料大小的限制,理論上傳送多少資料都可以。 2.通過get傳遞資料,實際上是將傳遞的資料按照”key,value”的方式跟在URL的後面來達到傳送的目的的;而post傳遞資料是通過http請求的附件進行的,在URL中並沒有明文顯示。 3.通過Get方式提交的資料安全性不高,而Post方式的更加安全
八、HTTP響應的結構是什麼? HTTP響應由三個部分組成: 1.狀態碼(StatusCode):描述了響應的狀態。可以用來檢查是否成功的完成了請求。請求失敗的情況下,狀態碼可用來找出失敗的原因。如果Servlet沒有返回狀態碼,預設會返回成功的狀態碼HttpServletResponse.SC_OK。 2.HTTP頭部(HTTPHeader):它們包含了更多關於響應的資訊。比如:頭部可以指定認為響應過期的過期日期,或者是指定用來給使用者安全的傳輸實體內容的編碼格式。如何在Serlet中檢索HTTP的頭部看這裡。 3.主體(Body):它包含了響應的內容。它可以包含HTML程式碼,圖片,等等。主體是由傳輸在HTTP訊息中緊跟在頭部後面的資料位元組組成的。
九、Cookie是什麼?說說cookie和session的區別; Cookie:當一個使用者通過HTTP訪問一個伺服器時,這個伺服器會將一些Key/Value鍵值返回給客戶端瀏覽器,並給這些資料加上一些限制條件,在條件符合時,使用者下次訪問這個伺服器時,資料又將完整地帶回給伺服器。 cookie 和session 的區別: 1.cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。 2.cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙考慮到安全應當使用session。 3.session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能考慮到減輕伺服器效能方面,應當使用COOKIE。 4.單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie。 5.所以個人建議:將登陸資訊等重要資訊存放為SESSION;其他資訊如果需要保留,可以放在COOKIE中.
十、Jsp的隱含物件是什麼?有哪幾個? 1、out 來源於java.io.Writer類,它用於傳送輸出流到客戶端。 2、request 來源於javax.servlet.http.HttpServletRequest介面。它被關聯到每一個HTTP請求。 3、response 來源於javax.servlet.http.HttpServletResponse。response物件用於把取得的資料返回到客戶端。 4、pageContext 提供訪問JSP頁面的名稱空間。它也提供用來訪問其他的JSP隱含物件。 5、session 來源於javax.servlet.http.HttpSession。它用於儲存客戶端請求的資訊,因此它是有狀態互動式的。 6、application 來源於javax.servlet.ServletContext。 7、config 來源於ServletConfig,它包含了當前JSP/Servlet所在的WEB應用的配置資訊。 8、page 來源於當前被訪問JSP頁面的例項化。它實際使用的是JSP轉換成的Servlet。 9、exception 用於捕獲JSP丟擲的異常。它只有在JSP頁面屬性isErrorPage=true時才可用。