• iOS开发提问题


    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、算法
  • 相关阅读:
    关于盒模型的外边距padding和内边距margin
    CSS概述(最详细!!!)
    关于html的基本知识
    Maven学习(1)-什么是Maven
    IntelliJ IDEA+Github+Maven+Jenkins+SipringBoot+VUE搭建Web开发环境样例(2)-创建一个简单的查询数据库项目
    IntelliJ IDEA+Github+Maven+Jenkins+SipringBoot+VUE搭建Web开发环境样例(1)-安装与配置
    YARN(待了解)
    Mesos(待了解)
    Kubernetes-中文文档地址(收藏)
    Jenkins学习(4)-Jenkins的API(收藏)
  • 原文地址:https://www.cnblogs.com/CH520/p/9463270.html
Copyright © 2020-2023  润新知