轉載 幾個高深的題目

高深筆試題目(嵌入式軟件開發)
1 讀程序段,回答問題
  int main(int argc,char *argv[])
  {
    int c=9,d=0;
    c=c++%5;
    d=c;
    printf("d=%dn",d);
    return 0;
  }
  a) 寫出程序輸出
  b) 在一個可移植的系統中這種表達式是否存在風險?why?
  #include "stdio.h"
  int a=0;
  int b;
  static char c;
  int main(int argc,char *argv[])
  {
    char d=4;
    static short e;
    a++;
    b=100;
    c=(char)++a;
    e=(++d)++;
    printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);
    return 0;
  }
  a) 寫出程序輸出
  b) 編譯器若是安排各個變量(a,b,c,d)在內存中的佈局(eg. stack,heap,data section,bss section),最好用圖形方式描述。
2 中斷是嵌入式系統中重要的組成部分,這致使了許多編譯開發商提供一種擴展:讓標準C支持中斷,產生了一個新的關鍵字__interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一箇中斷服務子程序(ISR),請評論如下這段代碼。
__interrupt double compute_area(double radius)
{
  double area = PI * radius *radius;
  printf("nArea = %f", area);
  return area;
}
3 C/C++基礎知識問題
  a) 關鍵字volatile在編譯時有什麼含義?並給出三個不一樣使用場景的例子(能夠僞代碼或者文字描述)。
   這裏增長一個題.
int square(volatile int *ptr)
{
return *ptr * *ptr;
}
這段程序有什麼問題嗎?
 b) C語言中static關鍵字的具體做用有哪些 ?
  c) 請問下面三種變量聲明有何區別?請給出具體含義
     int const *p;
     int* const p;
     int const* const p;
4 嵌入式系統相關問題
  a) 對於×××變量A=0x12345678,請畫出在little endian及big endian的方式下在內存中是如何存儲的。
  b) 在ARM系統中,函數調用的時候,參數是經過哪一種方式傳遞的?
  c) 中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區別?
5 設週期性任務P1,P2,P3的週期爲T1,T2,T3分別爲100,150,400;執行時間分別爲20,40,100。請設計一種調度算法進行任務調度,知足任務執行週期及任務週期。
6 優先級反轉問題在嵌入式系統中是一中嚴重的問題,必須給與足夠重視。   a) 首先請解釋優先級反轉問題   b) 不少RTOS提供優先級繼承策略(Priority inheritance)和優先級天花板策略(Priority ceilings)用來解決優先級反轉問題,請討論這兩種策略
相關文章
相關標籤/搜索