99青草青草久热精品视频,亚洲精品乱码久久久久久麻豆,亚洲男人天堂视频,精品一久久,日韩午夜免费视频,尹人香蕉,日韩精品欧美成人

當(dāng)前位置:高考升學(xué)網(wǎng) > 招聘筆試題 > 正文

大唐電信java筆試題和面試題答案目(二)

更新:2023-09-17 03:22:28 高考升學(xué)網(wǎng)

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

  /Action類

  Struts1要求Action類繼承一個(gè)抽象類,Struts1使用抽象類編程而不是接口

  Struts2可以實(shí)現(xiàn)Action接口也可以不實(shí)現(xiàn),Struts2提供一個(gè)ActionSuport基類去實(shí)現(xiàn)常用接口。Action接口不是必須的,任何有execute的標(biāo)識(shí)的POJO都有可能成為struts2的Action的對(duì)象

  /線程模式

  Struts1的Action是單例模式并且是線程安全的,僅有Action一個(gè)實(shí)例來處理所有請(qǐng)求。單策略模式限制了Struts1 Action能做的事。比且在開發(fā)時(shí)要注意Action資源必須是線程

  安全比且是同步的。

  Struts2的Action對(duì)象為每個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例,因此沒有線程安全問題。

  /Servlet依賴

  Struts1 Action依賴與Servlet API,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest和HttpServletResponse被傳遞給execute方法。

  Struts2 Action不依賴與容器,允許Action脫離容器被單獨(dú)測(cè)試。如果需要,struts2依然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。

  /可測(cè)性:

  測(cè)試Struts1 Action的一個(gè)主要問題是execute方法暴漏了Servlet API(這使得測(cè)試要依賴于容器)。一個(gè)第三方擴(kuò)展--Struts TestCase--提供了一套Struts1的模擬對(duì)象(來進(jìn)行測(cè)試)

  struts2 Action可以通過初始化、設(shè)置屬性、調(diào)用方法來測(cè)試,“依賴注入”支持也使測(cè)試更容易。

  /捕獲輸入:

  struts1使用ActionForm對(duì)象捕獲輸入。所有ActionForm必須繼承一個(gè)基類。因?yàn)槠渌鸍avaBean不能用作ActionForm,開發(fā)者經(jīng)常創(chuàng)建多余的基類不或輸入。動(dòng)態(tài)Bean(DynaBeans)可以作為創(chuàng)建傳統(tǒng)ActionForm的選擇,但是,開發(fā)者可能是在重新描述(創(chuàng)建)已經(jīng)存在的JavaBean(仍然會(huì)導(dǎo)致有沉余的JavaBean)。

  Struts2直接使用Acrtion屬性作為輸入屬性,消除了對(duì)第二個(gè)輸入對(duì)象的請(qǐng)求。輸入屬性可能是有自己(子)屬性的Rich對(duì)象類型。Action屬性能過通過web頁面上的Taglibs訪問。struts2也支持ActionForm模式。Richard對(duì)象類型,包括業(yè)務(wù)對(duì)象,能夠用作輸入/輸出對(duì)象。這種ModelDriven特性簡(jiǎn)化了Taglib對(duì)POJO輸入對(duì)象的引用。

  /表達(dá)式語言

  Struts1整合了JSTL,因此使用JSTL EL。這種EL有基本對(duì)象圖遍歷,但是對(duì)集合和索引屬性的支持很脆弱。

  Struts2可以使用JSTL,但是也支持一個(gè)更強(qiáng)大和靈活的表達(dá)式語言--“object graph Notation Language”(OGNL)

  /綁定值到頁面(view)

  Struts1使用標(biāo)準(zhǔn)JSP機(jī)制吧對(duì)象綁定到頁面中來訪問。

  struts2使用ValueStack技術(shù),使taglib能夠訪問值而不需要把你的頁面(view)和對(duì)象綁定起來。ValueStack策略允許通過一系列名稱相同但類型不同的屬性重同頁面(view)

  /類型轉(zhuǎn)換

  Struts1 ActionForm屬性通常都是String類型。struts1使用Commons-Beanutils進(jìn)行類型轉(zhuǎn)換。每個(gè)類一個(gè)轉(zhuǎn)換器,對(duì)每一個(gè)實(shí)例來說是不可配置的

  struts2 使用OGNL進(jìn)行類型轉(zhuǎn)換,提供基本和常用對(duì)象的轉(zhuǎn)換器。

  /效驗(yàn)

  Struts1支持在ActionForm的validate方法中手動(dòng)效驗(yàn),或者通過Commons Validator的擴(kuò)展來效驗(yàn)。同一個(gè)類可以有不同的效驗(yàn)內(nèi)容,但不能效驗(yàn)子對(duì)象。

  Struts2支持通過validate方法和XWork效驗(yàn)框架進(jìn)行效驗(yàn)。XWork效驗(yàn)框架使用為屬性類類型定義的效驗(yàn)和內(nèi)容效驗(yàn),來支持Chain效驗(yàn)子屬性。

  /Action執(zhí)行的控制

  Struts1支持每一個(gè)模塊有單獨(dú)的Request Processors(生命周期),但是模塊中的所有Action必須共享相同的生命周期。

  struts2支持通過攔截器堆棧(Interceptor Stacks)為每一個(gè)Action創(chuàng)建不能的生命周期。堆棧能夠根據(jù)需要和不同的Action一起使用。

  10. 使用Java定義一個(gè)單鏈表結(jié)構(gòu),編程實(shí)現(xiàn)對(duì)定義的單鏈表結(jié)構(gòu)的反轉(zhuǎn)。

  /

   @author luochengcheng

   定義一個(gè)單鏈表

  /

  class Node {

  //變量

  privatEint record;

  //指向下一個(gè)對(duì)象

  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;

  }

  }

  /

   @author luochengcheng

   兩種方式實(shí)現(xiàn)單鏈表的反轉(zhuǎn)(遞歸、普通)

   新手強(qiáng)烈建議旁邊拿著紙和筆跟著代碼畫圖(便于理解)

  /

  public class ReverseSingleList {

  /

   遞歸,在反轉(zhuǎn)當(dāng)前節(jié)點(diǎn)之前先反轉(zhuǎn)后續(xù)節(jié)點(diǎn)

  /

  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;

  }

  /

   遍歷,將當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)緩存后更改當(dāng)前節(jié)點(diǎn)指針

  

  /

  public static Node reverse2(Node head) {

  if (null == head) {

  return head;

  }

  Node P = head;

  Node cur = head.getNextNode();

  Node next;

  while (null != cur) {

  next = cur.getNextNode();

  cur.setNextNode(P);

  P = cur;

  cur = next;

  }

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

  head.setNextNode(null);

  head = P;

  return head;

  }

  public static void main(String[] args) {

  Node head = new Node(0);

  Node tmp = null;

  Node cur = null;

  // 構(gòu)造一個(gè)長(zhǎng)度為10的鏈表,保存頭節(jié)點(diǎn)對(duì)象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)后的結(jié)果

  while (null != head) {

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

  head = head.getNextNode();

  }

  }

  }

  運(yùn)行:

  C:\ex>java ReverseSingleList

  0 1 2 3 4 5 6 7 8 9

  

  9 8 7 6 5 4 3 2 1 0

  11. 如何比較2個(gè)超大數(shù)組是否相等,要求時(shí)間復(fù)雜度O(n)(寫出思路)

  12. 現(xiàn)有8個(gè)硬幣和一個(gè)天平,其中有一個(gè)硬幣比其他的輕,最少需要幾次能找到該硬幣,如何實(shí)現(xiàn),寫出思路。

最新圖文

2020年河北新聞網(wǎng)兩學(xué)一做

時(shí)間:2023-09-18 07:0:24

2020年河北新聞網(wǎng)兩學(xué)一做

時(shí)間:2023-09-15 11:0:59

兩學(xué)一做學(xué)習(xí)教育知

時(shí)間:2023-09-21 06:0:30

2020年開展兩學(xué)一做學(xué)習(xí)教

時(shí)間:2023-09-19 21:0:30