• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    2004年上半年軟件設計師(高級程序員)下午試題

    發布: 2007-5-26 13:59 | 作者: 未知 | 來源: 互聯網 | 查看: 44次 | 進入軟件測試論壇討論

    領測軟件測試網

    試題一至試題四是必答題

    試題一
      閱讀下列說明和數據流圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
    [說明]
      某基于微處理器的住宅安全系統,使用傳感器(如紅外探頭、攝像頭等)來檢測各種意外情況,如非法進入、火警、水災等。
      房主可以在安裝該系統時配置安全監控設備(如傳感器、顯示器、報警器等),也可以在系統運行時修改配置,通過錄像機和電視機監控與系統連接的所有傳感器,并通過控制面板上的鍵盤與系統進行信息交互。在安裝過程中,系統給每個傳感器賦予一個編號(即id)和類型,并設置房主密碼以啟動和關閉系統,設置傳感器事件發生時應自動撥出的電話號碼。當系統檢測到一個傳感器事件時,就激活警報,撥出預置的電話號
    碼,并報告關于位置和檢測到的事件的性質等信息。

    [數據流圖1-3]

    加工4的細化圖

    [問題1]
      數據流圖1-1(住宅安全系統頂層圖)中的A和B分別是什么?
    [問題2]
      數據流圖1-2(住宅安全系統第0層DFD圖)中的數據存儲“配置信息”會影響圖中的哪些加工? 
    [問題3]
      將數據流圖1—3(加工4的細化圖)中的數據流補充完整,并指明加工名稱、數據流的方向(輸入/輸出)和數據流名稱.
    [問題4]
      請說明邏輯數據流圖(LogicalDataFlowDiagram)和物理數據流圖(PhysicalData Flow Diagram)之間的主要差別。

    試題二
      閱讀下列說明和算法,回答問題1和問題2,將解答填入答題紙的對應欄內。
    [說明]
      算法2-1是用來檢查文本文件中的圓括號是否匹配。若文件中存在圓括號沒有對應的左括號或者右括號,則給出相應的提示信息,如下所示:

    文件

    提示信息
    (1+2)
    abc) 缺少對應左括號:第2行,第4列
    ((def)gx)) 缺少對應左括號:第3行,第10列
    (((h)
    ij)(k
    (1ml) 缺少對應右括號:第5行,第4列; 第4行,第1列

    在算法2-1中,stack為一整數棧。算法中各函數的說明如下表所示:

    函數名

    函數功能

    push(int i)

    將整數i壓入棧stack中。

    pop()

    stack的棧頂元素出棧。

    empty()

    判斷stack棧是否為空.若為空,函數返回1,否則函數返回0。

    nextch()

    讀取文本文件中的下一個字符,并返回該字符的ASCII值,將字符所在的行號以及字 符在行中的位置分別存儲到變量row和col中,若遇到文件結束符,則將變量EOF 置為true;

    kind(charch)

    判斷字符ch是左括號還是右括號,若是左括號,函數返回1,若是右括號,函數返回2, 若兩者都不是,函數返回0。

    [算法2-1]
      將棧stack置空,置EOF為false
      ch←nextch();
      while(not EOF)
       k←kind(ch);
       if (k ==__(1)__)
        push(__(2)__); push(__(3)__);
       elseif( k ==__(4)__)
        if(not empty())
         pop();pop():
        else
         顯示錯誤信息(缺少對應左括號或右括號);
         顯示行號row;顯示列號col;
        endif
       endif
       ch←nextch();
      endwhile
      if(not empty())
       顯示錯誤信息(缺少對應左括號或右括號);
       while(not empty())
        row←pop(); col←pop();
        顯示行號row;顯示列號col;
       endwhile
      endif
      為了識別更多種類的括號,對算法2-1加以改進后得到算法2-2。算法2-2能夠識別圓括號,方括號和花括號(不同類型的括號不能互相匹配)。改進后,函數kind(charch)的參數及其對應的返回值如下表所示:

    ch ( ) { } [ ] 其它
    返回值 1 2 3 4 5 6 0

    [算法2-2]
      將棧stack置空,置EOF為false
      ch←nextch();
       while(not EOF)
       k←kind(ch);
       if(k > 0)
        if(判斷條件1)
         push(__(5)__):push(__(6)__);push(__(7)__):
        elseif( 判斷條件2 and 判斷條件3 )
         pop(); pop(); pop();
        else
         顯示錯誤信息(缺少對應左括號或右括號);
         顯示行號row;顯示列號col;
        endif
       endif
       ch←nextch();
      endwhile
      if(not empty())
       顯示錯誤信息(缺少對應左括號或右括號);
       while(not empty())
        pop();row←pop();col←pop();
        顯示行號row;顯示列號col;
       endwhile
      endif
    [問題1]
      請將[算法2-1]和[算法2-2]中(1)至(7)處補充完整。
    [問題2]
      請從下面的選項中選擇相應的判斷邏輯填補[算法2-2]中的“判斷條件廣至“判斷條件3”。注意,若“判斷條件2”的邏輯判斷結果為假,就無需對“判斷條件3”進行判斷。
      (a)字符是括號 (b)字符是左括號 (c)字符是右括號 (d)?铡(e)棧不空
      (f)棧頂元素表示的是與當前字符匹配的左括號
      (g)棧頂元素表示的是與當前字符匹配的右括號

    試題三
      閱讀下列說明以及圖3-1和圖3-2,回答問題1、問題2和問題3,將解答填入答題紙的對應欄內。
    [說明]
      某電話公司決定開發一個管理所有客戶信息的交互式網絡系統。系統的功能如下:
      1.瀏覽客戶信息:任何使用Internet的網絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。
       2.登錄:電話公司授予每個客戶一個帳號。擁有授權帳號的客戶,可以使用系統提供的頁面設置個人密碼,并使用該帳號和密碼向系統注冊。
      3.修改個.人信息:客戶向系統注冊后,可以發送電子郵件或者使用系統提供的頁面,對個人信息進行修改。
      4.刪除客戶信息:只有公司的管理人員才能刪除不再接受公司服務的客戶的信息。
      系統采用面向對象方法進行開發,在開發過程中認定出的類如下表所示:

    編號 類名 描述
    1 InternetClient 網絡用戶
    2 CustomerList 客戶信息表,記錄公司所有客戶的信息
    3 Customer 客戶信息,記錄單個客戶的信息
    4 CompanyCustomer 公司客戶
    5 InternalClient 公司的管理人員

    [圖3-1]  

    [問題1]
      在需求分析階段,采用UML的用例圖(use case diagram)描述系統功能需求,如圖3-1所示。請指出圖中的A、B、C和D分別是哪個用例?
    [問題2]
      在 UML 中,重復度(Multiplicity)定義了某個類的一個實例可以與另一個類的多少個實例相關聯。通常把它寫成一個表示取值范圍的表達式或者一個具體的值。例如圖 3-2 中的類 InternetClient 和CustomerList,InternetClient 端的“0..*”表示:一個 Custo~erList 的實例可以與 0 個或多個 InternetClient 的實例相關聯;CustomerList 端的“1”表示:一個InternetClient的實例只能與一個CustomerList的實例相關。
      請指出圖3-2中(1)到(4)處的重復度分別為多少?
    [問題3]
      類通常不會單獨存在,因此當對系統建模時,不僅要識別出類,還必須對類之間的相互關系建模。在面向對象建模中,提供了四種關系:依賴(dependency)、概括(generalization)、關聯(aassociation)和聚集(aggregation)。請分別說明這四種關系的含義,并說明關聯和聚集之間的主要區別。

    試題四
      在COMET型計算機上可以使用試卷上所附的CASL匯編語言,閱讀程序說明和CASL程序,把應填入__(n)__處的字句寫在答卷的對應欄內。
    [程序4說明] 
      本程序將16位無符號二進制數轉換為5位十進制數,轉換結果用ASCII碼表示,并從高位至低位依次存放在首地址為BTASC的連續5個內存單元中。待轉換的16位無符號二進制數存放在DATA內存單元中。
    [程序4]
         START
     PROGBC LD  GRO,DATA
         LEA  GR1,0
         LEA  GR3,48
     LOOP1  CPL  GRO,WDT,GR1
         JPZ  LOOP2
         ST  GR3,BTASC,GR1
         LEA  GR1,1,GR1
         LEA  GR2,-4,GR1
         JNZ  LOOP1
         __(1)__
     LOOP2  LEA  GR2,48
     LOOP3  CPL  GRO,WDT,GR1
         JMI  NEXT
         __(2)__
         LEA  GR2,1,GR2
         JMP LOOP3
     NEXT  __(3)__
         LEA  GR1,1,GR1
         LEA  GR2,-4,GR1
         JNZ  LOOP2
     LAST  __(4)__        ;處理個位數
         __(5)__
         EXIT
     C48   DC  48
     WDT   DC  10000
         DC  1000
         DC  100
         DC  10
     BTASC  DS  5
     DATA  DC  #FA59H
         END

      從下列的2道試題(試題五至試題六)中任選1道解答。
    如果解答的試題數超過1道,‘則題號小的1道解答有效。


    試題五
      閱讀下列函數說明和C函數,將應填入__(n)__處的字句寫在答題紙的對應欄內。
    [函數5說明]
      函數DeleteNode(Bitree*r,inte)的功能是:在樹根結點指針為r的二叉查找(排序)樹上刪除鍵值為e的結點,若刪除成功,則函數返回0,否則函數返回-1。二叉查找樹結點的類型定義為:
    typedef struct Tnode{
      int data:            /*結點的鍵值*/
      struct Tnode *Lchild,*Rchiid; /*指向左、右子樹的指針*/
    }*Bitree;
      在二叉查找樹上刪除一個結點時,要考慮三種情況:
     、偃舸齽h除的結點p是葉子結點,則直接刪除該結點;
     、谌舸齽h除的結點p只有一個子結點,則將這個子結點與待刪除結點的父結點直接連接,然后刪除結點;
     、廴舸齽h除的結點p有兩個子結點,則在其左子樹上,用中序遍歷尋找關鍵值最大的結點s,用結點s的值代替結點p的值,然后刪除結點s,結點s必屬于上述①、②情況之一。
    [函數5]
    int DeleteNode(Bitree *r,int e) {
     Bitree p:*r, pp, S, C:
     while(__(1)__ ){       /*從樹根結點出發查找鍵值為e的結點*/
      pp=p;
      if (e <p->data) p = p->Lchild;
      else p = p->Rchild;
     }
     if(!p) return -1;       /*查找失敗*/
     if (p->Lchiid && p->Rchild){  /*處理情況③*/
     s = __(2)__ ;pp = p;
     while(__(3)__) { pp = s;s = s->Rchild;)
      p->data = S->data; p = s;
     }
     /* 處理情況①、②* /
     if(__(4)__) c = p->Lchild;
     else c=p->Rchild;
     if (p == *r) *r = C;
     else if (__(5)__) pp->Lchild = c;
      else pp->Rchild:C;
     free(p);
     return 0;

    試題六
      閱讀下列說明和C++程序,將應填入__(n)__處的字句寫在答題紙的對應欄內.
    [程序6說明]
      C++語言本身不提供對數組下標越界的判斷.為了解決這一問題,在程序6中定義了相應的類模板,使得對于任意類型的二維數組,可以在訪問數組元素的同時,對行下標和列下標進行越界判斷,并給出相應的提示信息.
    [程序6]
    #include <iostream.h>
    template <class T> class Array;
    template <Class T> class ArrayBody {
     friend__(1)__;
     T* tpBody;
     int iRows,iColumns,iCurrentRow;
     ArrayBody(int iRsz,int iCsz){
      tpBody = __(2)__;
      iRows = iRsz;iColumns = iCsz;iCurrentRow = -1:
    }
    public;
     T& operator[](int j){
      bool row_error,column_error;
      row_error = column_error =false;
      try {
       if(iCurrentRow < 0 || iCurrentRow >= iRows)
        row_error = true;
       if(j<0 || j>= iColumns)
        column_error = true;
       if(row_error == true || column_ error == true)
        __(3)__;
      }
      catch(char){
       if(row_error == true)
        cerr << "行下標越界[" << iCurrentRow << "]";
       if(column_error = true)
        cerr << "列下標越界[" << j << "]";
       cout << "\n";
      }
      return tpBody[iCurrentRow * iColumns + j];
     }
     ~Arraygody(){delete[]tpBody:}
    };
    template <class T> class Array {
     ArrayBody<T> tBody;
     public;
      ArrayBody<T> & operator[](int i) {
       __(4)__;
       return tBody;
      }
     Array(int iRsz,int iCsz):__(5)__ { }
     };

    void main()
    {
     Array<int> a1(10,20);
     Array<double> a2(3,5);
     int b1;
     double b2; ·
     b1 = a1[-5][10]; //有越界提示:行下標越界[-5]
     b1 = a1[10][15]; //有越界提示:行下標越界[10]
     b1 = a1[1][4];  //沒有越界提示
     b2 = a2[2][6];  //有越界提示:列下標越界[6]
     b2 = a2[10][20]; //有越界提示;行下標越界[10]列下標越界[20]
     b2 = a2[1][4];  //沒有越界提示
    }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>