1.http和scoket通信的區別
2.mvc設計模式是什么?你還熟悉什么設計模式?
3.fmdb框架(了解一下)
4.什么是沙盒模型?哪些操作是屬于私有api范疇?
5.什么時候用delegate,什么時候用Notification?
6.寫一個委托的interface
8.obj-c有多重載么?不是的話有什么代替方法?
9.關鍵字const有什么含義?修飾類呢?static的作用,用于類呢?還有extenrn c的作用
10.ARC和垃圾回收機制的區別
11.指出一下程序存在的問題,并且修正
NSMutableArray *array1 = [NSMutableArray arrayWithArray:@[@"1",@"2",@"3"]];
NSMutableArray *array2 = [array1 copy];
[array2 addObject:@"4"];
12.NSString的屬性使用的是strong 還是copy,為什么?
13.如果解決循環引用
14.tableView的重用機制
答:查看UITableView頭文件,會找到NSMutableArray *visiableCells和NSMutableArray *reusableTableCells兩個結構,visableCells內保存當前顯示的cells,reusableCells保存可重用的cells,TableView顯示之初,reusableTableCells為空那么tableView dequeueReusableCellWithIdentifier:CellIdentifier返回nil,開始的cell都是通過[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Celldentifier]來創建,而且cellForRowAtIndexPath只是調用最大顯示的cell的次數。比如:有100天數據,iPhone一屏最多顯示10cell。程序最開始顯示TableView的情況是:
- 用[[UITableVIewCell alloc]initWithStyle:UITableViewCellsStyleDefault reuseIdentifier:CellIdentifier]創建10次cell,并給cell指定同樣的重用標識符(當然,可以為不同類型的cell指定不同的標識)。并且10個cell全部都加入到visiableCells數組,reusableTableCells為空。
- 向下拖動tableView,當cell1完全移出屏幕,并且cell11(它也是alloc出來的,原因同上)完全顯示出來的時候。cell11加入到visiableCells,cell1移出visiableCells,cell1加入到reusableIeTableCells。
- 接著向下拖動tableView,因為reusableTableCells中已經有值,所以,當需要顯示新的cell,cellForRowAtIndexPath再次被調用的時候,tableView dequeueReusableCellWithIdentifier:CellIdentifier,返回cell1,cell1加入到visiableCells,cell1移出reusableTableCells;cell2移出visiableCells,cell2加入到reusableTableCells。之后再需要顯示的Cells就可以正常從用了。
15.frame和bounds的區別
16.多線程的幾種方案
17.- (void)willMoveToWindow:(UIWindow *)newWindow 這個方法什么時候調用
18.NSNotification和delegate的區別
19.指出一下程序是否有問題,如果有問題請修正
for (int i = 0; i < 10000000; i++) {
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",i] ofType:@".png"]];
//執行某些方法
}
20.category和extension有什么區別
21.講講Objective-C的內存管理
22.請闡述UIVIewController生命周期相關的方法和執行順序
23.在一個webView上輸入http://www.baidu.com到最終打開頁面,請描述中間經歷的過程
24.闡述視圖控制器的生命周期
25.UIView與CLayer有什么區別(2)
26.iOS怎么做數據的持久化
27.描述你所理解的RunLoop
30.簡要描述GCD,NSOperation,NSTread
- NSOperation 與GCD的區別
1).GCD
- a.GCD是ios4.0推出的,主要針對多核cpu多核做了優化,是C語言的技術
- b.GCD是將任務(block)添加到隊列(串行、并行、全局、主隊列)。并且以同步/異步的方式,執行任務的函數
- c.GCD提供了一些NSOperation不具備的功能
1.一次性執行
2.延遲執行
3.調度組
2)NSOperation
- a.NSOperation是iOS2.0推出的,iOS4.0之后重寫了NSOperation
- b.NSOperation將操作(異步的任務)添加到隊列(并發隊列),就會執行指定操作的函數
- c.NSOperation里提供的方便的操作
1.最大并發數
2.隊列的暫停/繼續
3.取消所有操作
4.指定操作之間的依賴關系(GCD可以用同步實現)
3)GCD與NSThread的區別
- a.NSThread通過@selector指定要執行的方法,代碼分散
- c.GCD通過block指定要執行的代碼,代碼集中,所有的代碼系在一起的,讓代碼更加簡單,易于閱讀和維護
- d.使用GCD不需要管理線程的創建/銷毀/復用的工程!程序員不用關心線程的生命周期
- e.如果要開多個線程NSThread必須實例化多個線程對象
- f.NSThread靠NSObject的分類方法實現的線程間通訊,GCD靠block;
31.BAD_ACCESS在什么情況下出現?,怎么調試EXC_BAD_ACCESS錯誤?
32.請描述你所了解的設計模式,舉例并描述使用場景
33.不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放?(比如子一個vc的viewDidLoad中創建)
34.分別描述Swift和OC中訪問限制有哪些
35.描述KVC和KVO
36.分別描述類別(categories)和延展(extensions)是什么?以及兩者的區別?繼承和類別在實現中有和區別?為什么Category只能為對象添加方法,卻不能添加成員變量
37.舉例編程,這里有一個整數數據int a[13] = {1,5,10,13,17,56,12,67,23,65,77,81,93};
1.使用遞歸好冒泡法進行由大到小排序
2.請使用二分法查找數據77
38.什么是method swizzling?
39.如何提高性能的給UIImageView加個圓角?
40.GCD里面有哪幾種Queue?,你自動建立過串行queue嗎?背后的線程模型是什么樣的?
41.What is advantage of categories? What is difference between implementing a category and inheritance?
42.在網絡差的情況下,特定的一個網絡請求可能會耗時2-4秒,此時怎么做提高用戶體驗
43.在App中混合HTML5開發App如何實現的,在App中使用HTML5的優缺點是什么?
44.描述一下iOS的內存管理,在開發中對于內存的使用和優化包含哪些方面。我們在開發中應注意哪些問題
45.用預處理指令#define聲明一個常數,用以表明1年中有多少秒(忽略閏年問題)
46.寫一“標準”宏MIN ,這個宏輸入兩個參數并返回較小的一個
47.數組和指針的區別
48.static的作用
49.簡述內存分區情況
50.#include<filename>和#include “filename” 有什么區別
51.const char *p ;charconst *p;char *const p;c..四個修飾指針有什么區別
52.簡述NotificationCenter,KVC,KVO,Delegate?并說明他們之間的區別
53.iOS本地數據存儲都有哪幾種方式?
54.寫出方法獲取iOS內存使用情況
55.請簡單寫出增,刪,改,查的SQL語句
56.分析json,xml的區別?json,xml解析方式的底層是如何處理的
57.多線程,如GCD,NSOperationQueue的特征和區別
58.socket連接與http連接
59.單例目的是什么,并簡單寫出一個案例?
60.請解釋一下keywords的區別:assign weak,__block vs __weak
61.用@property聲明的NSString(或者NSArray,NSDictionary)經常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?
62.對數組中的元素去重復
例如
NSArray *array= @[@"12-11",@"12-11",@"12-11",@"12-12",@"12-13",@"12-14"];