2019最新大唐電信java面試題及答案

2019最新大唐電信java面試題及答案

長沙中公優(yōu)就業(yè)      2022-04-26 14:28:02     11

2019最新大唐電信java面試題及答案,1、Java如何實現(xiàn)多態(tài),實現(xiàn)的主要方法?! ava是借助方法的重寫和重載實現(xiàn)多態(tài)?! ≈剌d的特性,方法名相同.返回類型,傳入方法

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹



1、Java如何實現(xiàn)多態(tài),實現(xiàn)的主要方法。


  java是借助方法的重寫和重載實現(xiàn)多態(tài)。


  重載的特性,方法名相同.返回類型,傳入方法的參數(shù)不同(包括個數(shù)和類型)。


  重寫的特性,方法名相同,返回類型,參數(shù)均相同,必須發(fā)生在子類。



  2、HashtableHashMap有什么區(qū)別,HashMap實現(xiàn)的算法思想,多個任意長度的值進行hash操作,得出的hash值是否相等?


(1)Hashtable是繼承自陳舊的Dictionary類的,HashMap繼承自AbstractMap類同時是Java 1.2引進的Map接口的一個實現(xiàn)。


 ?。?)也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。


 ?。?)第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數(shù)量的條目可以是空的value。這就是說,如果在表中沒有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個空的值,那么get()將返回null。如果有必要,用containKey()方法來區(qū)別這兩種情況。


  (4)HashMap去掉了Hashtable的contains方法,保留了containsValue和containsKey方法。


 ?。?)Hashtable中hash數(shù)組默認大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認大小是16,而且一定是2的指數(shù)。


1)首先HashMap里面實現(xiàn)一個靜態(tài)內(nèi)部類Entry 其重要的屬性有 key , value, next,從屬性key,value我們就能很明顯的看出來Entry就是HashMap鍵值對實現(xiàn)的一個基礎bean,我們上面說到HashMap的基礎就是一個線性數(shù)組,這個數(shù)組就是Entry[],Map里面的內(nèi)容都保存在Entry[]里面。


2)既然是線性數(shù)組,為什么能隨機存取?這里HashMap用了一個小算法,大致是這樣實現(xiàn):


  Java代碼

  

  A:存儲時:


  B:int hash = key.hashCode();--> 這個hashCode方法這里不詳述,只要理解每個key的hash是一個固定的int值


  C:int index = hash % Entry[].length;


  D:Entry[index] = value;


  E:取值時:


  F:int hash = key.hashCode();


    G:int index = hash % Entry[].length;


  H: return Entry[index]



  3、說明inputstream和inputstreamreader的區(qū)別


  InputStream是字節(jié)流


  reader是字符流


  inputstreamreader是將字節(jié)流轉(zhuǎn)換成字符流,是上面兩者的轉(zhuǎn)換類。



  4、 Java實現(xiàn)多線程的方法有哪些?什么情況需實現(xiàn)線程同步,線程同步的方法有哪幾種?


  多線程有兩種實現(xiàn)方法。一種是繼承Thread類,一種是實現(xiàn)Runnable接口!


  在多個線程同時訪問互斥(可交換)數(shù)據(jù)時,應該同步以保護數(shù)據(jù),確保兩個線程不會同時修改更改它。


  同步有兩種方法。一種同步方法,一種同步代碼!分別是synchronized,wait與notify



  5、Xml解析方式有哪幾種,有什區(qū)別?


  Dom解析在內(nèi)存中創(chuàng)建一個DOM樹,該結構通常需要加載整個文檔然后才能做工作。由于它是基于信息層次的,因而DOM被認為是基于樹或基于對象的,樹在內(nèi)存中是持久的,因此可以修改它以便應用程序能對數(shù)據(jù)和結構作出更改能隨機訪問文件內(nèi)容,也可以修改原文件內(nèi)容。


  SAX解析 SAX處理的優(yōu)點非常類似于流媒體的優(yōu)點。分析能夠立即開始,而不是等待所有的數(shù)據(jù)被處理。SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發(fā)一系列的事件,當發(fā)現(xiàn)給定的tag的時候,它可以激活一個回調(diào)方法,告訴該方法制定的標簽已經(jīng)找到。而且,由于應用程序只是在讀取數(shù)據(jù)時檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲在內(nèi)存中。這對于大型文檔來說是個巨大的優(yōu)點線性解析,不能隨機訪問,也無法修改原文件。


  JDOM解析 JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現(xiàn)更快.JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經(jīng)熟悉這些類的Java開發(fā)者的使用。


  DOM4j解析 DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。



  6、使用過的觸發(fā)器有哪幾種?有什么區(qū)別?


  觸發(fā)器是一種特殊類型的存儲過程,主要是通過事件進行觸發(fā)而被執(zhí)行的。


  SQL Server 2000 支持兩種類型的觸發(fā)器:AFTER 觸發(fā)器和INSTEAD OF 觸發(fā)器。其中AFTER 觸發(fā)器即為SQL Server 2000 版本以前所介紹的觸發(fā)器。該類型觸發(fā)器要求只有執(zhí)行某一操作(INSERT UPDATE DELETE)之后,觸發(fā)器才被觸發(fā),且只能在表上定義??梢詾獒槍Ρ淼耐徊僮鞫x多個觸發(fā)器。對于AFTER 觸發(fā)器,可以定義哪一個觸發(fā)器被最先觸發(fā),哪一個被最后觸發(fā),通常使用系統(tǒng)過程sp_settriggerorder來完成此任務。


  INSTEAD OF 觸發(fā)器表示并不執(zhí)行其所定義的操作(INSERT、 UPDATE、 DELETE),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEAD OF 觸發(fā)器,也可以在視圖上定義INSTEAD OF 觸發(fā)器,但對同一操作只能定義一個INSTEAD OF 觸發(fā)器。



  7、Struts和struts2.0有什么區(qū)別,使用時需要注意什么?


  


  class Node {


  //變量


  privateint record;


  //指向下一個對象


  private Node nextNode;


  public Node(int record) {


  super();


  this.record = record;


  }


  publicintgetRecord() {


  return record;


  }


  public void setRecord(int record) {



  this.record = record;


  }


  public Node getNextNode() {


  returnnextNode;


  }


  public void setNextNode(Node nextNode) {


  this.nextNode = nextNode;


  }


  }


  


  public class ReverseSingleList {


  


  public static Node reverse(Node head) {


  if (null == head || null == head.getNextNode()) {


  return head;


  }


  Node reversedHead = reverse(head.getNextNode());


  head.getNextNode().setNextNode(head);


  head.setNextNode(null);


  returnreversedHead;


  }


  


  public static Node reverse2(Node head) {


  if (null == head) {


  return head;


  }


  Node pre = head;


  Node cur = head.getNextNode();


  Node next;


  while (null != cur) {


  next = cur.getNextNode();


  cur.setNextNode(pre);


  pre = cur;


  cur = next;


  }


  //將原鏈表的頭節(jié)點的下一個節(jié)點置為null,再將反轉(zhuǎn)后的頭節(jié)點賦給head


  head.setNextNode(null);


  head = pre;


  return head;


  }


  public static void main(String[] args) {


  Node head = new Node(0);


  Node tmp = null;


  Node cur = null;


  // 構造一個長度為10的鏈表,保存頭節(jié)點對象head


  for (int i = 1; i < 10; i++) {


  tmp = new Node(i);


  if (1 == i) {


  head.setNextNode(tmp);


  } else {


  cur.setNextNode(tmp);


  }


  cur = tmp;


  }


  //打印反轉(zhuǎn)前的鏈表


  Node h = head;


  while (null != h) {


  System.out.print(h.getRecord() + " ");


  h = h.getNextNode();


  }


  //調(diào)用反轉(zhuǎn)方法


  head = reverse2(head);


  System.out.println("n**************************");


  //打印反轉(zhuǎn)后的結果


  while (null != head) {


  System.out.print(head.getRecord() + " ");


  head = head.getNextNode();


  }


  }


  }


  運行:


  C:ex>java ReverseSingleList


  0 1 2 3 4 5 6 7 8 9


  **************************


  9 8 7 6 5 4 3 2 1 0



Java面試題 Java面試題及答案

培訓啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。