球探球探网足球手机 > hot資訊 > Java程序員面試復習習題

球探网足球前瞻分析:Java程序員面試復習習題

更新時間:2019-06-28 09:58 瀏覽2905次 來源:動力節點

球探球探网足球手机 www.607737.live   Java基礎知識


  面向對象的特征:


  抽象,封裝、繼承、多態


  面向對象的特征


  1.抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。


  2.繼承:繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。


  3.封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受?;さ慕涌詵夢勢淥韻?。


  4.多態性:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。


  intInteger的區別:


  Java提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。


  原始類型封裝類


  booleanBoolean


  charCharacter


  byteByte


  shortShort


  intInteger


  longLong


  floatFloat


  doubleDouble


  引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的缺省值。對象引用實例變量的缺省值為null,而原始類型實例變量的缺省值與它們的類型有關。


  String類和StringBuffer類的區別


  它們都是處理字符串的類,但是它們有一個最大的區別,那就是,String對象是存儲你不能改動的文本字符


  串,相反,如果你希望改動,則應使用StringBuffer類作為替換


  StringBuffer是可變的而String是不可變的.


  而且String用得多個的話會占用不同的內存.


  如:Stringstr=“bb”;


  str=“aa”;


  前一個bb的內存地址不變,當又給它賦值為aa時它又指向aa的地址.


  而StringBuffer就不會這樣.


  :”==”比較的是兩個對象的地址,”equals()”比較的是兩個對象的值.


  集合


  Collection層次結構中的根接口


  Collection表示一組對象,這些對象也稱為collection的元素


  Java集合的缺點:類型未知


  總的說來,JavaAPI中所用的集合類,都是實現了Collection接口,他的一個類繼承結構如下:


  Collection


  Collection


  Collection


  Collection


  Collection


  Collection


  List是基于Array,可以有重復的值


  Vector:基于Array的List很重要的一點就是Vector“sychronized”的,這個也是Vector和ArrayList的唯一的區別


  ArrayList:基于Array上的鏈表,但是不同的是ArrayList不是同步的


  LinkedList:它不是基于Array的,所以不受Array性能的限制。它每一個節點(Node)都包含兩方面的內容:1.節點本身的數據(data);2.下一個節點的信息(nextNode)。所以當對LinkedList做添加,刪除動作的時候就不用像基于Array的List一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了。這就是LinkedList的優勢


  HashSet:雖然Set同List都實現了Collection接口,但是他們的實現方式卻大不一樣。List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別。HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲


  Set總結:


  1.Set實現的基礎是Map(HashMap);


  2.Set中的元素是不能重復的,如果使用add(Objectobj)方法添加已經存在的對象,則會覆蓋前面的對象;


  性能時Map所要面對的一個大問題。如果你知道get()時怎么工作的,你就會發覺(比方說)在ArrayList里面找對象會是相當慢的。而這正是HashMap的強項。它不是慢慢地一個個地找這個鍵,而是用了一種被稱為hashcode的特殊值來進行查找的。散列(hash)時一種算法,它會從目標對象當中提取一些信息,然后生成一個表示這個對象的“相對獨特”的int。hashCode()是Object根類的方法,因此所有Java對象都能生成hashcode。HashMap則利用對象的hashCode()來進行快速的查找。這樣性能就有了急劇的提高。


  設計模式方面


  1、開發中都用到了那些設計模式用在什么場合


  答:每個模式都描述了一個在我們的環境中不斷出現的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需再重復相同的工作。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。


  2、UML方面


  答:標準建模語言UML。用例圖,靜態圖(包括類圖、對象圖和包圖),行為圖,交互圖


  (順序圖,合作圖),實現圖,


  1、概述struts,以及struts如何實現MVC架構的


  答:strutsframework是一種基于java的技術,Web應用程序開發人員通過strutsframework即可充分利用面向對象設計、代碼重用以及“編寫一次、到處運行”的優點。Struts提供了一種創建Web應用程序的框架,其中對應用程序的顯示、表示和數據的后端代碼進行了抽象。Struts采用jsp作為MVC的視圖,由ActionServlet具體指定的action動作類作為控制器即MVC中的C,負責視圖與模型之間的交互??刂破韉拿扛鋈肟詰愣加擅猻truts-config.xml的配置文件設置。該文件把來自視圖的請求映射為特定的JAVA類以進行相應的處理,控制器還指定下一個視圖的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封裝數據和業務邏輯。


  Struts的處理流程:


  控制器進行初始化工作,讀取配置文件,為不同的Struts??槌跏薊嚶Φ腗odulConfig對象。


  控制器接收Http請求,并從ActionConfig中找出對應于該請求的Action子類,如果沒有對應的Action,控制器直接將請求轉發給JSP或者靜態頁面,否則控制器將請求分發至具體的Action類進行處理。


  在控制器調用具體的Action的Execute方法之前,ActionForm對象將利用Http請求中的參數來填充自已?;箍梢栽贏ctionForm類中調用Validate方法來檢查請求參數的合法性,并且可以返回一個包含所有錯誤信息的ActionErrors對象。


  執行具體的的Execute的方法,它負責執行相應的業務邏輯。執行完后,返回一個ActionForward對象,控制器通過該ActionForward對象來進行轉發工作。也可以把Action要處理的業務邏輯封裝在JavaBean中,如果系統中還有EJB,那么通過JavaBean調用EJB以完成業務處理;如果沒有EJB,那么就直接在JavaBean中連接數據庫,進行數據庫相關的操作。


  2、概述MVC體系結構


  答:MVC包括三類對象,model是應用對象,view是視圖,controller是控制器,它定義用戶界面對用戶輸入的響應方式。


  在MVC體系中,模型通常被稱為“業務邏輯”,是真正完成任務的代碼,視圖就是使用界面,反映數據的變化??刂破骺刂譜拍P禿褪油賈淶慕換ス?,它決定著向用戶返回怎樣的視圖、檢查通過界面輸入的信息以及選擇處理輸入信息的模型


  在MVC中,表示層和邏輯層分離,各部分可相互獨立進行開發,便于開發和維護,提高了開發效率。


  3、多線程的優點


  答:可分兩方面來答:


  相對于單線程而言:


  可以響應多任務的并發操作。


  多線程取消了主循環和輪流檢測機制,一個線程可以暫停而不阻止系統其他的部分的執行,而且當程序中一個線程阻塞時,只有那個被阻塞的線程暫停,所有其他的線程繼續執行。


  相對于進程而言:(可以答也可以不答)


  它所要求的開銷比較小,轉換成本較小。


  所有線程共享同一地址空間,相互協作。


  彼此之間通信很容易。


  4、用java訪問Oracle數據庫、取得記錄并輸出到界面


  答:……………………..


  Class.forName(“oracle.jdbc.driver.OracleDriver”);


  Connectionconn=DriverManager.getConnection(url,username,password);


  Statementstmt=conn.createStatement();


  Stringstr=”select*from[table]”;


  ResultSetrs=stmt.executeQuery(str);


  While(rs.next())


  {


  ……………………


  }


  rs.close();


  stmt.close();


  conn.close();


  5、概述java垃圾回收機制


  答:它的工作原理如下:


  當不存在對一個對象的引用時,我們就假定不再需要那個對象,那個對象所占有的存儲單元可以被收回,可通過System.gc()方法回收,但一般要把不再引用的對象標志為null為佳。


  6、java類是否可以多繼承,怎么實現多繼承


  答:java沒有多繼承,但可以通過接口的形式來達到多繼承的目地。


  7、面向對象的特點


  答:面向對象有三大特點:封裝、繼承、多態。(如果要回答四個,可加上抽象性這一特點)


  9、接口有什么優點


  答:接口有以下優點:


  接口只是一個框架而沒有實現,因此在接口定義時不需要考慮接口中的方法如何實現。


  利用接口可達到實現多繼承的目地。


  可以在不暴露對象的類的前提下,暴露對象的編程接口。


  不用強迫類關系在無關類中截獲相似處(采用適配器就可以了)。


  聲明想執行的一個或多個方法。


  10、ArrayList與Vector的區別


  答:主要從兩個方面來說明:


  安全、效率方面


  如果要實現同步安全,則要用Vector,否則則用ArrayList,因為ArrayList不考慮同步安全的問題,所以效率要高些。


  資源方面


  當兩者的容量已滿時,它們都會自動增長其容量,但Vector是按其容量的一倍增長,而ArrayList則按其容量的50%增加,所以Vector更能節省資源。


  11、MVC結構在Jtable中怎樣實現的,這種結構有什么好處


  答、在Jtable中不存儲它的單元數據,它的所有實例把它們的單元值交給實現了TableModel接口的對象來維護和管理,所以在MVC結構中,Jtable的表格主要體現了一個V的作用,其表格將數據變化體現出來,而數據模型則體現了M的作用,封裝數據和業務邏輯。


  注:詳細解說見第二題


  12、在控制臺中輸入一個字符串,然后按照逆序打印出來


  答:importjava.io.*;


  publicclasstest{


  publicstaticvoidmain(Stringargs[]){


  StringA=””;


  StringB=””;


  StringC=””;


  Try{


  BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));


  If((B=br.readLine())!=null){


  A=A+B;


  }


  for(intI=str.length()-1;I>=0;I–){


  C=C+A.substring(I,I+1);


  }


  System.out.println(C);


  }


  catch(Exceptione){


  System.out.println(e.getMessage());


  }


  }


  }


  13、java是否存在內存泄露


  答:存在,當一個對象引用另一對象后,當另一對象為空時,會出現內存泄露。


  14、String類的值是否可以改變


  答:String類的值在初始后不能改變,如果要改變,可轉換為StringBuffer類,這個類的值是可以動態改變的。(這里主要考String和StringBuffer的區別)


  17、java有幾種修飾符默認的是什么


  答:(注:修飾符是影響類、變量及成員方法的生存空間和可訪問性的關鍵字)


  修飾符類成員方法成員變量局部變量


  abstract√√--


  static-√√-


  public√√√-


  protected-√√-


  private-√√-


  privateprotected-√√-


  synchronized-√--


  native-√--


  volatile--√-


  final√√√-


  transient--√√


  以下是訪問控制修飾符:默認為friendly


  修飾符同類同包子孫類不同包


  public√√√√


  protected√√√-


  friendly√√--


  private√---


  18、toString方法的概述


  答:因為每個類都繼承了Object類,所以都實現了toString()方法。


  通過toString()方法可以決定所創建對象的字符串表達形式。


  19、Object類的概述


  答:Object類是所有其他的類的超類,Object的一個變量可以引用任何其他類的對象。因為數組是作為類實現的,所以Object的一個變量也可以引用任何數組,它包括以下幾種方法:


  clone()equals()finalize()getClass()hashCode()notify()notifyAll()toString()wait()


  20、java特點


  答:java具有以下幾個主要特點:


  簡單性


  面向對象:JAVA是完全面向對象的,它支持靜態和動態風格的代碼繼承及重用


  分布式:包括數據分布和操作分布


  健壯性:java系統仔細檢測對內存的每次訪問,確認它是否合法,而且在編譯和運行程序時,都要對可能出現的問題進行檢查,以消除錯誤的產生。


  結構中立


  安全性:java不支持指針,一切對內存的訪問都必須通過對象的實例變量來實現,這樣就防止程序員使用木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產生的錯誤。


  與平臺無關:java寫的應用程序不用修改就可在不同的軟硬平臺上運行。平臺無關性有兩種:源代碼級和目標代碼級。Java主要靠JAVA虛擬機在目標代碼級上實現平臺無關性


  解釋執性:運行JAVA程序時,它首先被編譯成字節代碼,字節代碼非常類似機器碼,執行效率非常高。


  高性能


  多性程


  動態性:它允許程序動態的裝入運行時需要的類。


  21、什么叫抽象類抽象類跟接口有什么區別為什么引進數據接口概念


  答:具有關鍵字abstract,在實現內容上沒有完全定義的類就叫抽象類。


  抽象類和接口的區別如下:


 ?、僭誒嗬醇壇諧橄罄嗍?,只需實現部分具體方法和全部抽象方法,而實現接口則要實現里面的全部方法。


 ?、讜誚涌謚形蕹稍北淞?,而抽象類中可有成員變量。


  在Java中引進接口主要是為了解決多繼承的問題。


  22、doGet與doPut的區別


  答:doPut會把地址作為一個文件寫到服務器,而doGet不會,而只顯示在地址欄。


  23、多線程實現有那幾種方法,同步有哪幾種方法


  答:實現同步主要有兩種方法:1.synchronized2.waitnotify


  實現多線程主要繼承Thread類和實現Runnable接口。


  24、JSP頁面的跳轉


  答:jsp頁面實現跳轉主要有jsp:forward和sendRedirect兩種方法


  jsp:forward:在本容器內跳轉。跳轉后,地址欄地址不變。效率高。跳轉后立即結束本頁的內容。


  sendRedirect:在容器之間的跳轉,跳轉后地址欄地址為跳轉后的地址,效率較低。


  通常采用jsp:forward方式跳轉。


  25、類變量的初始化


  答:在Java中類變量在局部中一定要初始化,因為局部變量會覆蓋全局變量,否則會報錯:變量未初始化。全局變量則可以不初始化,而到具體的內部方法或其他的類成員中初始化。


  26、數組的定義


  答:數組是作為一種對象實現的。數組元素可以包含作何類型值,但數組里面的每個元素的類型必須一致創建數組步聚如下:


  聲明


  構造


  初始化


  27、Hastable與HashMap的區別


  答:Hashtable和Hashmap的主要區別如下:


  Hashtable是同步的,而HashMap不是同步的。所以不要求同步的時候,用HashMap的效率較高


  Hashtable版本較HashMap版本低。


  28、說明List和Set的區別


  答:兩者主要區別如下:


  List用來處理序列,而Set用來處理集。


  List中的內容可以重復,而Set則不行。


  


熱門課程推薦

全部班型支持免費試學

動力節點在線報名表(此信息已加密,請放心填寫)

返回頂部
{ganrao} 网上赚钱平台 真实捕鱼游戏 gpk捕鱼漏洞 德甲直播在线 微乐贵阳麻将辅助软件神器 大唐棋牌官方下载地址 北京赛车pk10一天几期 管家婆六肖期期中 钱龙捕鱼游戏技巧大全 四川血战麻将免费下载 免费四川麻将血战到 好玩棋牌下载 体彩顶呱刮票种大全 用手机就能赚钱的兼职 黄大仙论坛精选六肖王中王 电玩千炮捕鱼游戏下载