1.以下情況的打印結(jié)果
NSArray *arr = [NSString stringWithFormat:@"abc"];
NSLog(@"%@", arr);
NSString *str = arr;
NSLog(@"%@",str);
2016-08-26 10:23:45.364 SomeThing[45895:1817616] abc
2016-08-26 10:23:45.365 SomeThing[45895:1817616] abc
2.OC是強類型還是弱類型語言?
強類型:為所有變量指定數(shù)據(jù)類型稱為“強類型”。
強/弱類型是指類型檢查的嚴格程度的。語言有無類型,弱類型和強類型三種。無類型的不檢查,甚至不區(qū)分指令和數(shù)據(jù)。弱類型的檢查很弱,僅能嚴格的區(qū)分指令和數(shù)據(jù)。強類型的則嚴格的在編譯期進行檢查。
強類型語言在沒有強制類型轉(zhuǎn)化前,不允許兩種不同類型的變量相互操作。Java、C# 、Apex和 Python 等都是強類型語言。
3.寫一個冒泡排序,時間復雜度
- (void)bubSort:(NSMutableArray *)arr{
for (int i = 0; i < arr.count; i++) {
for (int j = 0; j < arr.count - i - 1; j++) {
if ([arr[j+1] integerValue] < [arr[j] integerValue]) {
NSInteger temp = [arr[j+1] integerValue];
arr[j+1] = arr[j];
arr[j] = [NSNumber numberWithInteger:temp];
}
}
}
}
時間復雜度為log(n^2)
4.寫一個折半查找,時間復雜度
- (NSInteger)binSearch:(NSArray *)arr number:(NSInteger)num{
NSInteger low = 0;
NSInteger high = arr.count - 1;
while (low <= high) {
NSInteger mid = (low + high)/2;
if (num < [arr[mid] integerValue]) {
high = mid - 1;
}else if (num >= [arr[mid] integerValue]){
low = mid + 1;
}else{
return mid;
}
}
return -1;
}
時間復雜度為O(n^2)
5.分類和繼承的區(qū)別
分類:可以擴展類方法,不能定義新成員,可以訪問私有成員
繼承:可以通過覆蓋和定義新方法擴展父類,可以新增成員,但是不能訪問父類私有成員
分類會覆蓋原同名方法,將不同的方法寫入不同的文件中,更適合團隊開發(fā),而且分類更小巧靈活
6.iOS沙盒的目錄結(jié)構(gòu)
Documents iTunes:會同步該目錄,適合存放重要數(shù)據(jù)
Library/Caches: iTunes不會同步此文件夾,適合存儲體積大,不需要備份的非重要數(shù)據(jù)。
Library/Preferences: iTunes同步該應(yīng)用時會同步此文件夾中的內(nèi)容,通常保存應(yīng)用的設(shè)置信息。
tmp: iTunes不會同步此文件夾,系統(tǒng)可能在應(yīng)用沒運行時就刪除該目錄下的文件,所以此目錄適合保存應(yīng)用中的一些臨時文件,用完就刪除。
7.get和post的區(qū)別
- GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在BODY中。
- GET的URL會有長度上的限制,則POST的數(shù)據(jù)則可以非常大。
- POST比GET安全,因為數(shù)據(jù)在地址欄上不可見
8.如何開啟一個常駐線程
9.深拷貝和淺拷貝
- 深拷貝:對象拷貝
- 淺拷貝:地址拷貝
- 在非集合類對象中:對****immutable****對象進行****copy****操作,是指針復制,****mutableCopy****操作時內(nèi)容復制;對****mutable****對象進行****copy****和****mutableCopy****都是內(nèi)容復制。