100道面试题
1.__weak什么时候用? 2.是否使用过coreImage和coreText?如果使用过,说说你的体验 3.数据结构、写一个顺序排列 4.什么是TCP、DUP等协议?他们分别属于第几层? 5.写一个单项链表逆序 6.在iPhone中怎么写入C++程序,详细写下来 7.写一个快速排序
8.autorelease的对象是在什么时候被release的? 11.什么是OpenGL?具体使用 12.开发过程中应用程序内存泄露了该怎么办 13.ios开发中有什么方式支持多继承?(obj-c有多重继承么?不是的话有什么替代方法?) 14.从1-n个五序列的数字中排序的算法有哪些,简单代码实现一个并写出时间复杂度 15.开启一个其他线程来计算1+1 并且把结果用主线程显示在label上更新UI 16.ios7中navigationBar的背景如何设置成透明的吗?需求是这样的:viewController的背景是蓝色的,然后让navigationbar的背景是透明的,就 这样navigationbar也变成蓝色的了 18.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 19.写一个委托的 interface 20.写一个NSString类的实现 21.obj-c有私有方法么?私有变量呢 22.关键字const有什么含意?修饰类呢?static的作用,用于类呢?还有extern c的作用 23.为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh #define __INCvxWorksh #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif #endif /* __INCvxWorksh */ 复制代码
25.列举几种进程的同步机制,并比较其优缺点。
26.什么是键-值,键路径是什么
27.c和obj-c如何混用
28.cocoa touch框架
29.自动释放池是什么,如何工作
30.objc优点和objc缺点?
31.sprintf,strcpy,memcpy使用上有什么要注意的地方
32..http和scoket通信的区别。
35.什么是push。
36.静态链接库
37.fmmpeg框架
38.fmdb框架
39.320框架
40.什么是沙箱模型?哪些操作是属于私有api范畴?
41.你在开发项目中时,用到了哪些数据存储方式,iphone中常见的方式有哪些,各有什么区别?
43..init和initwithobject区别(语法)?
44.你连接服务器用的是什么方法,如果请求过程中,网络出了问题这么办?
47.协议是什么,有什么作用.?
49.分线程回调主线程方法是什么,有什么作用?
50.iphone阅读器,如果要读取一个文本文件,请问你是如何处理编码问题的?另外像pdf格式的文件,你如何读取。?
51.你在开发大型项目的时候,如何进行内存泄露检测的?
52.你做iphone开发时候,有哪些传值方式,view和view之间是如何传值的?
53.让一个物体从界面中的一点运动到另外一点,有哪些方法?
54.你了解哪些加密方式?
55.地图定位
56.http网络通信
57.图片浏览
58.对像序列化
59.线程 ?
a. 线程的创建和使用规则?b. 主分线程c.线程锁复制代码
60.各种 排序算法? 61.通信底层原理
62.为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain的? 63. 以下每行代码执行后,person对象的retain count分别是多少?Person *person = [[Person alloc] init]; count 1 [person retain]; [person release]; [person release];复制代码
64.在一个对象的方法里面:self.name = “object”;和name =”object”有什么不同吗?
67.请写出obj-c的内存管理代码 68.什么是OOP? 69.类变量的@protected, @private,@public, @package声明各有什么含义 71.什么是序列化或者Archiving?可以用来作什么?怎么跟copy结合? 74.KVO是同步还是异步?notification是同步还是异步? 75.ios对象的生命周期? 78.为NSString扩展一个方法,方法能判断字符串是否是Url地址(即判断字符串是否以“http://”),放回BOOL值类型85.写一个简单的Objective C中的类的继承示例 86.这段代码的意义,有没有问题
-(void) setName : (NSString*)name{[myname release];[name retain];myname = name;}复制代码
87.上机题 写一个iphone程序,有2屏,可以通过滑动切换,第二屏有一个webview,读取本地的html文件,Html文件中会加载一个本地xml文件,获取xml文件中的数据内容并显示。(可选:html中加载的js文件)
88.协议? 89.TCP、HTTP、UDP 90.什么是协议?分几层? 91.UIView从出现到销毁的过程 92.认证 93.drawRect方法什么时候调用 94.js和webview如何交互、 95.框架phonegap 96.地图中怎么计算两点间的曲线距离 97.定位不准如何优化 98.TCP和DUP的区别 这两包的字节内容有啥不同 答 :TCP多了一些纠错码包装,DUP纠错和校验码 99.简单的顺序列表 100.如何避免json解析出现内存泄露,内存泄露后怎么解决
iOS性能优化技巧
通过静态 Analyze 工具,以及运行时 Profile 工具分析性能瓶颈,并进行性能优化。结合本人在开发中遇到的问题,可以从以下几个方面进行性能优化。
-
view优化
-
透明,懒加载,不要使用layoutsubViews,尽量使用drawRect,不要直接调用,使用替代setneedsdisplayinrect,layoutifneeded,
-
UITableView优化
-
重用cell,透明。复杂的cell使用drawrect, 不要使用cellforrowatinddexpatn,cache尽可能高的东西,包括行高。
-
缓存优化
-
缓存,尽量缓存使用率高。但改变比较少的,服务器的相应,图片,计算结果
-
线程优化
-
线程,耗时操作放到子线程中。同步使用串行队列,代替同步锁
-
内存优化
-
内存优化,使用autoreleasepoll 实现减少 内存峰值。
-
代码细节优化
-
图片优化
-
对图片数据进行decode。在子线程中设置image的大小后,在imageview中使用缩放后的image。原因:由于UIImage的 imageWithData函数是每次画图的时候才将Data解压成ARGB的图像,所以在每次画图的时候,会有一个解压操作,UIImage初始化后仅 仅是把图片加载到内存中,而实际的解码和重采样是在图片需要显示时才进行。
//图片重采样,在子线程中进行CGSize itemSize = CGSizeMake(width, height);//实际要缩放的大小UIGraphicsBeginImageContext(itemSize);CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);[image drawInRect:imageRect];UIImage newImage = UIGraphicsGetImageFromCurrentImageContext(); //重采样后的图片UIGraphicsEndImageContext();复制代码
7、代码的优化,viewappear中不进行耗时操作,关键代码使用c效率更高。