中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      11月ATI(下屬AMD)筆試題及答案

      時間:2024-08-20 21:14:48 綜合指導 我要投稿
      • 相關推薦

      2006年11月ATI(下屬AMD)筆試題及答案


      ATI筆試題共有8個題目: 1:windows API里面用于線程同步的有哪些?

      答案:共有12個API

      1) 臨界區共有五個API

      (1)InitializeCriticalSection

      此函數用于設置臨界區對象,即對臨界區對象初始化。該函數必須在執行EnterCriticalSection前調用。單個進程的線程可以為互斥同步使用臨界區對象。進程負責分配臨界區對象使用的內存,可以通過對CRITICAL_SECTION類型變量的定義和使用來實現。

      (2)EnterCriticalSection

      此函數用于等待指定的臨界區對象的所有權。授予調用線程所有權后,該函數返回,臨界區對象在單個進程的各線程內強制互斥同步。在線程擁有臨界區對象以后,對同一個臨界區對象應調用EnterCriticalSection函數,防止發生死鎖。在退出臨界區后用LeaveCriticalSe- ction函數使其他線程可以進入臨界區。

      (3)TryEnterCriticalSection

      此函數用沒有阻塞的方式試圖進入一個臨界區。若函數調用成功,則進行調用的線程擁有對臨界區的所有權,否則立即返回。

      (4)LeaveCriticalSection

      此函數用于釋放對臨界區對象的所有權。每次線程對同一個對象執行EnterCriticalSection或TryEnterCriticalSection都必須調用

      LeaveCriticalSection函數。

      (5)DeleteCriticalSection

      此函數用于刪除一個臨界區對象,釋放所有與不再為自己所控制的臨界區對象有關的資源。一個臨界區對象被刪除,就不能再對其調用函數EnterCriticalSection,函數TryEnterCriticalSection和函數LeaveCriticalSection了。

      2) 互斥和信號量共有7個API

      (1) CreateMutex

      此函數用于創建命名或未命名的互斥對象。這些互斥對象用于進程同步,當互斥對象不為任何線程擁有時才處于信號態,否則將處于非信號態。若要線程釋放其所有權,則線程在每次互斥對象處于非信號態時都調用函數ReleaseMutex。當不再需要互斥對象時可以使用函數CloseHandle來關閉互斥對象。當所有互斥對象的打開句柄都關閉時,就刪除互斥對象。

      (2)OpenMutex

      用于返回存在的已命名互斥對象的句柄。該函數允許多個進程打開同一個互斥對象的句柄。該函數的調用一定要在函數CreateMutex創建互斥對象之后,當不需要句柄時可以調用CloseHandle函數。

      (3)ReleaseMutex

      此函數用于釋放互斥對象。若函數調用成功,互斥對象處于信號態。

      (4)CreateSemaphore

      此函數用于創建已命名或未命名的信號量對象,信號量用計數器實現同步。每次取信號量時(可利用函數WaitForSingleObject來取),信號量計數器遞減;每次ReleaseSemaphore釋放信號量值時,信號量計數器遞增。計數永遠不會小于0或大于在lSemMaxCount參數中定義的值。

      (5)OpenSemaphore

      用于打開一個已經存在的命名的信號量對象。該信號量必須是函數CreateSemaphore創建的。如果不再需要時,可以用函數CloseHandle關閉返回的句柄。

      (6)WaitForSingleObject

      此函數僅當在參數列表中指定的對象處于信號態或超過了超時間隔時,該函數才返回。

      (7)ReleaseSemaphore

      用來遞增信號量的計數。對于CreateSemaphore函數創建的對象使用,計數可以達到設定的最大計數值。


      2: windows內核內存分為paged memory和 nonpaged memory,請問有什么區別?

      答案:

      paged memory:是指可以分頁的內存,可以交換到硬盤文件上。

      Nonpaged memory:不可分頁,也就是不能交換到硬盤文件上。有些內存,比如驅動程序,內核代碼是不允許交換出去的,應該常駐內存,就使用nonpaged memory。

      3:請問什么情況下,cache中只放指令(數據直接從存儲器存取)比cache中放數據和指令的效率高?

      答案:計算密集型 cache中只放指令(數據直接從存儲器存取)比cache中放數據和指令的效率高,可以充分利用指令的局部原理。


      4:RISC和CISC等其他指令集相比有哪些優點,請至少舉出5個。

      答案:

      (1)尋址方式少且簡單,一般為2—3種,最多不超過4種,絕不出現存儲器間接尋址方式。

      (2)指令集中的指令數目一般少于100種,指令格式一般少于4種。

      (3)指令功能簡單,控制器多采用硬布線方式,以期更快的執行速度。

      (4)平均而言,所有指令的執行時間為一個處理時鐘周期。

      (5)指令格式中用于指派整數寄存器的個數不少于32個,用于指派浮點數寄存器的個數不少于16個。

      (6)強調通用寄存器資源的優化使用。

      (7)支持指令流水并強調指令流水的優化使用。


      5:選擇題:如果兩個節點x,y,preorder遍歷,x在y之前,postorder遍歷,x在y之后,請問x,y的關系為:

      A x是y的左兄弟 B x是y的右兄弟

      C x是y的祖先 D x是y的后裔

      答案:C


      6:請問下面程序如果運行會出現什么結果?如果有錯誤請指出并改正。

      include
      include
      class mystring{

      public:

      mystring(){

      m_str=NULL;

      }

      mystring(mystring& str){

      if(m_str!=NULL){

      delete []m_str;

      }

      m_str=new char[strlen(str.m_str)];

      strcpy(m_str,str.m_str);

      }

      mystring & operator=(const char *str){

      if(m_str!=NULL){

      delete []m_str;

      }

      m_str=new char[strlen(str)+1];

      strcpy(m_str,str);

      }

      ~mystring(){

      if(m_str!=NULL){

      delete m_str;

      }

      }

      private:

      char *m_str;

      };

      int main(){

      mystring str1;

      str1="hello world";

      mystring str2;

      str2=str1;

      mystring str3=str2;

      return 0;

      }

      ~

      答案:

      程序運行會出現內存釋放錯誤

      錯誤共有四處,分別在下面改正的代碼中標出。

      include
      include
      class mystring{ public: mystring(){ m_str=NULL; } mystring(mystring& str){

      /*if(m_str!=NULL){ delete []m_str; }*/

      //錯誤1,因為m_str沒有被初始化,所以此處可能為NULL,也可能不為NULL,如果不為null,則會出錯,因為m_str是一個隨機的值。 m_str=new char[strlen(str.m_str)+1];

      //錯誤2:長度應該+1 strcpy(m_str,str.m_str); }

      mystring & operator=(mystring& str){

      //錯誤3:缺少賦值重載函數 if(m_str!=NULL){ delete []m_str; } m_str=new char[strlen(str.m_str)+1];

      //錯誤2:長度應該+1 strcpy(m_str,str.m_str); } mystring & operator=(const char *str){ if(m_str!=NULL){ delete []m_str; } m_str=new char[strlen(str)+1]; strcpy(m_str,str); } ~mystring(){ if(m_str!=NULL){ delete []m_str;

      //錯誤4:析構函數中,應該析構數組 } } private: char *m_str; }; int main(){ mystring str1; str1="hello world"; mystring str2; str2=str1; mystring str3=str2; return 0; } ~


      7:100個乒乓球取勝之道,A,B兩個人輪流拿,A先拿,一次只能拿[1,5]個,獲勝者為拿到最后一個球的人。請問A第一次該拿幾個?以后又該怎么拿,才能夠確保獲勝?

      答案:A先拿4個,然后B拿,設B拿x個,則每次A拿6-x個即可。


      8:有編號1-50的人,依次排列,然后單號出列,然后剩下的人重新編號,單號出列,依次類推,最后剩下一個人,請問這個人原來編號是多少號?如果是每一次雙號出列,請問這個人原來編號是多少?

      答案:單號出列:32號

      雙號出列:1號

      【11月ATI(下屬AMD)筆試題及答案 】相關文章:

      AMD北京筆試經歷11-21

      java筆試題及答案08-20

      英語面試試題及答案02-18

      外企面試的經典試題及答案02-18

      經典java筆試題及答案分享02-25

      報社筆試題目及答案03-23

      2017華為筆試題及答案02-23

      醫院面試試題及答案02-18

      經典面試題 及答案分析11-20

      主站蜘蛛池模板: 亚洲中文欧美日韩在线| 日本一区二区三区中文字幕视频| 望江县| 石河子市| 国产成人综合日韩精品无| 无码AV大香线蕉伊人久久| 久久天天躁狠狠躁夜夜中文字幕| aⅴ色综合久久天堂av色综合| 苗栗县| 国产性感丝袜美女av| 亚洲区一区二在线播放| 日韩人妻高清福利视频| 激情亚洲的在线观看| 亚洲午夜久久久久中文字幕久| 洪泽县| 曲阜市| 台山市| 临颍县| 日本岛国精品中文字幕| 阜新| 红原县| 威海市| 舞阳县| 国产美女主播在线一区| 元氏县| 揄拍成人国产精品视频肥熟女| 加勒比在线一区二区三区| 鄂托克前旗| 女同性恋精品一区二区三区| 大安市| 亚洲地区一区二区三区| 最新欧美一级视频| 元码人妻精品一区二区三区9 | 亚洲精品国产视频一区二区| 日本女优中文字幕在线观看| 亚洲一区二区婷婷久久| 高潮社区51视频在线观看| 国产目拍亚洲精品一区二区 | 久久国产精品第一区二区| 日韩一区二区三区中文字幕| 热re99久久精品国产66热6|