<strong id="vcwjy"><kbd id="vcwjy"></kbd></strong>

  • <em id="vcwjy"><ruby id="vcwjy"><input id="vcwjy"></input></ruby></em>
    <dd id="vcwjy"><center id="vcwjy"><video id="vcwjy"></video></center></dd>
    <tbody id="vcwjy"><pre id="vcwjy"></pre></tbody>
      <rp id="vcwjy"><object id="vcwjy"><input id="vcwjy"></input></object></rp>
      ?

      iOS開發工程師筆試基礎題

      作者:達內 更新時間:2014-06-17 12:04 來源:未知 點擊:
      ios開發工程師筆試基礎題。

          1、 main()
         int a[5]={1,2,3,4,5};
         int *ptr=(int *)(&a+1); 
         printf("%d,%d",*(a+1),*(ptr-1));
      }
          答案:2、5
          分析:*(a+1)即a[1],為2;&a+1不是首地址+1,系統會認為加一個a數組的偏移,是偏移了一個數組的大小(本例是5個int)int *ptr=(int *)(&a+1);則ptr實際是&(a[5]),也就是a+5。
          2、用預處理指令#define聲明一個常數,用以表明一年都多少秒(忽略閏年的情況)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL #define的基本語法知識(不能以分號結尾、括號的使用等);懂得預處理器將為你計算常數表達式的值;意識到這個表達式將使一個16位機的整型數據溢出,因此要使用到長整型符號L,告訴編譯器這個常數為長整型數。如果在表達式中用到了UL(表示無符號整型)。
          3、寫一個標準的宏MIN,這個宏輸入兩個參數并返回較小的一個#define MIN(A,B) ((A) <= (B) ? (A) : (B))
          4、寫一個NSString類的實現
          + (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;
          + (id) stringWithCString: (const char*)nullTerminatedCString
                  encoding: (NSStringEncoding)encoding
      {
        NSString  *obj;
        obj = [self allocWithZone: NSDefaultMallocZone()];
        obj = [obj initWithCString: nullTerminatedCString encoding: encoding];
        return AUTORELEASE(obj);
      }
           5、obj-c有多重繼承嗎?不是的話有什么替代方法?
      沒有,多繼承在cocoa中使用protocol委托來實現
          6、obj-c有私有方法嗎?是有變量呢?
          方法只有兩種:靜態方法和實例方法,默認為公有;變量:私有、保護和公有。默認為私有。
      @interface Controller : NSObject { NSString *something; }
      + (void)thisIsAStaticMethod;
      - (void)thisIsAnInstanceMethod;
      @end
      @interface Controller (private) -
      (void)thisIsAPrivateMethod;
      @end可以通過上述方法來實現方法的私有化
          7、關鍵字const有什么含意?修飾類呢?static的作用?用于類呢?還有extern C的作用
          1)•const意味著只讀
             const int a;   a為一個常整型數
             int const a;   同上,a為一個常整型數
             const int *a; a為指向常整型數的指針(即整型數不可修改,但是指針可以)
             int* const a; a為指向整型數的常指針(即整型數可以修改,但是指針不可修改)
             int const *a const; a為一個指向常整數的常指針
          2)•static關鍵字作用
          (1)函數體內 static 變量的作用范圍為該函數體,不同于 auto 變量,該變量的內存只被分配一次,因此其值在下次調用時仍維持上次的值;
          (2)在模塊內的 static 全局變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問;
          (3)在模塊內的 static 函數只可被這一模塊內的其它函數調用,這個函數的使用范圍被限制在聲明它的模塊內;
          (4)在類中的 static 成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝;
          (5)在類中的 static 成員函數屬于整個類所擁有,這個函數不接收 this 指針,因而只能訪問類的static 成員變量。
          3)•extern "C"的作用
          (1)被 extern "C"限定的函數或變量是 extern 類型的;
           extern 是 C/C++語言中表明函數和全局變量作用范圍(可見性)的關鍵字,該關鍵字告訴編譯器,
      其聲明的函數和變量可以在本模塊或其它模塊中使用。
          (2)被 extern "C"修飾的變量和函數是按照 C 語言方式編譯和連接的;
          4)•extern "C"的慣用法
          (1)在 C++中引用 C 語言中的函數和變量,在包含 C 語言頭文件(假設為 cExample.h)時,需進 行下列處理:
      extern "C"
      {
      #include "cExample.h"
      }
          而在 C 語言的頭文件中,對其外部函數只能指定為 extern 類型,C 語言中不支持 extern "C"聲明,在.c 文件中包含了 extern "C"時會出現編譯語法錯誤。
          (2)在 C 中引用 C++語言中的函數和變量時,C++的頭文件需添加 extern "C",但是在 C 語言中不能直接引用聲明了 extern "C"的該頭文件,應該僅將 C 文件中將 C++中定義的 extern "C"函數聲明為extern 類型。
         8、框架分類
          •音頻和視頻
              Core Audio
              OpenAL
              Media Library
              AVFoundation
          •數據管理
              Core Data
              SQLite
          •圖片和動畫
              Core Animation
              OpenGL ES
              Quartz 2D
          •網絡
              Bonjour
              WebKit
              BSD Sockets
          •用戶應用
              Address Book
              Core Location
              Map Kit
              Store Kit
          9、obj-c的優缺點
          obj-c優點:
          1)Cateogies
          2)Posting
          3)動態識別
          4)指標計算
          5)彈性訊息傳遞
          6)不是一個過度復雜的C衍生語言
          7)obj-c與c++可混合編程
           obj-c缺點:
          1)不支持命名空間
          2)不支持運算符重載
          3)不支持多重繼承
          4)使用動態運行時類型,所有方法都是函數調用,所以很多編譯時優化方法都用不到。
          10、關鍵字volatile有什么含意?并給出三個不同的例子。
          一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確的說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子:并行設備的硬件寄存器(如:狀態寄存器),一個中斷服務子程序會訪問到的非自動變量多線程應用中被幾個任務共享的變量,
          11、簡述堆和棧的區別:棧是編譯器自動管理,堆是程序員控制的;棧是一塊連續的內存區域,是向低地址擴展的數據結構,堆是向高地址擴展的數據結構,是不連續的用鏈表存儲的。

      標簽:

      相關閱讀

      最新開班信息

      3G-IOS軟件工程師就業班
      北京潘家園中心 開課日期:9月29日
      3G-IOS軟件工程師就業班
      北京潘家園中心 開課日期:9月29日
      3G-IOS軟件工程師周末班
      北京潘家園中心 開課日期:9月29日
      3G-IOS軟件工程師周末班
      北京潘家園中心 開課日期:9月29日
      亚洲黄色小说|九九热这里只有精品视频|777米奇影视米奇|撸吧 百度 好搜 搜狗
      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>