101、java中會存在內
存泄漏嗎,請簡單描述。
的確存在Java的記憶體流失, 並且事態可以變得相當嚴重
Java garbage collector自動釋放哪些記憶體裡面程式不在需要的對象, 以此避免
大多數的其他程式內容相關的記憶體流失. 但是Java應用程式依舊會有相當的記憶體泄
漏. 尋找原因會十分困難.
有兩類主要的Java記憶體流失:
* 不再需要的對象引用
* 未釋放的系統資源
2.2 非必要的對象引用
Java代碼常常保留對於不再需要的對象引用, 並且這組織了記憶體的垃圾收集器的
工作. Java對象通常被其他對象包含引用, 為此一個單一對象可以保持整個對象
樹在記憶體中, 於是導致了如下問題:
* 在向數組添加對象以後遺漏了對於他們的處理
* 直到你再次使用對象的時候都不釋放引用. 比如一個菜單指令可以外掛程式一個對
象執行個體引用並且不釋放便於以後再次調用的時候使用, 但是也許永遠不會發生.
* 在其他引用依然需要舊有狀態的時候貿然修改對象狀態. 比如當你為了在一個
文字檔裡面儲存一些屬性而使用一個數組, 諸如"字元個數"等欄位在不再需要
的時候依然保留在記憶體當中.
* 允許一個長久執行的線程所引用的對象. 設定引用為NULL也無濟於事, 線上程
退出和空閑之前, 對象不會被收集釋放
2.3 未釋放的系統資源
Java方法可以定位Java執行個體意外的堆記憶體, 諸如針對視窗和位元影像的記憶體資源.
Java常常通過JNI(Java Native Interface)調用C/C++子程式定位這些資源.
102、java中實現多態的機制是什嗎?
方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫
Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中
多態性的一種表現。
103、記憶體回收行程的基本原理是什嗎?記憶體回收行程可以馬上回收記憶體嗎?有什麼
辦法主動通知虛擬機器進行記憶體回收?
對 於GC來說,當程式員建立對象時,GC就開始監控這個對象的地址、大小以及
使用方式。通常,GC採用有向圖的方式記錄和管理堆(heap)中的所有對象。 通
過這種方式確定哪些對象是"可達的",哪些對象是"不可達的"。當GC確定一些對
象為"不可達"時,GC就有責任回收這些記憶體空間。可以。程式員可以手 動執行
System.gc(),通知GC運行,但是Java語言規範並不保證GC一定會執行。
104、靜態變數和執行個體變數的區別?
static i = 10; //常量
class A a; a.i =10;//可變
105、什麼是java序列化,如何?java序列化?
序列化就是一種用來處理物件流程的機制,所謂物件流程也就是將對象的內容進行流
化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。
序列化是為瞭解決在對物件流程進行讀寫操作時所引發的問題。
序 列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要
實現的方法,implements Serializable只是為了標註該對象是可被序列化的,
然後使用一個輸出資料流(如:FileOutputStream)來構造一個 ObjectOutputStream(
物件流程)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)
方法就可以將參數為obj的對象寫出(即儲存其狀態),要恢複的話則用輸入資料流。
106、是否可以從一個static方法內部發出對非static方法的調用?
不可以,如果其中包含對象的method();不能保證對象初始化.
107、寫clone()方法時,通常都有一行代碼,是什嗎?
Clone 有預設行為,super.clone();他負責產生正確大小的空間,並逐位複製。
108、在JAVA中,如何跳出當前的多重嵌套迴圈?
用break; return 方法。
109、List、Map、Set三個介面,存取元素時,各有什麼特點?
List 以特定次序來持有元素,可有重複元素。Set 無法擁有重複元素,內部排序
。Map 儲存key-value值,value可多值。
110、J2EE是什嗎?
J2EE 是Sun公司提出的多層(multi-diered),分布式(distributed),基於組件
(component-base)的企業級應用程式模型 (enterpriese application model).在這
樣的一個應用系統中,可按照功能劃分為不同的組件,這些組件又可在不同計算
機上,並且處於相應的層次(tier)中。所屬層次包括客戶 層(clietn tier)組件
,web層和組件,Business層和組件,公司資訊系統(EIS)層。
111、UML方面
標準建模語言UML。使用案例圖,靜態圖(包括類圖、對象圖和包圖),行為圖,互動圖(
順序圖,合作圖),實現圖。
112、說出一些常用的類,包,介面,請各舉5個
常用的類:BufferedReader BufferedWriter FileReader FileWirter String
Integer
常用的包:java.lang java.awt java.io java.util java.sql
常用的介面:Remote List Map Document NodeList
113、開發中都用到了那些設計模式?用在什麼場合?
每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解
決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需
在重複相同的工作。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE
的相關應用。簡單原廠模式等。
114、jsp有哪些動作?作用分別是什麼?
JSP 共有以下6種基本動作 jsp:include:在頁面被請求的時候引入一個檔案。
jsp:useBean:尋找或者執行個體化一個JavaBean。 jsp:setProperty:設定
JavaBean的屬性。 jsp:getProperty:輸出某個JavaBean的屬性。 jsp:forward
:把請求轉到一個新的頁面。 jsp:plugin:根據瀏覽器類型為Java外掛程式產生
OBJECT或EMBED標記。
115、Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,
是否可以implements(實現)interface(介面)?
可以繼承其他類或完成其他介面,在swing編程中常用此方式。
116、應用伺服器與WEB SERVER的區別?
應用伺服器:Weblogic、Tomcat、Jboss
WEB SERVER:IIS、 Apache
117、BS與CS的聯絡與區別。
C/S是Client/Server的縮寫。伺服器通常採用高效能的PC、工作站或小型機,並
採用大型資料庫系統,如Oracle、Sybase、Informix或 SQL Server。用戶端需
要安裝專用的用戶端軟體。
B/S 是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器(Browser),如
Netscape Navigator或Internet Explorer,伺服器安裝Oracle、Sybase、
Informix或 SQL Server等資料庫。在這種結構下,使用者介面完全通過WWW瀏覽器
實現,一部分事務邏輯在前端實現,但是主要事務邏輯在伺服器端實現。瀏覽器
通過Web Server 同資料庫進行資料互動。
C/S 與 B/S 區別:
1.硬體環境不同:
C/S 一般建立在專用的網路上, 小範圍裡的網路環境, 區域網路之間再通過專
門伺服器提供串連和資料交換服務.
B/S 建立在廣域網路之上的, 不必是專門的網路硬體環境,例與電話上網, 租
用裝置. 資訊自己管理. 有比C/S更強的適應範圍, 一般只要有作業系統和瀏覽
器就行
2.對安全要求不同
C/S 一般面向相對固定的使用者群, 對資訊安全的控制能力很強. 一般高度機
密的資訊系統採用C/S 結構適宜. 可以通過B/S發布部分可公開資訊.
B/S 建立在廣域網路之上, 對安全的控制能力相對弱, 可能面向不可知的使用者
。
3.對程式架構不同
C/S 程式可以更加註重流程, 可以對許可權多層次校正, 對系統運行速度可以
較少考慮.
B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加最佳化的基礎之上.
比C/S有更高的要求 B/S結構的程式架構是發展的趨勢, 從MS的.Net系列的
BizTalk 2000 Exchange 2000等, 全面支援網路的構件搭建的系統. SUN 和IBM
推的JavaBean 構件技術等,使 B/S更加成熟.
4.軟體重用不同
C/S 程式可以不可避免的整體性考慮, 構件的重用性不如在B/S要求下的構
件的重用性好.
B/S 對的多重結構,要求構件相對獨立的功能. 能夠相對較好的重用.就入買
來的餐桌可以再利用,而不是做在牆上的石頭桌子
5.系統維護不同
C/S 程式由於整體性, 必須整體考察, 處理出現的問題以及系統升級. 升級
難. 可能是再做一個全新的系統
B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減
到最小.使用者從網上自己下載安裝就可以實現升級.
6.處理問題不同
C/S 程式可以處理使用者面固定, 並且在相同地區, 安全要求高需求, 與操作
系統相關. 應該都是相同的系統
B/S 建立在廣域網路上, 面向不同的使用者群, 分散地區, 這是C/S無法作到的.
與作業系統平台關係最小.
7.使用者介面不同
C/S 多是建立的Window平台上,表現方法有限,對程式員普遍要求較高
B/S 建立在瀏覽器上, 有更加豐富和生動的表現方式與使用者交流. 並且大部
分難度減低,減低開發成本.
8.資訊流不同
C/S 程式一般是典型的中央集權的機械式處理, 互動性相對低
B/S 資訊流向可變化, B-B B-C B-G等資訊、流向的變化, 更像交易中心。
118、LINUX下線程,GDI類的解釋。
LINUX實現的就是基於核心輕量級進程的"一對一"執行緒模式,一個線程實體對應
一個核心輕量級進程,而線程之間的管理在核外函數庫中實現。
GDI類為映像裝置編程介面類庫。
119、STRUTS的應用(如STRUTS架構)
Struts 是採用Java Servlet/JavaServer Pages技術,開發Web應用程式的開放
源碼的framework。 採用Struts能開發出基於MVC(Model-View-Controller)設計
模式的應用構架。 Struts有如下的主要功能: 一.包含一個controller
servlet,能將使用者的請求發送到相應的Action對象。 二.JSP自由tag庫,並且
在controller servlet中提供關聯支援,協助開發員建立互動式表單應用。 三.
提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理
JavaBeans屬性、國際化的提示和訊息。
120、Jdo是什麼?
JDO 是Java對象持久化的新的規範,為java data object的簡稱,也是一個用於
存取某種資料倉儲中的對象的標準化API。JDO提供了透明的Object Storage Service,因此對開
發人員來說,儲存資料對象完全不需要額 外的代碼(如JDBC API的使用)。這
些繁瑣的例行工作已經轉移到JDO產品供應商身上,使開發人員解脫出來,從而
集中時間和精力在商務邏輯上。另外,JDO很靈活,因為它 可以在任何資料底層
上運行。JDBC只是面向關聯式資料庫(RDBMS)JDO更通用,提供到任何資料底層的
儲存功能,比如關聯式資料庫、檔案、XML以及對 象資料庫(ODBMS)等等,使得
應用可移植性更強。
121、內部類可以引用他包含類的成員嗎?有沒有什麼限制?
一個內部類對象可以訪問建立它的外部類對象的內容
內部類如果不是static的,那麼它可以訪問建立它的外部類對象的所有屬性
內部類如果是sattic的,即為nested class,那麼它只可以訪問建立它的外部類
對象的所有static屬性
一般普通類只有public或package的訪問修飾,而內部類可以實現static,
protected,private等訪問修飾。
當從外部類繼承的時候,內部類是不會被覆蓋的,它們是完全獨立的實體,每個
都在自己的命名空間內,如果從內部類中明確地繼承,就可以覆蓋原來內部類的
方法。
122、WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、
UDDI,WSDL解釋。
Web ServiceWeb Service是基於網路的、分布式的模組化組件,它執行特定的任
務,遵守具體的技術規範,這些規範使得Web Service能與其他相容的組件進行
互操作。
JAXP(Java API for XML Parsing) 定義了在Java中使用DOM, SAX, XSLT的通用
的介面。這樣在你的程式中你只要使用這些通用的介面,當你需要改變具體的實
現時候也不需要修改代碼。
JAXM(Java API for XML Messaging) 是為SOAP通訊提供存取方法和傳輸機制的
API。
WSDL是一種 XML 格式,用於將網路服務描述為一組端點,這些端點對包含面向
文檔資訊或面向過程資訊的訊息進行操作。這種格式首先對操作和訊息進行抽象
描述,然後將其綁定到具體的網路通訊協定和訊息格式上以定義端點。相關的具體端
點即組合成為抽象端點(服務)。
SOAP即簡易物件存取通訊協定 (SOAP)(Simple Object Access Protocol),它是用於交換XML
編碼資訊的輕量級協議。
UDDI 的目的是為電子商務建立標準;UDDI是一套基於Web的、分布式的、為Web
Service提供的、資訊註冊中心的實現標準規範,同時也包含一組使企業能將自
身提供的Web Service註冊,以使別的企業能夠發現的訪問協議的實現標準。
soap是web service最關鍵的技術,是web service中資料和方法調傳輸的介質。
WSDL(web service definition language)描述了web service的介面和功能。