iOS面试用到的一些知识点和技术
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面试用到的一些知识点和技术的更多相关文章
- IOS面试攻略
IOS面试攻略(1.0) 2013-10-13 20:58:09| 分类: IOS面试 | 标签:ios知识点总汇 ios面试 |举报|字号 订阅 来自:伊甸网 @ 看到这个关键字,我 ...
- ios面试技术要点
iOS面试 技术总结点(可参考):多线程 运行时 runloop app框架 几种动画编程 jsonmodel原理 sdwebimage原理 masonry怎么应用及原理 应用框架有哪些 说一下Fac ...
- iOS 面试基础题目
转载: iOS 面试基础题目 题目来自博客:面试百度的记录,有些问题我能回答一下,不能回答的或有更好的回答我放个相关链接供参考. 1面 Objective C runtime library:Obje ...
- iOS中关于KVC与KVO知识点
iOS中关于KVC与KVO知识点 iOS中关于KVC与KVO知识点 一.简介 KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCodin ...
- iOS开发中关于UIImage的知识点总结
UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...
- iOS面试贴士
iOS面试小贴士 ———————————————回答好下面的足够了------------------------------------- 多线程.特别是NSOperation 和 GCD 的内部原 ...
- C C++ OC iOS面试重点问题(一)
C C++ OC iOS面试重点问题(一) 1.字符串常量需要加\0 2.逻辑运算 位操作(经典:实现两个数的交换) 3.关键字 4.引用和指针的区别和联系 5.如何引用一个已经定义过的全局变量? ...
- IOS面试问题总结
IOS面试问题总结 分类: IOS开发2013-11-20 17:26 10458人阅读 评论(1) 收藏 举报 目录(?)[+] 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题 ...
- 十个iOS面试问题
十个iOS面试问题 十个iOS面试问题.不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会. ...
随机推荐
- 在JQ中关于this
this的相关问题 this指代的是什么 这个应该是比较好理解的,this就是指代当前操作的DOM对象. 在jQuery中,this可以用于单个对象,也可以用于多个对象. $('btn').click ...
- 【Win10 应用开发】人脸识别
可能你会认为人脸识别用起来会很复杂,老周当初也这么想,但通过实际操作后,我发现非然. 经过微软封装的东西,向来都是复杂问题简单化,只要用得舒心,代码越少越好,用最少的代码做最多的事情,此为大师境界也. ...
- Android获取可存储文件所有路径
引言:大家在做app开发的时候,基本都会保存文件到手机,android存储文件的地方有很多,不像ios一样,只能把文件存储到当前app目录下,并且android手机由于厂家定制了rom,sdcard的 ...
- 应用程序框架实战十七:DDD分层架构之值对象(层超类型篇)
上一篇介绍了值对象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意见.这其实是很自然的事情,设计本来就充满了各种可能性,没有绝对正确的做法,只有更好的实践.但是设计与实践的好与坏,对于不 ...
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...
- 排名前 8 的 PHP 调试工具
Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行.PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者 ...
- 利用private font改变PDF文件的字体
利用private font改变PDF文件的字体 前几天做项目,需要使用未安装的字体来改变PDF的文件.以前并没有实现过类似的功能,幸运的是我在网上找到了类似的教程,并成功实现了这个功能. 下面就跟大 ...
- 【原】IOS合并lib(.a)库的终极可用方法(可用于解决duplicate symbol静态库冲突)
网上流传了太多关于合并lib库的方法,自己也尝试过,但大多失败.有感于这种急于解决问题,经过百般尝试后依旧无果的无奈心情,小翁在这里用一个实例来完整阐述如何在mac中合并lib静态库. 这里以移动广告 ...
- Android 数据库框架OrmLite的使用(二)
前面说了OrmLite的基本使用,现在说下更规范的做法以及常用的一些功能. 1.DatabaseHelper package com.example.ormlite.db; import java.s ...
- SSH/SSL 源码编译安装简易操作说明
环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...