1. 怎么解决缓存池满的问题(cell)java
ios中不存在缓存池满的状况,由于一般咱们ios中开发,对象都是在须要的时候才会建立,有种经常使用的说话叫作懒加载,还有在UITableView中通常只会建立刚开始出如今屏幕中的cell,以后都是从缓存池里取,不会在建立新对象。缓存池里最多也就一两个对象,缓存池满的这种状况通常在开发java中比较常见,java中通常把最近最少使用的对象先释放。ios
2. CAAnimation的层级结构git
3. UIButton与UITableView的层级结构github
1> 继承结构面试
2> 内部的子控件结构sql
4. 如何渲染自定义格式字符串的UILabel数据库
1> 经过NSAttributedString类json
5. 设置scroll view的contensize能在Viewdidload里设置么,为何xcode
1> 能缓存
6. 按钮或者其它UIView控件的事件传递的具体过程
1> 回顾事件处理课程便可
7. 控制器View的生命周期及相关函数是什么?你在开发中是如何用的?
* 1.首先判断控制器是否有视图,若是没有就调用loadView方法建立:经过storyboard或者代码;
* 2.随后调用viewDidLoad,能够进行下一步的初始化操做;只会被调用一次;
* 3.在视图显示以前调用viewWillAppear;该函数能够屡次调用;
* 4.视图viewDidAppear
* 3.在视图显示以前调用viewWillDisappear;该函数能够屡次调用;
如须要);
* 5.在布局变化先后,调用viewWill/DidLayoutSubviews处理相关信息;
6、应用程序
1. NSRunLoop的实现机制,及在多线程中如何使用
NSRunLoop是IOS消息机制的处理模式
>1.NSRunLoop的主要做用:控制NSRunLoop里面线程的执行和休眠,在有事情作的时候使当前NSRunLoop控制的线程工做,没有事情作让当前NSRunLoop的控制的线程休眠。
>2.NSRunLoop 就是一直在循环检测,从线程start到线程end,检测inputsource(如点击,双击等操做)异步事件,检测timesource同步事件,检测到输入源会执行处理函数,首先会产生通知,corefunction向线程添加runloop observers来监听事件,意在监听事件发生时来作处理。
>3.runloopmode是一个集合,包括监听:事件源,定时器,以及需通知的runloop observers
>1. 只有在为你的程序建立次线程的时候,才须要运行run loop。对于程序的主线程而言,run loop是关键部分。Cocoa提供了运行主线程run loop的代码同时也会自动运行run loop。IOS程序UIApplication中的run方法在程序正常启动的时候就会启动run loop。若是你使用xcode提供的模板建立的程序,那你永远不须要本身去启动run loop
>2. 在多线程中,你须要判断是否须要run loop。若是须要run loop,那么你要负责配置run loop并启动。你不须要在任何状况下都去启动run loop。好比,你使用线程去处理一个预先定义好的耗时极长的任务时,你就能够毋需启动run loop。Run loop只在你要和线程有交互时才须要
2.IOS7以前,后台执行内容有几种形式,都是什么
通常的应用在进入后台的时候能够获取必定时间来运行相关任务,也就是说能够在后台运行一小段时间(10S左右)。
1. 后台播放音乐
2. 后台GPS跟踪
3. 后台voip支持
3简单说一下APP的启动过程,从main文件开始提及
程序启动分为两类:1.有storyboard 2.没有storyboard
有storyboard状况下:
1.main函数
2.UIApplicationMain
* 建立UIApplication对象
* 建立UIApplication的delegate对象
3.根据Info.plist得到最主要storyboard的文件名,加载最主要的storyboard(有storyboard)
* 建立UIWindow
* 建立和设置UIWindow的rootViewController
* 显示窗口
没有storyboard状况下:
1.main函数
2.UIApplicationMain
* 建立UIApplication对象
* 建立UIApplication的delegate对象
3.delegate对象开始处理(监听)系统事件(没有storyboard)
* 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中建立UIWindow
* 建立和设置UIWindow的rootViewController
* 显示窗口
4.把程序本身关掉和程序进入后台,远程推送的区别
1. 关掉后不执行任何代码, 不能处理事件
2. 应用程序进入后台状态不久后转入挂起状态。在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除。只有当用户再次运行此应用,应用才会从挂起状态唤醒,代码得以继续执行
3.或者进入后台时开启多任务状态,保留在内存中,这样就能够执行系统容许的动做
4.远程推送是由远程服务器上的程序发送到APNS,再由APNS把消息推送至设备上的程序,当应用程序收到推送的消息会自动调用特定的方法执行事先写好的代码
5本地通知和远程推送通知对基本概念和用法?
本地通知和远程推送通知均可以向不在前台运行的应用发送消息,这种消息既多是即将发生的事件,也多是服务器的新数据.不论是本地通知仍是远程通知,他们在程序界面的显示效果相同,均可能显示为一段警告信息或应用程序图标上的微章.
本地通知和远程推送通知的基本目的都是让应用程序可以通知用户某些事情, 并且不须要应用程序在前台运行.两者的区别在于本地通知由本应用负责调用,只能从当前设备上的iOS发出, 而远程通知由远程服务器上的程序发送到APNS,再由APNS把消息推送至设备上的程序
7、第三方框架
1. 第三方API是怎么用的?
1> 大公司的开放API
2> github上面别人发布的框架
用
l 第三方API在官方文档都有说明,按照官方文档的一步一步作
l 参考官方提供的示例程序
l 先本身建立一个工程试试,等熟悉了,在使用到项目中
2. 列举如今熟悉iOS开发库和第三方开发库?
友盟(包括第三方登陆和分享),高德地图,百度地图,AFN,SDWebimage,FMDB, MBProgressHUD等等
8、其余
1. 客户端安全性处理方式?
1> 网络数据传输(敏感数据[帐号\密码\消费数据\银行卡帐号], 不能明文发送)
2> 协议的问题(自定义协议, 游戏代练)
3> 本地文件存储(游戏的存档)
4> 源代码
2. sip是什么?
1> SIP(Session Initiation Protocol),会话发起协议
2> SIP是创建VOIP链接的 IETF 标准,IETF是全球互联网最具权威的技术标准化组织
3> 所谓VOIP,就是网络电话,直接用互联网打电话,不用耗手机话费
3. 有些图片加载的比较慢怎么处理?你是怎么优化程序的性能的?
1> 图片下载放在异步线程
2> 图片下载过程当中使用占位图片
3> 若是图片较大,能够考虑多线程断点下载
4. 你实现过一个框架或者库以供别人使用么?若是有,请谈一谈构建框架或者库时候的经验;若是没有,请设想和设计框架的public的API,并指出大概须要如何作、须要注意一些什么方面,来使别人容易地使用你的框架。
1> 提供给外界的接口功能是否实用、够用
2> 别人使用个人框架时,能不能根据类名、方法名就猜出接口的具体做用
3> 别人调用接口时,提供的参数是否够用、调用起来是否简单
4> 别人使用个人框架时,要不要再导入依赖其余的框架
5. App须要加载超大量的数据,给服务器发送请求,可是服务器卡住了如何解决?
1> 设置请求超时
2> 给用户提示请求超时
3> 根据用户操做再次请求数据
6. 利用NSNotificationCenter实现跨多控制器传输数据和消息中用同步仍是异步?
7. 如何编写xml
8. 地图导航不能用了怎么办
提示用户打开导航定位功能
9. SDWebImage具体如何实现
1> 利用NSOperationQueue和NSOperation下载图片, 还使用了GCD的一些函数(解码GIF图片)
2> 利用URL做为key,NSOperation做为value
3> 利用URL做为key,UIImage做为value
10. AFN 与 ASI 有什么区别
1> AFN基于NSURL,ASI基于底层的CFNetwork框架,所以ASI的性能优于AFN
2> AFN采起block的方式处理请求,ASI最初采起delegate的方式处理请求,后面也增长了block的方式
3> AFN只封装了一些经常使用功能,知足基本需求,直接忽略了不少扩展功能,好比没有封装同步请求;ASI提供的功能较多,预留了各类接口和工具供开发者自行扩展
4> AFN直接解析服务器返回的JSON、XML等数据,而ASI比较原始,返回的是NSData二进制数据
11. 你在实际开发中,有哪些手机架构与性能调试经验
1> 刚接手公司的旧项目时,模块特别多,并且几乎全部的代码都写在控制器里面,好比UI控件代码、网络请求代码、数据存储代码
2> 接下来采起MVC模式进行封装、重构
l 自定义UI控件封装内部的业务逻辑
l 封装网络请求工具类
l 封装数据存储工具类
12. runloop定时源和输入源
1> 你建立的程序不须要显示的建立run loop;每一个线程,包括程序的主线程(main thread)都有与之相应的run loop对象, 主线程会自行建立并运行run loop
2> Run loop处理的输入事件有两种不一样的来源:输入源(input source)和定时源(timer source)
3> 输入源传递异步消息,一般来自于其余线程或者程序。定时源则传递同步消息,在特定时间或者必定的时间间隔发生
13. 大家项目中都用了哪些框架, 及何种开发工具,具体到是哪一个版本,这个版本的特性有哪些???(好比xcode的版本)
1> AFN、SDWebImage、MBProgressHUD等 (搜索: 网易新闻 第三方库)
2> Xcode 5.0
14. 本身怎么实现原子锁
iOS中通常用nonaotomic
15. 运行时的内部实现
16. 即时通信中的大数据处理
用put上传到文件服务器,而后发带url的自定义格式的给对方,对方接收到以后下载
17. json解析的具体实现
1> SBJson
2> JSONKit
3> NSJSONSerialization
18. 若是在网络数据处理过程当中,发现一处比较卡,通常怎么解决
1> 检查网络请求操做是否被放在主线程了
2> 看看异步请求的数量是否太多了(子线程数量)
3> 数据量是否太大?若是太大,先清除一些没必要要的对象(看不见的数据、图片)
4> 手机CPU使用率和内存问题
19. 怎么介绍一个项目
1> 项目的价值(能够加些“老板”关键字)
2> 项目的模块
3> 我作的是哪一个模块
20. 怎么解决sqlite锁定的问题
1> 设置数据库锁定的处理函数
int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
2> 设定锁定时的等待时间
int sqlite3_busy_timeout(sqlite3*, 60); :
9、百度面试题
百度面试题目:
自我介绍下,而后说说本身作的哪些项目,在这些项目中作了哪些功能
请介绍一下isa指针,怎么用,用来干吗!!!
控制器的生命周期
怎么实现和qq相似的收到图片显示一个小三角的(使用quarzcore) 不能给view使用背景图片
使用coregrahiis该变view的样式。剪裁出一个三角
coreanimation 里面含有什么东西
谈一谈你是怎么封装view的
6\7适配怎么进行的
autolayout?
存储字典怎么进行
runtime怎么添加属性方法
category和extension区别
如何判断两个链表是否有交叉,求交叉点
socket?包含的哪些方法
AsyncSokcet