1,應用程序如何省電木蹬?
1:及時關閉定位.2不要頻繁的請求網絡,作本地存儲.讓用戶主動的更新數據(上下拉刷新).3:提升程序的算法,優(yōu)化代碼,提高代碼的質量.4:藍牙, 需要才連接,用完及時斷開.5:界面的渲染,(游戲中)盡量提升效率,減少渲染次數.
2母谎,寫一個遞歸方法:計算N的階乘,然后將計算結果進行存儲沪铭。以便應用退出后下次啟動課直接獲取該值旱易。
double fun(int n)
{
if(n==0||n==1)
return 1;
else
return n*fun(n-1);
}
3,NSArray和NSMutableArray的區(qū)別挡爵,多線程操作哪個更安全竖般?
NSArray不可變數組,NSMutableArray可變數組茶鹃,NSArray更安全涣雕,多線程操作的時候記得加鎖。GCD線程是安全的.
4闭翩,當前有一個數組挣郭,里面有若干重復的數據,如何去除重復的數據疗韵?(會幾個寫幾個)
最簡單的方式兑障,把數組里面的元素放到集合里面。也可以對數組進行排序蕉汪,排序之后把數組里相同的元素刪除掉
放進字典里面, 把數組里面的元素當做key.
5流译,isKindOfClass、isMemberOfClass作用分別是什么者疤?
-(BOOL) isKindOfClass: classObj判斷是否是這個類或者是這個類子類的實例-(BOOL) isMemberOfClass: classObj 判斷是否是這個類的實例
6福澡,請寫出以下代碼的執(zhí)行結果
NSString? * name = [ [ NSString alloc] init ];
name = @”Habb”;
[ name? release];第一行:[ [ NSString alloc] init ]在堆區(qū)開辟一塊內存驹马,name指向堆區(qū)的這快內存革砸,第二行:name指向常量區(qū),這個時候堆區(qū)的內存沒有釋放也沒有指針指向糯累,會造成內存泄露
7算利,請分別寫出SEL、id的意思泳姐?
SEL選擇器, id泛對象類型,id 不是類型效拭,只是在編譯的時候不指定它的類型,把類型的確定放到程序運行過程中。
8允耿,iPhone上借笙,不能被應用程序直接調用的系統(tǒng)程序是什么?
時鐘较锡、視頻、指南針盗痒、天氣蚂蕴、計算器、備忘錄俯邓、提醒事件骡楼、股市http://blog.sina.com.cn/s/blog_7dc11a2e01016qve.html
http://blog.csdn.net/yhawaii/article/details/7587355
9、以.mm為拓展名的文件里稽鞭,可以包含的代碼有哪些鸟整?c和obj-c如何混用
obj-c的編譯器處理后綴為m的文件時,可以識別obj-c和c的代碼朦蕴, 處理mm文件可以識別obj-c,c,c++代碼篮条,但cpp文件必須只能用c/c++代碼,而且cpp文件include的頭文件中吩抓,也不能出現obj- c的代碼涉茧,因為cpp只是cpp
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是問題
3)在cpp中混用obj- c其實就是使用obj-c編寫的模塊是我們想要的疹娶。
如果模塊以類實現伴栓,那么要按照cpp class的標準寫類的定義,頭文件中不能出現obj-c的東西雨饺,包括#import cocoa的钳垮。實現文件中,即類的實現代碼中可以使用obj-c的東西额港,可以import,只是后綴是mm饺窿。
如果模塊以函數實現,那么頭文件要按 c的格式聲明函數锹安,實現文件中短荐,c++函數內部可以用obj-c,但后綴還是mm或m
10叹哭、說說如何進行后臺運行程序忍宋?? ??
?1、檢查設備是否支持多任務
- (BOOL) isMultitaskingSupported{
BOOL result = NO;
if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)])
{
result = [[UIDevice currentDevice] isMultitaskingSupported];
}
return result;
}
2风罩、applicationDidEnterBackground和applicationWillEnterForeground(UIApplicationDidEnterBackgroundNotification和UIApplicationWillEnterForegroundNotification)
3糠排、聲明你需要的后臺任務(在Info.plist中添加Required background modes鍵值:audio、location)
11超升、sizeof和strlen的區(qū)別和聯(lián)系? ??
sizeof是運算符入宦,strlen是函數? ? char str[20]="0123456789"; ? ? int a=strlen(str); //a=10; >>>> strlen 計算字符串的長度哺徊,以結束符 0x00 為字符串結束。 ? ? int b=sizeof(str); //而b=20; >>>> sizeof 計算的則是分配的數組 str[20] 所占的內存空間的大小乾闰,不受里面存儲的內容改變落追。
12、sprintf,strcpy,memcpy的功能涯肩?使用上要有哪些要注意的地方
char*strcpy(char *dest, const char *src);
其對字符串進行操作轿钠,完成從源字符串到目的字符串的拷貝,當源字符串的大小大于目的字符串的最大存儲空間后,執(zhí)行該操作會出現段錯誤病苗。
int sprintf(char*str, const char *format, ...)
函數操作的源對象不限于字符串:源對象可以是字符串疗垛、也可以是任意基本類型的數據。主要是實現將其他數據類型轉換為字符串
void *memcpy(void*dest, const void *src, size_t n)
實現內存的拷貝硫朦,實現將一塊內存拷貝到另一塊內存贷腕。該函數對源對象與目的對象沒有類型現在,只是對內存的拷貝
13咬展,自己寫函數泽裳,實現strlen功能,挚赊,诡壁,判斷的時候注意“\0”
14,寫一個代碼片段輸入一個字符串“- ”,輸出一個NSDate類型的對象荠割,打印該對象妹卿,輸出2013-03-22 15:28:32
NSDateFormatter? @“yyyy-MM-dd HH:mm:ss”
參考:http://www.cnblogs.com/Cristen/p/3599922.html
15,找錯誤
a:void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 );//注意strcpy特點
}
b:void GetMemory( char **p, int num )
{
*p = (char *) malloc( num );//分配了內存空間蔑鹦,但是沒有釋放 夺克, 釋放空間用free關鍵字
}
void Test( void )
{
char *str = NULL;
GetMemory( &str, 100 );
strcpy( str, "hello" );
printf( str );
}
16,用變量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);