iOS面試題5(答案)

1、 寫一個遞歸方法:計算N的階乘,然後將計算結果進行存儲。以便應用退出後下次啓動課直接獲取該值。
double fun(int n)

{

if(n==0||n==1)

return 1;

else

return n*fun(n-1);

}

2、 NSArray和NSMutableArray的區別,多線程操作哪個更安全?
NSArray不可變數組,NSMutableArray可變數組,NSArray更安全,多線程操作的時候記得加鎖。

3、 isKindOfClass、isMemberOfClass作用分別是什麼?
-(BOOL) isKindOfClass: classObj判斷是否是這個類或者是這個類子類的實例
-(BOOL) isMemberOfClass: classObj 判斷是否是這個類的實例

4、 請寫出以下代碼的執行結果

NSString  * name = [ [ NSString alloc] init ];

name = @Habb;

[ name  release];
第一行:[ [ NSString alloc] init ]在堆區開闢一塊內存,name指向堆區的這快內存,第二行:name指向常量區,這個時候堆區的內存沒有釋放也沒有指針指向,會造成內存泄露

5、 iPhone上,不能被應用程序直接調用的系統程序是什麼?
時鐘、視頻、指南針、天氣、計算器、備忘錄、提醒事件、股市
http://blog.sina.com.cn/s/blog_7dc11a2e01016qve.html

 http://blog.csdn.net/yhawaii/article/details/7587355

6、以.mm爲拓展名的文件裏,可以包含的代碼有哪些?cobj-c如何混用
obj-c的編譯器處理後綴爲m的文件時,可以識別obj-cc的代碼, 處理mm文件可以識別obj-c,c,c++代碼,但cpp文件必須只能用c/c++代碼,而且cpp文件include的頭文件中,也不能出現obj- c的代碼,因爲cpp只是cpp

2) mm文件中混用cpp直接使用即可,所以obj-ccpp不是問題

3)在cpp中混用obj- c其實就是使用obj-c編寫的模塊是我們想要的。

如果模塊以類實現,那麼要按照cpp class的標準寫類的定義,頭文件中不能出現obj-c的東西,包括#import cocoa的。實現文件中,即類的實現代碼中可以使用obj-c的東西,可以import,只是後綴是mm

如果模塊以函數實現,那麼頭文件要按 c的格式聲明函數,實現文件中,c++函數內部可以用obj-c,但後綴還是mmm

7、說說如何進行後臺運行程序?
(1)檢查設備是否支持多任務

(2)applicationDidEnterBackgroundapplicationWillEnterForegroundUIApplicationDidEnterBackgroundNotificationUIApplicationWillEnterForegroundNotification

(3)聲明你需要的後臺任務(在Info.plist中添加UIBackgroundModes鍵值:audiolocationvoip

8、sizeof和strlen的區別和聯繫
    sizeof是運算符,strlen是函數
     char str[20]="0123456789"; 
     int a=strlen(str); //a=10; >>>> strlen 計算字符串的長度,以結束符 0x00 爲字符串結束。 
     int b=sizeof(str); //而b=20; >>>> sizeof 計算的則是分配的數組 str[20] 所佔的內存空間的大小,不受裏面存儲的內容改變。

9、sprintf,strcpy,memcpy的功能?使用上要有哪些要注意的地方
char*strcpy(char *dest, const char *src);

其對字符串進行操作,完成從源字符串到目的字符串的拷貝,當源字符串的大小大於目的字符串的最大存儲空間後,執行該操作會出現段錯誤。

int sprintf(char*str, const char *format, ...)

函數操作的源對象不限於字符串:源對象可以是字符串、也可以是任意基本類型的數據。主要是實現將其他數據類型轉換爲字符串

void *memcpy(void*dest, const void *src, size_t n)

實現內存的拷貝,實現將一塊內存拷貝到另一塊內存。該函數對源對象與目的對象沒有類型現在,只是對內存的拷貝

10、 用變量a寫出以下定義

      a、一個整型數   int a;

      b、一個指向整型數的指針 int *a;

      c、一個指向指針的指針,它指向的指針是指向一個整型數  int **a;

      d、一個有10個整型數的數組  int a[10];

      e、一個有10個指針的數組,該指針是指向一個整型數的  int *a[10];

      f、一個指向有10個整型數數組的指針  int (*a)[10];

      g、一個指向函數的指針,該函數有一個整型參數,並返回一個整型數 int(*a)(int);




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章