1、打造最受企业欢迎的iOS开发者:

  • 一直都存在的问题,什么样的员工最受企业欢迎?
  • 一直也有人在努力提升自己,成为受企业欢迎的员工
  • 然而,我们应该往方向去提升自己呢?
  • 88家知名企业今年来iOS面试题合集:
  • 你要的这里都有;
  • 企业要的这里也有;
  • 从基础开始到进阶、深入底层
  • 整理出188个大纲,干货太足
  • 每个题目都会有相对的答案,由于字数太多所以我整理出一个文档,文档获取地址,加入iOS开发交流群:659170228免费获取。打造最受企业欢迎的iOS开发者

2、大纲展示阶段一:

  • 01

    • 1、swift和oc的区别
    • 2、编译链接
    • 3、synthesize & denamic
    • 4、在项目开发中常用的开发工具有哪些?
    • 5、UITableView & UICollection
    • 6、NSProxy & NSObject
    • 7、Object & Swift
    • 8、传值通知 & 推送通知(本地&远程)
    • 9、第三方库 & 第三方平台
  • 02

    • 10、NSCache & NSDcitionary
    • 11、 UIView的setNeedsDisplay和setNeedsLayout方法
    • 12、UILayer & UIView
    • 13、layoutSubViews & drawRects
    • 14、UDID & UUID
    • 15、CPU & GPU
    • 16、点(pt)& 像素(px)
    • 17、属性与成员变量
    • 18、int和NSInteger的区别
      • (1)import和include
      • (2)@class
      • (3)全局 & 静态变量
    • 19、类和对象
      • (1)分类拓展协议中哪些可以声明属性?
      • (2)继承和类别的区别
      • (3)分类的作用
      • (4)分类的局限性
    • 20、category & extension
  • 03

    • 21、Foundation

      • (1)字符串
      • (2)字符串截取
      • (3)格式
    • 22、NSArray和NSDictionary
      • (1)iOS遍历数组/字典的方法
      • (2)NSValue NSNumber
      • (3)其它
      • (4)如何避免循环引用
    • 23、CFSocket使用有哪几个步骤
    • 24、Core Foundation中提供了哪几种操作Socket的方法?
    • 25、解析XML文件有哪几种方式?
    • 26、什么是沙盒模型?哪些操作是属于私有api范畴?
    • 27、在一个对象的方法里面:self.name= “object”;和 name =”object” 有什么不同吗?
    • 28、请简要说明viewDidLoad和viewDidUnload何时调用
    • 29、创建控制器、视图的方式
    • 30、简述内存分区情况
  • 04

    • 31、队列和栈有什么区别
    • 32、iOS的系统架构
    • 33、控件主要响应3种事件
    • 34、xib文件的构成分为哪3个图标?都具有什么功能
    • 35、简述视图控件器的生命周期
    • 36、app 项目的生命周期
      • (1)应用的生命周期
      • (2)简要说明一下APP的启动过程,main文件说起,main函数中有什么函数?作用是什么?
      • (3)UIApplicationMain函数作用
      • (4)main函数作用
    • 37、 动画有基本类型有哪几种;表视图有哪几种基本样式。
    • 38、实现简单的表格显示需要设置UITableView的什么属性、实现什么协议?
    • 39、Cocoa Touch提供了哪几种Core Animation过渡类型?
  • 05

    • 40、UIView与CLayer有什么区别?
    • 41、Quatrz 2D的绘图功能的三个核心概念是什么并简述其作用
    • 42、iPhone OS主要提供了几种播放音频的方法?
    • 43、使用AVAudioPlayer类调用哪个框架、使用步骤?
    • 44、有哪几种手势通知方法、写清楚方法名?
    • 45、ViewController的didReceiveMemoryWarning怎么被调用
    • 46、什么时候用delegate,什么时候用Notification?
    • 47、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
    • 48、写一个”标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
    • 49、关键字const有什么含意?修饰类呢?static的作用,用于类呢?还有extern c的作用
    • 50、关键字volatile有什么含意?并给出三个不同的例子

3、大纲展示阶段二:

  • 06

    • 51、一个参数既可以是const还可以是volatile吗? 一个指针可以是volatile 吗?解释为什么。
    • 52、static 关键字的作用
    • 53、列举几种进程的同步机制,并比较其优缺点。
    • 54、进程之间通信的途径
    • 55、进程死锁的原因
    • 56、死锁的4个必要条件
    • 57、死锁的处理
    • 58、cocoa touch框架
    • 59、自动释放池是什么,如何工作
    • 60、sprintf,strcpy,memcpy使用上有什么要注意的地方
  • 07

    • 61、你了解svn,cvs等版本控制工具么?
    • 62、什么是push
    • 63、静态链接库
    • 64、OC三大特性
      • (1)封装_点语法
      • (2)继承
      • (3)多态
    • 65、OC中如何实现多态
    • 66、Objective-C的优缺点
    • 67、对于OC,你认为最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以话,有没有考虑或者实现过重新实现OC的功能,如果有,具体怎么做?
    • 68、oc中可修改和不可以修改类型
    • 69、我们说的oc是动态运行时语言是什么意思?
    • 70、通知和协议的不同之处?
  • 08

    • 71、什么是推送消息?
    • 72、关于多态性
    • 73、什么是谓词?
    • 74、做过的项目是否涉及网络访问功能,使用什么对象完成网络功能?
    • 75、简单介绍下NSURLConnection类及+sendSynchronousRequest:returningResponse:error:与– initWithRequest:delegate:两个方法的区别?
    • 76、谈谈Object-C的内存管理方式及过程?
    • 77、Object-C有私有方法吗?私有变量呢?
    • 78、说说响应链
    • 79、时间传递 & 响应者链
  • 09

    • 80、frame和bounds有什么不同?
    • 81、方法和选择器有何不同?
    • 82、OC的垃圾回收机制?
    • 83、什么是延迟加载?
    • 84、是否在一个视图控制器中嵌入两个tableview控制器?
    • 85、一个tableView是否可以关联两个不同的数据源?你会怎么处理?
    • 86、什么时候使用NSMutableArray,什么时候使用NSArray?
    • 87、给出委托方法的实例,并且说出UITableVIew的Data Source方法
    • 88、在应用中可以创建多少autorelease对象,是否有限制?
    • 89、如果我们不创建内存池,是否有内存池提供给我们?
  • 10

    • 90、什么时候需要在程序中创建内存池?
    • 91、类NSObject的那些方法经常被使用?
    • 92、什么是简便构造方法?
    • 93、如何使用Xcode设计通用应用?
    • 94、 UIView的动画效果有那些?
    • 95、Object-C有多继承吗?没有的话用什么代替?cocoa 中所有的类都是NSObject 的子类
    • 96、内存管理 Autorelease、retain、copy、assign的set方法和含义?
    • 97、C和obj-c 如何混用
    • 98、类别的作用?继承和类别在实现中有何区别?
    • 99、类别和类扩展的区别。
    • 100、oc中的协议和java中的接口概念有何不同?

4、大纲展示阶段三:

  • 11

    • 101、深拷贝与前拷贝区别

      • (1)什么是深拷贝浅拷贝
      • (2)字符串什么时候使用copy,strong
      • (3)字符串所在内存区域
      • (4)mutablecopy和copy @property(copy) NSMutableArray *arr;这样写有什么问题
      • (5)如何让自定义类可以使用copy修饰符
    • 102、对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?
    • 103、#import 跟#include 又什么区别,@class呢, #import<> 跟 #import”"又什么区别?
    • 104、Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方法用继承好还是分类好?为什么?
    • 105、 #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?
    • 106、写一个setter方法用于完成@property (nonatomic,retain)NSString name,写一个setter方法用于完成@property(nonatomic,copy)NSString name
    • 107、常见的Objective-C的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int
    • 108、id 声明的对象有什么特性?
    • 109、Objective-C如何对内存管理的,说说你的看法和解决方法?
  • 12

    • 110、原子(atomic)跟非原子(non-atomic)属性有什么区别?
    • 111、看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什么?
    • 112、内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
    • 113、如何对iOS设备进行性能测试?
    • 114、设计模式
      • (1)mvc模式
      • (2)单例模式
      • (3)mvvm模式
      • (4)观察者模式
      • (5)工厂模式
      • (6)代理模式
      • (7)策略模式
      • (8)适配器模式
      • (9)模版模式
      • (10)外观模式
      • (11)创建模式
      • (12)MVP模式
    • 115、MVVM模式原理分析
    • 116、说说常用的几种传值方式
    • 117、什么时候用delegate,什么时候用Notification
    • 118、对于单例的理解
    • 119、从设计模式角度分析代理,通知和KVO区别?ios SDK 提供 的framework使用了哪些设计模式,为什么使用?有哪些好处和坏处?
    • 120、KVO,NSNotification,delegate及block区别
  • 13

    • 121、运行时(runTime)
    • 122、runtime/消息转发机制
      • (1)runtime

        • 1.1、什么是runtime
        • 1.2、runtime干什么用,使用场景
      • (2)消息机制
        • 2.1、消息转发的原理
        • 2.2、SEL isa super cmd 是什么
      • (3)动态绑定
        • 123、使用bugly进行崩溃分析
        • 124、jenkens 持续打包
        • 125、KVO & KVC
          • (1)底层实现
          • (2)KVO概述
          • (3)KVC概述
    • 126、什么是KVO和KVC?
      • KVO和KVC

        • (1)如何调用私有变量,如何修改系统的只读属性,KVC的查找顺序
        • (2)什么是键-值,键路径是什么
        • (3)kvo的实现机制
        • (4)KVO计算属性,设置依赖键
        • (5)KVO集合属性
        • (6)kvo使用场景
    • 127、SDWebImage(SDWebImage的实现机制)
      • (1)主要功能
      • (2)缓存
      • (3)内存缓存与磁盘缓存
    • 128、框架 SDWebimage的缓存机制
    • 129、网络安全
    • 密码的安全原则
    • 130、多线程
      • (1)多线程概念
      • (2)多线程的作用
      • (3)使用场景
  • 14

    • 131、NSOperationQueue和GCD的区别是什么
    • 132、GCD与NSThread的区别
    • 133、进程和线程的区别与联系是什么?
    • 134、别异步执行两个耗时操作,等两次耗时操作都执行完毕后,再回到主线程执行操作. 使用队列组(dispatch_group_t)快速,高效的实现上述需求
    • 135、在项目什么时候选择使用GCD,什么时候选择NSOperation?
    • 136、对比iOS中的多线程技术
    • 137、多线程优缺点
    • 138、iOS中的延迟操作
    • 139、串行队列同步执行和异步主队列
  • 15

    • 140、资源抢夺解决方案
    • 141、dispatch_barrier_async的作用是什么?
    • 142、在多线程Core Data中,NSC,MOC,NSObjectModel哪些需要在线程中创建或者传递?你是用什么策越来实现的?
    • 143、+(void)load与 +(void)initialize区别load 和 initialize方法的区别
    • 144、http的post与区别与联系,实践中如何选择它们?
    • 145、说说关于UDP/TCP的区别?
    • 146、http和scoket通信的区别?socket连接相关库,TCP,UDP的连接方法,HTTP的几种常用方式?
    • 147、HTTP请求常用的几种方式
    • 148、block
      • (1)使用block时什么情况会发生引用循环,如何解决?
      • (2)在block内如何修改block外部变量?
      • (3)Block & MRC-Block
      • (4)什么是block
      • (5)block 实现原理
      • (6)关于block
      • (7)使用block和使用delegate完成委托模式有什么优点
      • (8)多线程与block
      • (9)谈谈对Block 的理解?并写出一个使用Block执行UIVew动画?
      • (10)写出上面代码的Block的定义(接上题)
    • 149、Weak、strong、copy、assign 使用
      • (1)什么情况使用 weak 关键字,相比 assign 有什么不同?
      • (2)怎么用 copy 关键字?
      • (3)weak & strong
      • (4)这个写法会出什么问题: @property (copy) NSMutableArray *array
      • (5) 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
      • (6) @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
      • (7)ivar、getter、setter 是如何生成并添加到这个类中的?
      • (8)用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
      • (9)@protocol 和 category 中如何使用 @property
      • (10)runtime如何通过selector找到对应的IMP地址?
      • (11)retain和copy区别
      • (12)copy和strong的使用?
      • (13)NSString和NSMutableString,前者线程安全,后者线程不安全。
      • (14)readwrite,readonly,assign,retain,copy,weak ,strong,nonatomic 属性的作用
    • 150、OC与JS的交互(iOS与H5混编)
    • TableView性能优化
    • UITableView核心思想
    • UITableView的优化主要从三个方面入手:

5、大纲展示阶段四:

  • 16

    • 151、TableView为什么会卡?
    • 152、UITableView
      • (1)UITableView最核心的思想
      • (2)定义高度
      • (3)自定义高度原理
      • (4)老生常谈之UITableView的性能优化
      • (5)cell高度的计算
      • (5.1)定高的cell和动态高度的cell
      • (6)TableView渲染
      • (7)减少视图的数目
      • (8)减少多余的绘制操作
      • (9)不要给cell动态添加subView
      • (10)异步化UI,不要阻塞主线程
      • (11)滑动时按需加载对应的内容
      • (12)离屏渲染的问题
      • (13)离屏渲染优化方案
    • 153、环信SDK使用
    • 154、蓝牙
    • 155、在iPhone应用中如何保存数据?
    • 156、什么是coredata?
    • 157、 什么是NSManagedObject模型?
    • 158、什么是NSManagedobjectContext?
    • 159、 iOS平台怎么做数据的持久化?coredata 和sqlite有无必然联系?coredata是一个关系型数据库吗?
    • 160、CoreData & SQLite3
  • 17

    • 161、数据存储

      • (1)数据存储技术

        • (1.1)数据存储的几种方式
        • (1.2)各自特点(面试考点)
        • (1.3)偏好设置(面试考点)
        • (1.4)归档(面试考点)
      • (2)数据库技术(SQLite&CoreData)
    • 162、Objective-C堆和栈的区别?
    • 163、内存泄露 & 内存溢出
    • 164、堆 & 栈
      • (1)堆栈空间分配区别
      • (2)堆栈缓存方式区别
      • (3)堆栈数据结构区别
    • 165、内存管理
      • (1)内存区域

        • (1.1)堆和栈的区别
        • (1.2)iOS内存区域
      • (2)字符串的内存管理
      • (3)你是如何优化内存管理
      • (4)循环引用
      • (5)autorelease的使用
        • (5.1)工厂方法为什么不释放对象
        • (5.2)ARC下autorelease的使用场景
        • (5.3)自动释放池如何工作
        • (5.4)避免内存峰值
        • (5.5)ARC和MRC的混用
        • (5.6)NSTimer的内存管理
        • (5.7)ARC的实现原理
    • 166、Runloop
    • 167、fmmpeg框架
    • 168、fmdb框架
    • 169、320框架
    • 170、UIKit和CoreAnimation和CoreGraphics的关系是什么?在开发中是否使用过CoreAnimation和CoreGraphics?
  • 18

    • 171、trasform
    • 172、点讲动画和layer ,view的区别
    • 173、图层与视图
    • 174、平行的层级关系
    • 175、图层的能力
    • 176、使用图层
    • 177、核心绘图
      • (1)View和layer的区别
      • (2)new和alloc init的区别
    • 178、动画
    • 179、UICollectionView
      • (1)何实现瀑布流,流水布局
      • (2)和UITableView的使用区别
    • 180、UIImage
  • 19

    • 181、webview
    • 182、描述九宫格算法
    • 183、实现图片轮播图
    • 184、iOS网络框架
    • 185、网络
      • (1)网络基础
      • (2)网络传输
      • (3)AFN
    • 186、AFNetworking & ASIHttpRequest & MKNetWorking
      • (1)底层实现
      • (2)对服务器返回的数据处理
      • (3)监听请求过程
      • (4)在文件下载和文件上传的使用难易度
      • (5)网络监控
      • (6)ASI提供的其他实用功能
      • (7)MKNetworkKit
    • 187、性能优化
    • 188、算法

iOS开发提问题的更多相关文章

  1. 提供给Android和iOS开发人员的UWP移植向导

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:前几天微软发布了一个针对Android和iOS开发人员理解Windows Apps概念 ...

  2. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  3. iOS开发 引用第三方库出现duplicate symbol时的处理方法

      该篇文章是我自己从我的新浪博客上摘抄过来的, 原文链接为: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html     在iOS开发中, 难免 ...

  4. iOS开发系列--并行开发其实很容易

    --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的, ...

  5. iOS开发之多表视图滑动切换示例(仿"头条"客户端)---优化篇

    前几天发布了一篇iOS开发之多表视图滑动切换示例(仿"头条"客户端)的博客,之所以写这篇博客,是因为一位iOS初学者提了一个问题,简单的写了个demo做了个示范,让其在基础上做扩展 ...

  6. IOS开发基础知识--碎片19

    1:键盘事件顺序 UIKeyboardWillShowNotification // 键盘显示之前 UIKeyboardDidShowNotification // 键盘显示完成后 UIKeyboar ...

  7. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  8. iOS开发ARC内存管理技术要点

    本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...

  9. 从零开始学IOS开发

    从今天开始开一个坑,由于业务变动,要开始学习IOS开发进行IOS app开发,其实鄙人本身就是一只菜鸟加大学狗,有过两年的C#,ASP.NET MVC,微信公众平台开发经验,一只在继续努力着,从大三下 ...

随机推荐

  1. MQTT协议通俗讲解

    参考 Reference v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy(基于JDK) Chrome插件 MQTT ...

  2. Java基础--虚拟机JVM

    JVM内存结构 Heap Space: 堆内存(Heap Space)是由Young Generation和Old Generation组成,而Young Generation又被分成三部分,Eden ...

  3. (转)C#用Linq实现DataTable的Group by数据统计

    本文转载自:http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序 ...

  4. Day3-Python基础3--函数参数及调用

    一.return返回值 return的两个作用: 1)需要用一个变量来接受程序结束后返回的结果 2)它是作为一个结束符,终止程序运行 def test(): print("我是return前 ...

  5. boost的asio接收单路大数据量udp包的方法

    开发windows客户端接收RTP视频流,当h264视频达到1080P 60fps的时候,按包来调用recvfrom的函数压力比较大,存在丢包的问题,windows的完成端口的性能效果当然可以解决这个 ...

  6. java代码写个进程条

    总结:运用JProgressBar类.还有线程相关 package com.v; import java.awt.image.*; import java.awt.Color; import java ...

  7. Redis事务和watch

    redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的. redis中的事务定义 Redis中的事务(transaction)是一组命令的集合. 事务同 ...

  8. Redis codis 搭建测试

    codis Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别,有部分命令支持 Codis ...

  9. 基于mjpg-streamer网络视频服务器移植

    MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名. MJPEG 全名为 "Motion Joint Photographic Experts Group&q ...

  10. [机器学习基础]矩阵基础和numpy

    矩阵定义:[摘自百度百科] 由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵.记作: 这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称 ...