java 面試 筆試題 大全 (五)

J2EE初學者需要理解的問題

一、J2EE提出的背景
1、 企業級應用框架的需求

在許多企業級應用中,例如數據庫連接、郵件服務、事務處理等都是一些通用企業需求模塊,這些模塊如果每次再開發中都由開發人員來完成的話,將會造成開發週期長和代碼可*性差等問題。於是許多大公司開發了自己的通用模塊服務。這些服務性的軟件系列統稱爲中間件。

2、 爲了通用必須要提出規範,不然無法達到通用

在上面的需求基礎之上,許多公司都開發了自己的中間件,但其與用戶的溝通都各有不同,從而導致用戶無法將各個公司不同的中間件組裝在一塊爲自己服務。從而產生瓶頸。於是提出標準的概念。其實J2EE就是基於JAVA技術的一系列標準。

注:中間件的解釋 中間件處在操作系統和更高一級應用程序之間。他充當的功能是:將應用程序運行環境與操作系統隔離,從而實現應用程序開發者不必爲更多系統問題憂慮,而直接關注該應用程序在解決問題上的能力 。我們後面說到的容器的概念就是中間件的一種。

二、相關名詞解釋
容器:充當中間件的角色

WEB容器:給處於其中的應用程序組件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接更容器中的環境變量接口交互,不必關注其它系統問題。主要有WEB服務器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵守J2EE規範中的WEB APPLICATION 標準。我們把遵守以上標準的WEB服務器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean 容器。更具有行業領域特色。他提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的接口來獲得系統級別的服務。例如郵件服務、事務管理。

WEB容器和EJB容器在原理上是大體相同的,更多的區別是被隔離的外界環境。WEB容器更多的是跟基於HTTP的請求打交道。而EJB容器不是。它是更多的跟數據庫、其它服務打交道。但他們都是把與外界的交互實現從而減輕應用程序的負擔。例如SERVLET不用關心HTTP的細節,直接引用環境變量session,request,response就行、EJB不用關心數據庫連接速度、各種事務控制,直接由容器來完成。

RMI/IIOP:遠程方法調用/internet對象請求中介協議,他們主要用於通過遠程調用服務。例如,遠程有一臺計算機上運行一個程序,它提供股票分析服務,我們可以在本地計算機上實現對其直接調用。當然這是要通過一定的規範才能在異構的系統之間進行通信。RMI是JAVA特有的。

JNDI:JAVA命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程序在其上面留下自己的索引,從而滿足快速查找和定位分佈式應用程序的功能。

JMS:JAVA消息服務。主要實現各個應用程序之間的通訊。包括點對點和廣播。

JAVAMAIL:JAVA郵件服務。提供郵件的存儲、傳輸功能。他是JAVA編程中實現郵件功能的核心。相當MS中的EXCHANGE開發包。

JTA:JAVA事務服務。提供各種分佈式事務服務。應用程序只需調用其提供的接口即可。

JAF:JAVA安全認證框架。提供一些安全控制方面的框架。讓開發者通過各種部署和自定義實現自己的個性安全控制策略。

EAI:企業應用集成。是一種概念,從而牽涉到好多技術。J2EE技術是一種很好的集成實現。

三、J2EE的優越性
1、 基於JAVA 技術,平臺無關性表現突出

2、 開放的標準,許多大型公司已經實現了對該規範支持的應用服務器。如BEA ,IBM,ORACLE等。

3、 提供相當專業的通用軟件服務。

4、 提供了一個優秀的企業級應用程序框架,對快速高質量開發打下基礎

四、現狀
J2EE是由SUN 公司開發的一套企業級應用規範。現在最高版本是1.4。支持J2EE的應用服務器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。
 
ff2004發表評論於2004-12-14 22:07:37 | 引用


學習Java的30個基本概念
 


Java概述:


目前Java主要應用於中間件的開發(middleware)---處理客戶機於服務器之間的通信技術,早期的實踐證明,Java不適合pc應用程序的開發,其發展逐漸變成在開發手持設備,互聯網信息站,及車載計算機的開發.Java於其他語言所不同的是程序運行時提供了平臺的獨立性,稱許可以在windows,solaris,linux其他操作系統上使用完全相同的代碼.Java的語法與C++語法類似,C++/C程序員很容易掌握,而且Java是完全的徹底的面向對象的,其中提出了很好的GC(Garbage Collector)垃圾處理機制,防止內存溢出.


Java的白皮書爲我們提出了Java語言的11個關鍵特性.


(1)Easy:Java的語法比C++的相對簡單,另一個方面就是Java能使軟件在很小的機器上運行,基礎解釋其和類庫的支持的大小約爲40kb,增加基本的標準庫和線程支持的內存需要增加125kb.


(2)分佈式:Java帶有很強大的TCP/IP協議族的例程庫,Java應用程序能夠通過URL來穿過網絡來訪問遠程對象,由於servlet機制的出現,使Java編程非常的高效,現在許多的大的web server都支持servlet.


(3)OO:面向對象設計是把重點放在對象及對象的接口上的一個編程技術.其面向對象和C++有很多不同,在與多重繼承的處理及Java的原類模型.


(4)健壯特性:Java採取了一個安全指針模型,能減小重寫內存和數據崩潰的可能性。


(5)安全:Java用來設計網路和分佈系統,這帶來了新的安全問題,Java可以用來構建防病毒和防攻擊的System.事實證明Java在防毒這一方面做的比較好.

(6)中立體系結構:Java編譯其生成體系結構中立的目標文件格式可以在很多處理器上執行,編譯器產生的指令字節碼(Javabytecode)實現此特性,此字節碼可以在任何機器上解釋執行.


(7)可移植性:Java中對基本數據結構類型的大小和算法都有嚴格的規定所以可移植性很好.


(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現交給底下操作系統或線程程序完成.所以多線程是Java作爲服務器端開發語言的流行原因之一


(9)Applet和servlet:能夠在網頁上執行的程序叫Applet,需要支持Java的瀏覽器很多,而applet支持動態的網頁,這是很多其他語言所不能做到的.


基本概念:


1.OOP中唯一關係的是對象的接口是什麼,就像計算機的銷售商她不管電源內部結構是怎樣的,他只關係能否給你提供電就行了,也就是隻要知道can or not而不是how and why.所有的程序是由一定的屬性和行爲對象組成的,不同的對象的訪問通過函數調用來完成,對象間所有的交流都是通過方法調用,通過對封裝對象數據,很大限度上提高複用率.


2.OOP中最重要的思想是類,類是模板是藍圖,從類中構造一個對象,即創建了這個類的一個實例(instance)


3.封裝:就是把數據和行爲結合起在一個包中)並對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的實例字段(instance field)


4.通過擴展一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴展而得,根超類下文會做介紹.


5.對象的3個主要特性

behavior---說明這個對象能做什麼.

state---當對象施加方法時對象的反映.

identity---與其他相似行爲對象的區分標誌.

每個對象有唯一的indentity 而這3者之間相互影響.

6.類之間的關係:

use-a :依賴關係

has-a :聚合關係

is-a :繼承關係--例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在於共性中)


7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象並對其初始化.

例:Data類的構造器叫Data

new Data()---構造一個新對象,且初始化當前時間.

Data happyday=new

Data()---把一個對象賦值給一個變量happyday,從而使該對象能夠多次使用,此處要聲明的使變量與對象變量二者是不同的.new返回的值是一個引用.

構造器特點:構造器可以有0個,一個或多個參數

構造器和類有相同的名字

一個類可以有多個構造器

構造器沒有返回值

構造器總是和new運算符一起使用.


8.重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載.編譯器必須挑選出調用哪個方法.


9.包(package)Java允許把一個或多個類收集在一起成爲一組,稱作包,以便於組織任務,標準Java庫分爲許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內.


10.繼承思想:允許在已經存在的類的基礎上構建新的類,當你繼承一個已經存在的類時,那麼你就複用了這個類的方法和字段,同時你可以在新類中添加新的方法和字段.


11.擴展類:擴展類充分體現了is-a的繼承關係. 形式爲:class (子類) extends (基類).


12.多態:在java中,對象變量是多態的.而java中不支持多重繼承.


13.動態綁定:調用對象方法的機制.

(1)編譯器檢查對象聲明的類型和方法名.

(2)編譯器檢查方法調用的參數類型.

(3)靜態綁定:若方法類型爲priavte static final 編譯器會準確知道該調用哪個方法.

(4)當程序運行並且使用動態綁定來調用一個方法時,那麼虛擬機必須調用x所指向的對象的實際類型相匹配的方法版本.

(5)動態綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼.


14.final類:爲防止他人從你的類上派生新類,此類是不可擴展的.


15.動態調用比靜態調用花費的時間要長,


16.抽象類:規定一個或多個抽象方法的類本身必須定義爲abstract例: public abstract string getDescripition


17.Java中的每一個類都是從Object類擴展而來的.


18.object類中的equal和toString方法.equal用於測試一個對象是否同另一個對象相等.toString返回一個代表該對象的字符串,幾乎每一個類都會重載該方法,以便返回當前狀態的正確表示.(toString 方法是一個很重要的方法)


19.通用編程:任何類類型的所有值都可以同object類性的變量來代替.


20.數組列表:ArrayList動態數組列表,是一個類庫,定義在java.uitl包中,可自動調節數組的大小.


21.class類 object類中的getclass方法返回ckass類型的一個實例,程序啓動時包含在main方法的類會被加載,虛擬機要加載他需要的所有類,每一個加載的類都要加載它需要的類.


22.class類爲編寫可動態操縱java代碼的程序提供了強大的功能反射,這項功能爲JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具.能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大.

1.在運行時分析類的能力.

2.在運行時探察類的對象.

3.實現通用數組操縱代碼.

4.提供方法對象.

而此機制主要針對是工具者而不是應用及程序.

反射機制中的最重要的部分是允許你檢查類的結構.用到的API有:

java.lang.reflect.Field 返回字段.

java.reflect.Method 返回方法.

java.lang.reflect.Constructor 返回參數.

方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在後面調用它,而接口是更好的解決方案.

 

23.接口(Interface)說明類該做什麼而不指定如何去做,一個類可以實現一個或多個interface.


24.接口不是一個類,而是對符合接口要求的類的一套規範.若實現一個接口需要2個步驟:

1.聲明類需要實現的指定接口.

2.提供接口中的所有方法的定義.

聲明一個類實現一個接口需要使用implements 關鍵字class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是類,不能用new實例化一個接口.


25.一個類只有一個超類,但一個類能實現多個接口.Java中的一個重要接口Cloneable


26.接口和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發生時回調對象上的方法.例:ActionListener 接口監聽.

類似的API有:java.swing.JOptionPane

java.swing.Timer

java.awt.Tookit


27.對象clone:clone方法是object一個保護方法,這意味着你的代碼不能簡單的調用它.


28.內部類:一個內部類的定義是定義在另一個內部的類

原因是:1.一個內部類的對象能夠訪問創建它的對象的實現,包括私有數據

2.對於同一個包中的其他類來說,內部類能夠隱藏起來.

3.匿名內部類可以很方便的定義回調.

4.使用內部類可以非常方便的編寫事件驅動程序.


29.代理類(proxy):1.指定接口要求所有代碼 2.object類定義的所有的方法(toString equals)


30.數據類型:Java是強調類型的語言,每個變量都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字符型,被用於Unicode編碼中的字符,布爾型.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章