1、APP的生命周期和viewcontroler的生命周期?

答:APP的生命周期:在APP的代理中分为七个阶段:

1.将要启动

2.已经启动

3.将要进入非活动状态

4.进入后台

5.从后台进入前台

6.进入活动状态

7.内存告警

viewcontroller的生命周期:(也是七个)

loadView->viewDidLoad->viewWillAppear->viewDidAppear->viewWillDisAppear->viewDidDisAppear->delloc

2、多线程:NSThread、NSOperation、GCD

  NSOperation 是个抽象类,并不具备封装操作的能力,必须使⽤它的子类:

  NSInvocationOperation    (使用代理)

  NSBlockOperation        (使用block)

  GCD---

  Grand Central Dispatch (GCD) 是Apple开发的一个多核编程的较新的解决方法

  

  • GCD可用于多核的并行运算
  • GCD会自动利用更多的CPU内核(比如双核、四核)
  • GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程
  • 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码

  学习GCD之前,先来了解GCD中两个核心概念:任务和队列

任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在GCD中是放在block中的。执行任务有两种方式:同步执行异步执行。两者的主要区别是:是否具备开启新线程的能力。

  • 同步执行(sync):只能在当前线程中执行任务,不具备开启新线程的能力
  • 异步执行(async):可以在新的线程中执行任务,具备开启新线程的能力
  • 队列:这里的队列指任务队列,即用来存放任务的队列。队列是一种特殊的线性表,采用FIFO(先进先出)的原则,即新任务总是被插入到队列的末尾,而读取任务的时候总是从队列的头部开始读取。每读取一个任务,则从队列中释放一个任务。在GCD中有两种队列:串行队列并发队列
    想要更详细的了解GCD去看:http://www.jianshu.com/p/2d57c72016c6
  • 3、单例、代理、属性、通知、block的传值技术?
  • 属性传值很好理解。A->B  就在B的.h中暴露出一个属性就可以了,在A中直接调用B的实例进行赋值就可以了。   也是最简单的传值方法
  • 代理传值  A->B  在A中声明协议  在B中遵循协议  并实现协议方法就可以了        也比较简单
  • B->A  即反向传值    在B中声明协议  A中遵循协议----- 在A中push到B时遵循协议,设置代理  并实现代理方法   在B中pop回A时利用自己的代理执行代理方法(即把B中的值赋给代理方法中的参数即可)  是不是很简单
  • 只要记住   代理反向传值   谁传谁声明协议   接收方实现代理方法   push前遵循协议设置代理   pop前执行代理方法(赋值)
  • block 传值分为正向传值和反向传值

正向传值  A->B  在A中声明一个block    Apush前进行block的实现block    B中要赋值的时候进行调用block      这种block应为带参数和返回值的block

反向传值 B->A 在B中声明一个block  Apush前实现block    Bpop前调用block    这种block应为带参数的block


单例传值也分为正向传值 和反向传值

正向传值就不说了     说白了就是一个中间者  A->B     A->C   C->A

反向传值的话就是    B->A  Bpop时把值赋值给单例    在界面消失时实例化A的对象 把单例的值赋给A      (感觉多此一举  还不如直接属性赋值   但单例在数据共享时还是有用处的)

4、MVC、MVVM、MVP三大设计框架

  MVC

缺陷:

实在是写的太好了  就直接拿过来了

MVVM:

MVP:

5、单例(singleton)代理(delegate)观察者(observer)动作/目标机制(target/action)等常见设计模式

单例:

代理:

观察者:

动作/目标机制:

总结的好,希望能收获一个赞  给点鼓励

这是第一章总结的面试题就有一大堆东西了

接下来还有第二章  或者我的简书地址去看看:http://www.jianshu.com/users/795c2ec428fd/latest_articles   也收藏了些干货。

谢谢大家的支持

iOS面试用到的一些知识点和技术的更多相关文章

  1. IOS面试攻略

    IOS面试攻略(1.0) 2013-10-13 20:58:09|  分类: IOS面试 |  标签:ios知识点总汇  ios面试  |举报|字号 订阅     来自:伊甸网 @ 看到这个关键字,我 ...

  2. ios面试技术要点

    iOS面试 技术总结点(可参考):多线程 运行时 runloop app框架 几种动画编程 jsonmodel原理 sdwebimage原理 masonry怎么应用及原理 应用框架有哪些 说一下Fac ...

  3. iOS 面试基础题目

    转载: iOS 面试基础题目 题目来自博客:面试百度的记录,有些问题我能回答一下,不能回答的或有更好的回答我放个相关链接供参考. 1面 Objective C runtime library:Obje ...

  4. iOS中关于KVC与KVO知识点

    iOS中关于KVC与KVO知识点 iOS中关于KVC与KVO知识点  一.简介 KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCodin ...

  5. iOS开发中关于UIImage的知识点总结

    UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...

  6. iOS面试贴士

    iOS面试小贴士 ———————————————回答好下面的足够了------------------------------------- 多线程.特别是NSOperation 和 GCD 的内部原 ...

  7. C C++ OC iOS面试重点问题(一)

    C C++ OC iOS面试重点问题(一) 1.字符串常量需要加\0 2.逻辑运算 位操作(经典:实现两个数的交换) 3.关键字 4.引用和指针的区别和联系 5.如何引用一个已经定义过的全局变量?  ...

  8. IOS面试问题总结

    IOS面试问题总结 分类: IOS开发2013-11-20 17:26 10458人阅读 评论(1) 收藏 举报   目录(?)[+]   通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题 ...

  9. 十个iOS面试问题

    十个iOS面试问题 十个iOS面试问题.不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会. ...

随机推荐

  1. Node.js返回JSONP

    在使用JQuery的Ajax从服务器请求数据或者向服务器发送数据时常常会遇到跨域无法请求的错误,常用的解决办法就是在Ajax中使用JSONP.基于安全性考虑,浏览器会存在同源策略,然而<scri ...

  2. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

    今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...

  3. Spring学习记录(八)---Bean的生命周期

    之前说过,在调用下面时,就创建了容器和对象 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml&quo ...

  4. rabbitMQ第五篇:Spring集成RabbitMQ

    前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> ...

  5. Nginx配置文件nginx.conf详解

    #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...

  6. 解决adb.exe' and can be executed.

    百度google大家多说的是任务管理器 kill掉adb 或者重启adb server,但我任务管理器就没有adb ,猜测是某个程序占用了adb端口.于是按此思路查找. 5037为adb默认端口 查看 ...

  7. Linq 知识回顾

    开篇语 在说LINQ之前必须先说说几个重要的C#语言特性 与LINQ有关的语言特性 隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...

  8. (App.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

    (App.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/MainPage.xaml", UriKi ...

  9. 搭建AngualarJS开发环境

    1.选择Web浏览器 Chrome和Firefox浏览器 2.选择代码编辑器 Subline Text和Visual Studio Code 3.安装Web服务器 3.1Apache HTTP Ser ...

  10. 塞翁失马,焉知非福:由 Styles.Render 所引发 runAllManagedModulesForAllRequests="true" 的思考

    最近在使用 MVC 开发的时候,遇到一个对我来说"奇怪的问题",就是使用 BundleTable 进行 CSS.JS 文件绑定,然后使用 Styles.Render.Scripts ...