• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 上汽集團(tuán)Java開(kāi)發(fā)筆試題目

        時(shí)間:2023-04-03 04:35:05 筆試題目 我要投稿
        • 相關(guān)推薦

        上汽集團(tuán)Java開(kāi)發(fā)筆試題目

          一、J2EE(總分20分。每題2分)

        上汽集團(tuán)Java開(kāi)發(fā)筆試題目

          簡(jiǎn)述String和StringBuffer的區(qū)別。

          String 對(duì)一串字符進(jìn)行操作。不可變。一旦被創(chuàng)建,就不能修改它的值。

          StringBuffer 也是對(duì)一串字符進(jìn)行操作,但是可變類(lèi)。

          運(yùn)行時(shí)異常(RuntimeException)與一般異常有何不同?

          一般異常是可捕捉到的。運(yùn)行時(shí)異常是不可預(yù)知的異常。

          Sleep()和wait()有什么區(qū)別?

          sleep是線程類(lèi)(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,把執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。

          wait().會(huì)釋放鎖

          實(shí)現(xiàn)多線程有幾種方法?

          三種,

          1.繼承Thread類(lèi),重寫(xiě)run函數(shù)

          2.實(shí)現(xiàn)Runnable接口,重寫(xiě)run函數(shù)

          3.實(shí)現(xiàn)Callable接口,重寫(xiě)call函數(shù)

          簡(jiǎn)述線程的基本狀態(tài)及狀態(tài)之間的關(guān)系。

          Thread.ThreadState 屬性提供一個(gè)位掩碼,用它指示線程的當(dāng)前狀態(tài)。一個(gè)線程至少總是處于 ThreadState 枚舉中一個(gè)可能狀態(tài),并且可以同時(shí)處于多個(gè)狀態(tài)。

          一旦線程由于調(diào)用 Thread.Start 而離開(kāi) Unstarted 狀態(tài),則它將永遠(yuǎn)無(wú)法返回到 Unstarted 狀態(tài)。同樣,線程也永遠(yuǎn)無(wú)法離開(kāi) Stopped 狀態(tài)。

          什么是線程同步,何如實(shí)現(xiàn)線程的同步?

          當(dāng)兩個(gè)或多個(gè)線程需要訪問(wèn)同一資源時(shí),它們需要以某種順序來(lái)確保該資源某一時(shí)刻只能被一個(gè)線程使用的方式稱(chēng)為同步。要想實(shí)現(xiàn)同步操作,必須要獲得每一個(gè)線程對(duì)象的鎖。獲得它可以保證在同一時(shí)刻只有一個(gè)線程訪問(wèn)對(duì)象中的共享關(guān)鍵代碼,并且在這個(gè)鎖被釋放之前,其他線程就不能再進(jìn)入這個(gè)共享代碼。此時(shí),如果還有其他線程想要獲得該對(duì)象的鎖,只得進(jìn)入等待隊(duì)列等待。只有當(dāng)擁有該對(duì)象鎖的線程退出共享代碼時(shí),鎖被釋放,等待隊(duì)列中第一個(gè)線程才能獲得該鎖,從而進(jìn)入共享代碼區(qū)。

          JSP或Servlet中的forward和redirect有什么區(qū)別?

          forward是服務(wù)器內(nèi)部重定向,程序收到請(qǐng)求后重新定向到另一個(gè)程序,客戶(hù)機(jī)并不知道;redirect則是服務(wù)器收到請(qǐng)求后發(fā)送一個(gè)狀態(tài)頭給客戶(hù),客戶(hù)將再請(qǐng)求一次,這里多了兩次網(wǎng)絡(luò)通信的來(lái)往。redirect 是送到客戶(hù)端后再一次 request , 所以資料不被保留.

          簡(jiǎn)述JDBC調(diào)用數(shù)據(jù)庫(kù)的基本步驟。

          1,加載驅(qū)動(dòng)

          2,創(chuàng)建連接

          3,獲取語(yǔ)句對(duì)象

          4,執(zhí)行sql語(yǔ)句

          5,如果是查詢(xún),還可以使用結(jié)果集

          6,關(guān)閉連接

          7,捕捉和處理異常

          簡(jiǎn)述Servlet的生命周期。

          Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的do方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷(xiāo)毀的時(shí)候調(diào)用其destroy方法。

          二、算法(總共20分)

          請(qǐng)列舉幾種排序算法,并用JAVA實(shí)現(xiàn)快速排序算法。(6分)

          冒泡排序,快速排序,shaker排序,堆排序。

          public void quick(Integer[] str) {

          if (str.length > 0) { //查看數(shù)組是否為空

          _quickSort(str, 0, str.length – 1);

          }

          }

          public void _quickSort(Integer[] list, int low, int high) {

          if (low < high) {

          int middle = getMiddle(list, low, high); //將list數(shù)組進(jìn)行一分為二

          _quickSort(list, low, middle – 1); //對(duì)低字表進(jìn)行遞歸排序

          _quickSort(list, middle + 1, high); //對(duì)高字表進(jìn)行遞歸排序

          }

          }

          public int getMiddle(Integer[] list, int low, int high) {

          int tmp = list[low]; //數(shù)組的第一個(gè)作為中軸

          while (low < high) {

          while (low < high && list[high] > tmp) {

          high–;

          }

          list[low] = list[high]; //比中軸小的記錄移到低端

          while (low < high && list[low] < tmp) {

          low++;

          }

          list[high] = list[low]; //比中軸大的記錄移到高端

          }

          list[low] = tmp; //中軸記錄到尾

          return low; //返回中軸的位置

          }

          用Java實(shí)現(xiàn)二叉樹(shù)前序遍歷、中序遍歷和后序遍歷。(8分)

          public class Tree {

          private int data;// 數(shù)據(jù)節(jié)點(diǎn)

          private Tree left;// 左子樹(shù)

          private Tree right;// 右子樹(shù)

          public Tree(int data) {

          this.data = data;

          this.left = null;

          this.right = null;

          }

          /**

          * 創(chuàng)建二叉樹(shù),返回根結(jié)點(diǎn)

          */

          public static Tree createTree(int[] input) {

          Tree root = null;

          Tree temp = null;

          for (int i = 0; i < input.length; i++) {

          // 創(chuàng)建根節(jié)點(diǎn)

          if (root == null) {

          root = temp = new Tree(input[i]);

          } else {

          // 回到根結(jié)點(diǎn)

          temp = root;

          // 添加節(jié)點(diǎn)

          while (temp.data != input[i]) {

          if (input[i] <= temp.data) {

          if (temp.left != null) {

          temp = temp.left;

          } else {

          temp.left = new Tree(input[i]);

          }

          } else {

          if (temp.right != null) {

          temp = temp.right;

          } else {

          temp.right = new Tree(input[i]);

          }

          }

          }

          }

          }

          return root;

          }

          /**

          * 前序遍歷

          */

          public static void preOrder(Tree tree) {

          if (tree != null) {

          System.out.print(tree.data + “”);

          preOrder(tree.left);

          preOrder(tree.right);

          }

          }

          /**

          * 中序遍歷

          */

          public static void midOrder(Tree tree) {

          if (tree != null) {

          midOrder(tree.left);

          System.out.print(tree.data + “”);

          midOrder(tree.right);

          }

          }

          /**

          * 后序遍歷

          */

          public static void posOrder(Tree tree) {

          if (tree != null) {

          posOrder(tree.left);

          posOrder(tree.right);

          System.out.print(tree.data + “”);

          }

          }

          /**

          * 求二叉樹(shù)的深度

          */

          public static int length(Tree tree){

          int depth1;

          int depth2;

          if(tree == null) return 0;

          //左子樹(shù)的深度

          depth1 = length(tree.left);

          //右子樹(shù)的深度

          depth2 = length(tree.right);

          if(depth1>depth2)

          return depth1+1;

          else

          return depth2+1;

          }

          public static void main(String[] args) {

          int[] input = { 4, 2, 6, 1, 3, 5, 7,8,10 };

          Tree tree = createTree(input);

          System.out.print(“前序遍歷:“);

          preOrder(tree);

          System.out.print(“\n中序遍歷:“);

          midOrder(tree);

          System.out.print(“\n后序遍歷:“);

          posOrder(tree);

          }

          }

          三、閱讀代碼,并回答問(wèn)題(6分)

        Public String listToString( Vector strList) {

        String str = new String();

        SortedSet set = new TreeSet();

        set.addAll(strList)

        for(Iterator iter=set.iterator(); iter.hasNext();

        String currStr = (String) iter.next();

        Str += currStr + “;”;

        }

        return str;

          問(wèn)題1:

          這段代碼完成什么功能?如果輸入列表{“To” , “SAIC” , “Welcome”},輸入結(jié)果是什么?

          數(shù)組元素拼接。TreeSet是按字母順序存儲(chǔ)的,結(jié)果是:SAIC;To;Welcome;

          問(wèn)題2這段代碼中有什么地方有錯(cuò)誤或者可以改善的地方嗎?

          錯(cuò)誤:for(Iterator iter=set.iterator(); iter.hasNext();后面缺少“)”

          改善:拼接到最后時(shí),最后一個(gè)分號(hào)應(yīng)去掉。

          四、設(shè)計(jì)模式(總分10分,每題5分)

          編程實(shí)現(xiàn)設(shè)計(jì)模式:Singleton(單例模式)。

          class Singleton {

          private static Singleton s;

          private Singleton(){

          }

          public static Singleton getSigleton()

          {

          if(s==null)s=new Singleton();

          return s;

          }

          }

          畫(huà)出抽象工廠(Abstract Factory)的UML類(lèi)圖。

          五、數(shù)據(jù)庫(kù)(總分20分)

          SOL查詢(xún)語(yǔ)句的左外連接、右外連接、全外連接、內(nèi)聯(lián)接之間的區(qū)別。

          左外連接的結(jié)果集包括LEFT OUTER子句中指定的左表的所有行,而不僅僅是連接列所匹配的行

          右外連接是左向外連接的反向連接。將返回右表的所有行。

          全外連接返回左表和右表中的所有行。當(dāng)某行在另一個(gè)表中沒(méi)有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)值。

          內(nèi)連接使用比較運(yùn)算符根據(jù)每個(gè)表共有的列的值匹配兩個(gè)表中的行。

          舉例說(shuō)明GROUP BY 和HAVING 子句的意義和使用方法。

          每個(gè)部門(mén)有多少人

          就要用到GROUP BY

          select DepartmentID as ‘部門(mén)名稱(chēng)‘,

          COUNT(*) as ‘個(gè)數(shù)‘ from BasicDepartment group by DepartmentID

          顯示每個(gè)地區(qū)的總面積.僅顯示那些面積超過(guò)1000000的地區(qū)。

          SELECT region, SUM(area)

          FROM bbc

          GROUP BY region

          HAVING SUM(area)>1000000

          IN和 EXISTS的區(qū)別(4分)

          比如in(1,2) 就是 = 1 or = 2的一種簡(jiǎn)單寫(xiě)法,所以一般在元素少的時(shí)候使用IN,如果多的話就用exists指定一個(gè)子查詢(xún)。

          編寫(xiě)SQL語(yǔ)句

          為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表。

          S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學(xué)號(hào)、

          學(xué)員姓名、所屬單位、學(xué)員年齡

          C(C#,CN)C#,CN分別代表課程編號(hào),課程名稱(chēng)。

          SC(S#,C#,G)S#,C#,G 分別代表學(xué)號(hào),課程編號(hào)、學(xué)習(xí)成績(jī)

          問(wèn)題1:使用標(biāo)準(zhǔn)嵌套SQL語(yǔ)句查詢(xún)選修課程名稱(chēng)為“稅收基礎(chǔ)“的學(xué)員學(xué)號(hào)和姓名。

          Select

          ssc s#, ssc.sn

          from c

          left join

          ( select s.*,sc.c#

          From sc

          Left join s

          on s.s#=sc.s#

          ) as ssc

          on ssc.c#=c.c#

          where c.cn=’稅收基礎(chǔ)‘

          問(wèn)題2:查詢(xún)選修課程為“C2″的所有學(xué)員的學(xué)號(hào)、姓名、所屬單位、成績(jī),并按照所屬單位升序、成績(jī)降序排列。

          select sc.c#,s.sn,s.sd,sc.g

          From sc

          Left join s

          on s.s#=sc.s#

          where c. c#=’ C2′

          order by s.sd asc,sc.g.desc

          問(wèn)題3:查詢(xún)所有學(xué)員選修課程的數(shù)量,列出學(xué)號(hào)、姓名、所選課程數(shù),并按照課程數(shù)降序排列。

          Select sc.s#,s.sn, sc.count

          (

          select count(s#) as count,s#

          from sc

          group by sc.s#

          ) sc

          Left join s

          on s.s#=sc.s#

          order by sc.count desc

          問(wèn)題4:查詢(xún)選修課程數(shù)超過(guò)5次學(xué)員的學(xué)號(hào)、姓名、所屬單位、所選課程數(shù),并按照學(xué)號(hào)升序排列。

          SELECT

          S#,

          SN,

          SD,

          (SELECTCOUNT(DISTINCT C#)FROM SC

          Where S#=s. S#

          ) as count

          FROM S

          WHERE S# IN(

          SELECT [S#] FROM SC

          GROUP BY [S#]

          HAVING COUNT(DISTINCT [C#])>5)

          六、框架(總分30分)

          JSF

          以JSF為例簡(jiǎn)述MVC設(shè)計(jì)模式。

          簡(jiǎn)述JSF請(qǐng)求處理三命周期

          1. 恢復(fù)視圖

          2. 應(yīng)用請(qǐng)求的值;處理驗(yàn)證

          3. 更新模型值;處理事件

          4. 調(diào)用程序;處理事件

          5. 進(jìn)行響應(yīng);處理事件

          JSF中的Backing Bea是干什么用的?

          Backing bean定義了頁(yè)面上的UI組件的屬性和處理邏輯。每一個(gè)backing bean的屬性對(duì)應(yīng)一個(gè)組件或者組件的值。Backing bean同時(shí)定義了一組執(zhí)行組件功能的方法,比如驗(yàn)證組件的數(shù)據(jù),處理組件觸發(fā)的事件,當(dāng)組件activate時(shí)處理與導(dǎo)航相關(guān)的操作。

          JSF中的Converter是干什么用的?

          輸入變換:在用戶(hù)提交時(shí)對(duì)用戶(hù)輸入值進(jìn)行變換

          輸出變換:在畫(huà)面顯示前對(duì)顯示值進(jìn)行變換

          JSF中的Validator是干什么用的?

          對(duì)用戶(hù)輸入的數(shù)據(jù)進(jìn)行驗(yàn)證。

          簡(jiǎn)述Value-change Events、Action Events、Data Mooel Events、Phase Events。

          值改變事件,動(dòng)作事件,數(shù)據(jù)模型事件,階段事件

          JSF Request Processing Lifecycle 的六個(gè)階段。

          回復(fù)畫(huà)面(Restore View)

          套用申請(qǐng)值(Apply Request Values)

          執(zhí)行驗(yàn)證(Process Validations)

          更新模型值(Update Model Values)

          喚起應(yīng)用程序(Invoke Application)

          繪制回應(yīng)(Render Response)

          CommandButton 的immediate屬性起什么作用?

          JSF視圖組件在取得請(qǐng)求中該取得的值之后,即立即處理指定的事件,而不再進(jìn)行后續(xù)的轉(zhuǎn)換器處理、驗(yàn)證器處理、更新模型值等流程。

          的用途

          將封裝在內(nèi)的元件作為一個(gè)元件來(lái)看待

          的用途

          想要放入非JSF元件,例如簡(jiǎn)單的模板(template)文字,那么就需要使用 標(biāo)簽來(lái)處理。

          Spring

          簡(jiǎn)述依賴(lài)注入(Dependency Injeciton,DI)和控制反轉(zhuǎn)(Inversion ofControl,IOC )的基本概念。

          依賴(lài)注入DI是一個(gè)程序設(shè)計(jì)模式和架構(gòu)模型,

          一些時(shí)候也稱(chēng)作控制反轉(zhuǎn),盡管在技術(shù)上來(lái)講,依賴(lài)注入是一個(gè)IOC的特殊實(shí)現(xiàn),依賴(lài)注入是指一個(gè)對(duì)象應(yīng)用另外一個(gè)對(duì)象來(lái)提供一個(gè)特殊的能力,例如:把一個(gè)數(shù)據(jù)庫(kù)連接已參數(shù)的形式傳到一個(gè)對(duì)象的結(jié)構(gòu)方法里面而不是在那個(gè)對(duì)象內(nèi)部自行創(chuàng)建一個(gè)連接。控制反轉(zhuǎn)和依賴(lài)注入的基本思想就是把類(lèi)的依賴(lài)從類(lèi)內(nèi)部轉(zhuǎn)化到外部以減少依賴(lài)

          應(yīng)用控制反轉(zhuǎn),對(duì)象在被創(chuàng)建的時(shí)候,由一個(gè)調(diào)控系統(tǒng)內(nèi)所有對(duì)象的外界實(shí)體,將其所依賴(lài)的對(duì)象的引用,傳遞給它。也可以說(shuō),依賴(lài)被注入到對(duì)象中。所以,控制反轉(zhuǎn)是,關(guān)于一個(gè)對(duì)象如何獲取他所依賴(lài)的對(duì)象的引用,這個(gè)責(zé)任的反轉(zhuǎn)。

          簡(jiǎn)述AOP基本概念(Advice、Joinpoint、Polntcut、Aspect)以及在Spring AOP實(shí)現(xiàn)的特點(diǎn)和局限。

          Advice:用于定義攔截行為

          JoinPoint:提供訪問(wèn)當(dāng)前被通知方法的目標(biāo)對(duì)象、代理對(duì)象、方法參數(shù)等數(shù)據(jù)

          Polntcut:捕獲所有的連接點(diǎn)在指定的方法執(zhí)行中,包括執(zhí)行方法本身

          Aspect:切入點(diǎn)指示符用來(lái)指示切入點(diǎn)表達(dá)式目的。

          Spring Autorwiring by name 和Autowiring by type是什么意思?

          byType是通過(guò)類(lèi)型在“MyIdProviderManager”類(lèi)里找屬性名字為“myIdProviderManager”的對(duì)象,然后為其注入

          byName是通過(guò)名稱(chēng)找的。

        【上汽集團(tuán)Java開(kāi)發(fā)筆試題目】相關(guān)文章:

        中興2013年Java開(kāi)發(fā)筆試題目及答案02-10

        java筆試題,筆試題目分享08-10

        java筆試題目及答案02-16

        仁寶集團(tuán)筆試題目11-21

        博惠思華Java開(kāi)發(fā)工程師筆試題目及答案02-10

        JAVA筆試題目之邏輯題02-25

        JAVA經(jīng)典筆試題目及答案(精選7套)08-03

        JAVA筆試經(jīng)驗(yàn)08-01

        星網(wǎng)銳捷硬件開(kāi)發(fā)的筆試題目11-21

        四大名企選才標(biāo)準(zhǔn) 上汽集團(tuán)筆試要考智商02-04

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 五月丁香综合激情六月久久 | 亚洲精彩视频在线观看 | 日韩高清在线观看不卡一区二区 | 人伊香蕉久久精品 | 亚洲Ⅴa制服丝袜一区二区三区 | 日韩午夜福利视频欧美 |