java中級面試題總結(1)
1、如何理解多型?類與物件的區別是什麼?
答:子類繼承父類時候 同時繼承父類方法,也重寫方法。
多型的三要素為:繼承;方法重寫;父類引用指向子類物件。
類是物件的抽象,物件是類的具體例項。
類是抽象的,不佔用記憶體,而物件是具體的,佔有記憶體空間。
例如:類就是水果,物件就是蘋果。
2、如何理解Object.hashCode()方法?,它的作用是什麼?
1.newObject(),JVM根據這個物件的Hashcode值,放入到對應的Hash表對應的Key上,如果不同的物件確產生了相同的hash值,也就是發 生了Hashkey相同導致衝突的情況,那麼就在這個Hash key的地方產生一個連結串列,將所有產生相同hashcode的物件放到這個單鏈表上去,串在一起。2.比較兩個物件的時候,首先根據他們的hashcode去hash表中找他的物件,當兩個物件的hashcode相同,那麼就是說他們這兩個物件放在Hash表中的同一個key上,那麼他們一定在這個key上的連結串列上。那麼此時就只能根據Object的equal方法來比較這個物件是否equal。當兩個物件的hashcode不同的話,肯定他們不能equal
所以hashcode相等只能保證兩個物件在一個HASH表裡的同一條HASH鏈上,繼而通過equals方法才能確定是不是同一物件,如果結果為true,則認為是同一物件在插入,否則認為是不同物件繼續插入
3、Collections類的作用?Arrays類的作用?
Collection是集合框架中的一個頂層介面,它裡面定義了單列集合的共性方法,
它有兩個常用的子介面:List:元素都定義有索引。有序,元素可以重複。Set:不可以重複元素。無序。
給陣列賦值:通過fill方法。
對陣列排序:通過sort方法,按升序。
比較陣列:通過equals方法比較陣列中元素值是否相等。
查詢陣列元素:通過binarySearch方法能對排序好的陣列進行二分查詢法操作。
4、JSP檔案與JAVA檔案的區別
JSP算是JAVA一種技術,用在網頁程式設計上,因為JAVA不能直接寫在html上,但jsp能,jsp就是Servlet程式,當JSP收到客戶的請求時,SCRIPTLET(指令碼小程式)就會被執行,指令碼段將被插入到JSP所生成的目標Servlet的Serivce函式中.
1.JSP頁面的訪問請求被髮送到伺服器端
2.伺服器中有相應的JSP引擎,JSP引擎把JSP頁面轉譯成Servlet程式
3.然後Servlet程式被編譯成Class檔案
4.然後Class檔案被執行,執行的結果返回器時,伺服器會檢查是否有對應的Servlet存在,如果存在則是直接執行,如果不存在則生成相應的Servlet.
JSP是一種動態網頁,它的網頁程式碼的靜態部分是HTML語言,動態部分是JAVA語言
5、StringBuffer的實現方式,容量如何擴充?StringBuffer是通過char[]來實現的,預設長度是16,在進行串的append的時,StringBuffer會檢測剩餘容量,適時會重新擴充,而擴容的
同時,會建立一個新的陣列,並將原來的陣列內容複製到新的數組裡面
6、說出資料連線池的工作機制
伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其表記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。當使用的池連線呼叫完成後,池驅動程式將此連線表記為空閒,其他呼叫就可以使用這個連線
7、概述一下SpringMVC的工作原理。
1、客戶端發出一個http請求給web伺服器,web伺服器對http請求進行解析,如果匹配DispatcherServlet的請求對映路徑(在web.xml中指定),web容器將請求轉交給DispatcherServlet.
2、DipatcherServlet接收到這個請求之後將根據請求的資訊(包括URL、Http方法、請求報文頭和請求引數Cookie等)以及HandlerMapping的配置找到處理請求的處理器(Handler)。
3-4、DispatcherServlet根據HandlerMapping找到對應的Handler,將處理權交給Handler(Handler將具體的處理進行封裝),再由具體的HandlerAdapter對Handler進行具體的呼叫。
5、Handler對資料處理完成以後將返回一個ModelAndView()物件給DispatcherServlet。
6、Handler返回的ModelAndView()只是一個邏輯檢視並不是一個正式的檢視,DispatcherSevlet通過ViewResolver將邏輯檢視轉化為真正的檢視View。
7、Dispatcher通過model解析出ModelAndView()中的引數進行解析最終展現出完整的view並返回給客戶端。
8、資料庫的三大正規化。
1 第一正規化(1NF)
在任何一個關係資料庫中,第一正規化(1NF)是對關係模式的基本要求,不滿足第一正規化(1NF)的資料庫就不是關係資料庫。
所謂第一正規化(1NF)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義一個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化(1NF)中表的每一行只包含一個例項的資訊。簡而言之,第一正規化就是無重複的列。
2 第二正規化(2NF)
第二正規化(2NF)是在第一正規化(1NF)的基礎上建立起來的,即滿足第二正規化(2NF)必須先滿足第一正規化(1NF)。第二正規化(2NF)要求資料庫表中的每個例項或行必須可以被惟一地區分。為實現區分通常需要為表加上一個列,以儲存各個例項的惟一標識。
第二正規化(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關係。為實現區分通常需要為表加上一個列,以儲存各個例項的惟一標識。簡而言之,第二正規化就是非主屬性非部分依賴於主關鍵字。
3 第三正規化(3NF)
滿足第三正規化(3NF)必須先滿足第二正規化(2NF)。簡而言之,第三正規化(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字資訊。例如,存在一個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等資訊。簡而言之,第三正規化就是屬性不依賴於其它非主屬性。
9、抽象類與介面(interface)的區別
1.abstract class 在java語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。但是,一個類卻可以實現多個interface。
2.在abstract class 中可以有自己的資料成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的資料成員(也就是必須是static final的,不過在 interface中一般不定義資料成員),所有的成員方法都是abstract的。
3.abstract class和interface所反映出的設計理念不同。其實abstract class表示的是"is-a"關係,interface表示的是"like-a"關係。
4.實現抽象類和介面的類必須實現其中的所有方法。抽象類中可以有非抽象方法。介面中則不能有實現方法。
5.介面中定義的變數預設是public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。
6.抽象類中的變數預設是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7.介面中的方法預設都是 public,abstract 型別的。
10、jsp內建物件?
1、request物件javax.servlet.http.HttpServletRequest
request物件代表了客戶端的請求資訊,主要用於接受通過HTTP協議傳送到伺服器的資料。(包括頭資訊、系統資訊、請求方式以及請求引數等)。request對 象的作用域為一次請求。
2、response物件 javax.servlet.http.HttpServletResponse
response 代表的是對客戶端的響應,主要是將JSP容器處理過的物件傳回到客戶端。response物件也具有作用域,它只在JSP頁面內有效。
具有動態響應contentType屬性,當一個使用者訪問一個JSP頁面時,如果該頁面用page指令設定頁面的contentType屬性是text/html,那麼JSP引擎將按照這個屬性值做出反應。
3、session物件 javax.servlet.http.HttpSession
session 物件是由伺服器自動建立的與使用者請求相關的物件。伺服器為每個使用者都生成一個session物件,用於儲存該使用者的資訊,跟蹤使用者的操作狀態。
session物件內部使用Map類來儲存資料,因此儲存資料的格式為 “Key/value”。 session物件的value可以使複雜的物件型別,而不僅僅侷限於字串型別。
public String getId():獲取Session物件編號。
public void setAttribute(String key,Object obj):將引數Object指定的物件obj新增到Session物件中,併為新增的物件指定一個索引關鍵字。
public Object getAttribute(String key):獲取Session物件中含有關鍵字的物件。
public Boolean isNew():判斷是否是一個新的客戶。
4、application物件javax.servlet.ServletContext
application 物件可將資訊儲存在伺服器中,直到伺服器關閉,否則application物件中儲存的資訊會在整個應用中都有效。與session物件相比,application物件生命週期更長,類似於系統的“全域性變數”。
伺服器啟動後就產生了這個Application物件,當客戶再所訪問的網站的各個頁面之間瀏覽時,這個Application物件都是同一個,直到伺服器關閉。但是與Session物件不同的時,所有客戶的Application物件都時同一個,即所有客戶共享這個內建的Application物件。
setAttribute(String key,Object obj):將引數Object指定的物件obj新增到Application物件中,併為新增的物件指定一個索引關鍵字。
getAttribute(String key):獲取Application物件中含有關鍵字的物件。
5、out 物件javax.servlet.jsp.jspWriter
out 物件用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。在使用 out 物件輸出資料時,可以對資料緩衝區進行操作,及時清除緩衝區中的殘餘資料,為其他的輸出讓出緩衝空間。待資料輸出完畢後,要及時關閉輸出流。
Out物件時一個輸出流,用來向客戶端輸出資料。Out物件用於各種資料的輸出。其常用方法如下。
out.print():輸出各種型別資料。
out.newLine():輸出一個換行符。
out.close():關閉流。
6、pageContext 物件javax.servlet.jsp.PageContext
pageContext 物件的作用是取得任何範圍的引數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等物件。
pageContext物件的建立和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext物件。
page 物件代表JSP本身,只有在JSP頁面內才是合法的。 page隱含物件本質上包含當前 Servlet介面引用的變數,類似於Java程式設計中的 this 指標。
7、config 物件javax.servlet.ServletConfig
config 物件的主要作用是取得伺服器的配置資訊。通過 pageConext物件的 getServletConfig() 方法可以獲取一個config物件。當一個Servlet 初始化時,容器把某些資訊通過 config物件傳遞給這個 Servlet。開發者可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化引數。
8 cookie 物件
Cookie是Web伺服器儲存在使用者硬碟上的一段文字。Cookie允許一個Web站點在使用者電腦上儲存資訊並且隨後再取回它。舉例來說,一個Web站點可能會為每一個訪問者產生一個唯一的ID,然後以Cookie檔案的形式儲存在每個使用者的機器上。
使用Request物件的getCookie()方法,執行時將所有客戶端傳來的Cookie物件以陣列的形式排列,如果要取出符合需要的Cookie物件,就需要迴圈比較陣列內每個物件的關鍵字。設定Cookie物件的有效時間,用Cookie物件的setMaxAge()方法便可以設定Cookie物件的有效時間,
例如:Cookie c = newCookie(username","john");c.setMaxAge(3600);
9、exception 物件java.lang.Throwable
exception 物件的作用是顯示異常資訊,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該物件將無法編譯JSP檔案。
excepation物件和Java的所有物件一樣,都具有系統提供的繼承 結構。
exception 物件幾乎定義了所有異常情況。在Java程式中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 物件,並把 exception 物件傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 物件。
11、Servlet的生命週期。
Servlet被伺服器例項化後,容器執行其init方法,請求到達時執行其service方法,service方法自動派遣執行與請求對應的doXXX方法(doGet,doPost)等,當伺服器決定將例項銷燬的時候呼叫其destroy方法。與cgi的區別在於servlet處於伺服器程序中,它通過多執行緒方式執行其service方法,一個例項可以服務於多個請求,並且其例項一般不會銷燬,而CGI對每個請求都產生新的程序,服務完成後就銷燬,所以效率上低於servlet。
相關推薦
java中級面試題總結(1)
1、如何理解多型?類與物件的區別是什麼? 答:子類繼承父類時候 同時繼承父類方法,也重寫方法。 多型的三要素為:繼承;方法重寫;父類引用指向子類物件。 類是物件的抽象,物件是類的具體例項。 類是抽象的,不佔用記憶體,而物件是具體的,佔有記憶體空間。 例如:類就是水果,物
java經典面試題總結(一)
Java經典面試題總結繼續更新,有需要的小夥伴可以路過不要錯過了!看上一篇面試題總結的反響還是很不錯的,就繼續更新了,也非常感謝各位小夥伴的持續關注…… 這次更偏基礎一些! 1、String 和StringBuffer 的區別? 答:JAVA 平臺提供了兩個類:String 和StringBuffer,
java經典面試題總結(二)
上一次更新的java面試題,很多小夥伴反應很簡單,其實上一期更新的就是更偏基礎的面試題,但這並不意味著,面試就這麼簡單,在java的學習中,有從Java基礎、框架、設計模式等等都是重點學習的點。在本文的面試題分享中,我們循序漸進,儘量挑一些重點的內容來分享! 1、當一個物件被當作引數傳遞到一個方法後,此方法
Java經典面試題總結(三)
本期的java面試題是偏向資料庫方面的,對相關技術知識匱乏的,或者對這方面不大自信的同學,面試之前可以參考一下這套題,這只是節選,試運營一下,如果不能滿足你們的需求,可以直接評論留言! 1、檢視的優缺點答:優點: 1)對資料庫的訪問,因為檢視可以有選擇性的選取資料庫裡的一部分。 2 )使用者通過簡單的查詢可
Java經典面試題總結(六)
本次的面試題:多執行緒知識的面試解答題。 1. 有T1、T2、T3三個執行緒,如何怎樣保證T2在T1執行完後執行,T3在T2執行完後執行? 答:使用join方法。 join方法的功能是使非同步執行的執行緒變成同步執行。即呼叫執行緒例項的start方法後,該方法會立即返回,如果呼叫start方法後
Java開發面試題總結(八)
維護 model ann 多例 操作系統 iter ali 負責 channel 好久沒有來更新我的面試題了,不知道關註我的小夥伴有沒有失聯啊?!呼叫! 好了開始我們今天的正題分享! 1、如何從FutureTask不阻塞獲取結果 get(long timeout,Time
Redis面試題總結(1)
(1)什麼是redis? Redis 是一個基於記憶體的高效能key-value資料庫。 (有空再補充,有理解錯誤或不足歡迎指正) (2)Reids的特點 Redis本質上是一個Key-Value型別的記憶體資料庫,很像memcached
java面試題整理(1)
pmap 復制 java對象 試題 取出 樹形 年輕代和老年代 com 足夠 1、Equals與==的區別? ==是判斷兩個變量或者實例是不是指向同一個內存地址 equals是判斷兩個變量或者實例所指向的內存地址中的值是不是相同 2、Object有哪些公用方法?
Java面試題—初級(1)
1.7 自動 多少 equals -a 創建 以及 cep 字節碼 1、一個".java"源文件中是否可以包括多個類(不是內部類)?有什麽限制? 可以有多個類,但只能有一個public的類,並且public的類名必須與文件名相一致。 2、Java有沒有g
超詳細的Java面試題總結(二)之Java基礎知識篇
多執行緒和Java虛擬機器 建立執行緒有幾種不同的方式?你喜歡哪一種?為什麼? 繼承Thread類 實現Runnable介面 應用程式可以使用Executor框架來建立執行緒池 實現Callable介面。 我更喜歡實現Runnable介面這種方法,當然這也是現
超詳細的Java面試題總結(三)之Java集合篇常見問題
List,Set,Map三者的區別及總結 List:對付順序的好幫手 List介面儲存一組不唯一(可以有多個元素引用相同的物件),有序的物件 Set:注重獨一無二的性質 不允許重複的集合。不會有多個元素引用相同的物件。 Map:用Key來搜尋的專家 使用鍵值對儲存。M
【JAVA面試】java面試題整理(1)
java面試題整理(1) JAVA常考點總結1 目錄
Java面試題全集(1)
1、面向物件的特徵有哪些方面? 答:面向物件的特徵主要有以下幾個方面: - 抽象:抽象是將一類物件的共同特徵總結出來構造類的過程,包括資料抽象和行為抽象兩方面。抽象只關注物件有哪些屬性和行為,並不關注這些行為的細節是什麼。 - 繼承:繼承是從已有類得到繼承資訊建立新類的過程。
超詳細的Java面試題總結(一)之Java基礎知識篇
福利:看本文之前,推薦給大家一個阿里雲雙11活動,真的非常非常非常推薦,對於新人福利,阿里雲這次真的是下血本了,建議阿里雲新人一定一定一定不要錯過。如果覺得這單純是廣告的話(阿里雲肯找我做廣告就好了,嘿嘿),你可以直接跳過看正文。 阿里雲雙11最新活動(僅限阿
2018年JAVA面試題整理(1)--基礎
最近個人也在準備找工作的事情!自己整理了一些JAVA面試題供大家參考,大家一起努力,找到一份好工作!如果大家還有一些基礎的面試題,可以評論給我!我做整理。謝謝大家分享。後續會提供比較難得面試題。Java面向物件的特徵是什麼三大特徵是:封裝、繼承和多型。(問到這些儘量回答出其含
面試題總結(一)、TCP協議
宣告:本文主要探討當TCP協議出現在面試筆試場合可能會涉及的問題,每一個知識點討論力求簡潔,便於記憶,但討論深度有限,如要深入研究可點選參考連結,希望對正在找工作的同學有點幫助。 一、TCP協議簡介 一般問到TCP協議的時候 最常見的是TCP連線建立和斷開的過程,也就是三次握手和四次揮手,兩
機器學習面試題總結(轉)
原文連結: https://blog.csdn.net/sinat_35512245/article/details/78796328 1.請簡要介紹下SVM。 SVM,全稱是support vector machine,中文名叫支援向量機。SVM是一個面向資料的分類演算法,它的目標是為確定一個
Java常見面試題總結(八)
本次的面試題:多執行緒知識的面試解答題。 1. 有T1、T2、T3三個執行緒,如何怎樣保證T2在T1執行完後執行,T3在T2執行完後執行? 答:使用join方法。 join方法的功能是使非同步執行的執行緒變成同步執行。即呼叫執行緒例項的start方法後,該方法會立即返回,如果呼叫star
初級程式設計師面試題總結(一):
本人將這幾天面試的題目總結一些,如果出現錯誤請指正,謝謝。 1,談一談spring。 答:spring是為java程式開發提供的綜合性的基礎java開發平臺,它提供了從表現層SpringMVC到業務層Spring再到持久層springData的一套完整的解決
Django面試題系列(1)——migrate錯誤處理
面試題1:migrate怎麼判斷哪些遷移指令碼需要執行: 他會將程式碼中的遷移指令碼和資料庫中django_migrations中的遷移指令碼進行對比,如果發現數據庫中,沒有這個遷移指令碼,那麼就會執行這個遷移指令碼。 面試題2:migrate做了什麼事