iOS面试题大全-点亮你iOS技能树

作者: 启发禅悟 | 来源:发表于2016-05-26 17:26 被阅读27735次

    有很多人喜欢这篇文章,那么我就多打一个广告吧,其实有对应的iOS 应用可以下载,下载地址:iOS面试题大全-点亮您的iOS技能树

    iOS面试题大全-点亮您的iOS技能树.png

    此外,有人向我询问这个应用的开发过程,我也会尽快整理出来,并把应用开源。


    正文

    学iOS一年多了,很想对自己的知识进行一个梳理,而最近又陆陆续续看到了不少iOS面试题,所以想整理下这些问题,同时写一个iOS面试题应用,所以就有了这篇文章。

    所有的内容大部分来自于网络的搜集,所以我不是一个创造者,而是一个搬运工。我尽量把题目,尤其是参考答案的出处列明。若有任何疑问,建议,意见,请联系我。

    第一部分面试题来源于iOS-Developer-Interview-Questions,用[◇]标示,难度是根据我自己的水平来标识的。
    其中大部分答案来源于没阳光的午后的三篇
    你能用到的iOS面试题(一)
    你能用到的iOS面试题(二)
    你能用到的iOS面试题(三)
    没阳光的午后还写了其他很多有质量的iOS开发文章,大家可以去学习。

    第二部分面试题来源于微博@我就叫Sunny怎么了的这篇博文:《招聘一个靠谱的 iOS》,其中共55题,除第一题为纠错题外,其他54道均为简答题。用[※]标示,难度是微博@我就叫Sunny怎么了标识的。
    答案为微博@iOS程序犭袁整理,未经出题者校对,如有纰漏,请向微博@iOS程序犭袁指正。

    第三部分面试题来源于iOS程序员面试,绝对会遇到这些问题!,和第一部分有一半的重叠,因为这两部分都是从iOS-Developer-and-Designer-Interview-Questions衍生过来的。用[◆]标示,难度是根据我自己的水平来标识的。
    绝大部分是我自己给出的参考意见(或者参考链接),大家有问题可以联系我,欢迎批评指正。

    其他一部分从一些同学的整理中搬运过来,有些是重叠的,或者类似的问题,我可能就整合了。这些来自
    Jack_lin iOS,面试必看,最全梳理
    pingui iOS面试题,持续更新...等等,用[○]标示,难度是根据我自己的水平来标识的。

    还有一部分是我自己补充的问题,用[●]标示,难度是根据我自己的水平来标识的。

    Swift的内容来自这里【面试必备】Swift 面试题及其答案, 因为我对swift不熟悉,所以仅摘录了一部分面试题目。也没有标识难度。今年会开始swift的学习,到时候再补充吧。

    今天有发现一位大拿的博客,比我整理的还全面,大家可以参考:
    iOS面试宝典

    还有需要说明的是,带[自]标记的目前暂时没有参考答案,所以链接里面的内容是空的,大家可以不必点击进去。

    • 编码规范

    问题[※]: 请Review下面的代码,并根据iOS的编码规范做出正确的修改

    • 版本控制

    问题[◇◇]:请问您用过什么版本控制工具?并简述其工作流程。
    问题[◇◇◇]:有没有在 GitHub 上发布过开源代码,参与过开源项目?

    • 开发工具
    • Xcode
      • Instruments

    问题[◇◇◇◇]:你一般是怎么用 Instruments 的?
    问题[○○○○○]:讲讲你用Instrument优化动画性能的经历吧(如果有的话)

    • Xcode插件

    问题[●●●]:有用过哪些Xcode的插件来提高工作效率?
    问题[◇◇◇]:您开发常用的工具有哪些?
    问题[◆◆◆][自]:谈一谈你常用的开发工具都有哪些优势?

    • 运行调试

    问题[○○○]:谈谈iOS开发中Debug和Release的区别和使用
    问题[●●●]:您是怎么调试iOS程序的(谈谈您的iOS调试经验?)
    问题[◇◇◇]:有哪些常见的 Crash 场景?
    问题[※※※]:如何调试BAD_ACCESS错误
    问题[※※※]:lldb(gdb)常用的调试命令?
    问题[◇◇◇]:如果一个函数10次中有7次正确,3次错误,问题可能出现在哪里?
    问题[◆◆◆]:你会选择什么工具来追踪Bug?
    问题[◆◆◆]:如果在Cocoa中发现一个Bug,你会如何处理?
    问题[◆◆◆]:如果应用的新版本出现了Regression的情况,该如何补救?如何防止用户在使用过程中遇到新的Bug?

    问题[◆◆◆][自]:是否有最中意的错误报告?

    • CocoaPods

    问题[◇◇]:熟悉 CocoaPods 么?能大概讲一下工作原理么?

    • 关于App Store

    问题[◆◆◆]:请描述一下你的iOS应用开发流程。
    问题[◆◆◆]:应用内购买(In-App Purchases)是怎么回事?IAP能够为用户带来哪些新体验?
    问题[◆◆]:你是否在App Store上发布过应用?能否概括一下过程?
    问题[◆◆]:iTunes Connect是什么?
    问题[◆◆]:Provisioning Profiles是指?
    问题[◆]:App ID是什么?
    问题[◆◆◆]:iOS的开发和发布签名证书有何异同?
    问题[◆◆◆]:如何使用TestFlight?
    问题[◆◆◆]:通过Ad-hoc发布应用的话,该如何使用UUID?
    问题[◆◆◆◆]:应何时验证购买收据?
    问题[◆]:发布iAds(苹果平台广告)有哪些要求?
    问题[◇◇◇◇◇]:iOS 的签名机制大概是怎样的?

    • Objective-C
    • 基础语法

      • 关键字

    问题[○○]:关键字const有什么含意?修饰类呢?
    问题[○]:#define和const变量有什么区别?
    问题[○○○]:请用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
    问题[○○○]:写一个”标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
    问题[○○○]:关键字volatile有什么含意?
    问题[○○]:关键字static有什么作用?
    问题[○○]:请谈谈#include与#import的区别、#import与@class 的区别
    问题[○○]:请分别说明@public、@protected、@private 它们的含义与作用
    问题[○○]:什么是id类型,id 声明的对象有什么特性?
    问题[○○]:请谈一谈self、super关键字的作用
    问题[○○○]:谈谈您对@synthesize、@dynamic的理解
    问题[○○○]:请解释self = [super init]方法
    问题[○○]:请问常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int
    问题[◆◆◆◆]:请说明如何使用Instancetype及其重要性。

    • 属性访问

    问题[※]:请问@property中有哪些属性关键字?
    问题[※※※]:ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些?
    问题[○○○]:@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
    问题[○○]:什么情况使用 weak 关键字,相比 assign 有什么不同?
    问题[※]:weak属性需要在dealloc中置nil么?
    问题[○○○○]:@protocol 和 category 中如何使用 @property
    问题[※※※]:用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
    问题[○○○]:这个写法会出什么问题: @property (copy) NSMutableArray *array;
    问题[※※]:@synthesize和@dynamic分别有什么作用?
    问题[※※※]:@synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为_foo的实例变量,那么还会自动合成新变量么?
    问题[※※※※※]:在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景?
    问题[◇]:如何为 Class 定义一个对外只读对内可读写的属性?
    问题[○○○]:在一个对象的方法里面:self.name = @"object";和name =@"object";有什么不同吗?
    问题[○○○]:为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain的?
    问题[○○○]:怎么用 copy 关键字?
    问题[○○○]:请解释一下关键词的区别:assign vs weak, __block vs __weak

    • Block

    问题[○○]:什么是block
    问题[○○○]:使用block有什么好处?使用NSTimer写出一个使用block显示(在UILabel上)秒表的代码
    问题[◇◇◇]:谈谈block使用时的注意点?
    问题[○○○]:block和代理的区别,哪个更好?
    问题[※※]:使用block时什么情况会发生引用循环,如何解决?
    问题[※※]:在block内如何修改block外部变量?
    问题[※※※]:使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?

    • Category

    问题[○○○]:类别和类扩展的区别
    问题[○○○]:分类的作用?分类和继承的区别?
    问题[○○○]:重写一个类的方式用继承好还是分类好? 为什么?
    问题[◇◇]:iOS Extension 是什么?能列举几个常用的 Extension 么?
    问题[◇◇◇◇◇]:如何让 Category 支持属性?

    • KVC/KVO

    问题[○○○]:什么是KVC/KVO
    问题[※※]:addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调?
    问题[※※※]:如何手动触发一个value的KVO
    问题[※※※]:若一个类有实例变量NSString *_foo,调用setValue:forKey:时,可以以foo还是_foo作为key?
    问题[※※※※]:KVC的keyPath中的集合运算符如何使用?
    问题[※※※※]:KVC和KVO的keyPath一定是属性么?
    问题[※※※※※]:如何关闭默认的KVO的默认实现,并进入自定义的KVO实现?
    问题[※※※※※]:apple用什么方式实现对一个对象的KVO?

    • Protocal/Delegate

    问题[○○]:代理的作用?
    问题[○○]:OC有多继承吗?没有的话用什么代替?
    问题[◇◇]:什么是 Protocol,Delegate 一般是怎么用的?

    • Notification

    问题[○○]:什么是Notification?
    问题[◇◇◇]:谈谈NSNotification 和 KVO 的使用场景?
    问题[◇◇◇◇◇]:为什么 NotificationCenter 要 removeObserver? 如何实现自动 remove?

    • 面向对象

    问题[○○○]:我们说的oc是动态运行时语言是什么意思?
    问题[※※]:objc中向一个nil对象发送消息将会发生什么?
    问题[※※※]:objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?
    问题[○○○]:为什么其他语言里叫函数调用,Object-C里则叫给我对象发消息
    问题[○○○○]:对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?
    问题[○○○]:isMemberOfClass 和 isKindOfClass 联系与区别
    问题[※※※]:什么时候会报unrecognized selector的异常?
    问题[※※※※]:一个objc对象的isa的指针指向什么?有什么作用?
    问题[※※※※※]:objc中的类方法和实例方法有什么本质区别和联系?
    问题[※※※※※]:_objc_msgForward函数是做什么的,直接调用它将会发生什么?
    问题[※※※※※]:能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
    问题[○○]:C和obj-c 如何混用
    问题[◇◇◇◇◇]:Objective-C 中,meta-class 指的是什么?
    问题[◇◇◇]:Toll-Free Bridging 是什么?什么情况下会使用?

    • 内存管理

    问题[○○]:请谈谈堆和栈的区别
    问题[○○○]:请问深拷贝和浅拷贝有什么区别?
    问题[◇◇◇]:iOS 是如何管理内存的?
    问题[○○○]:什么是ARC(ARC是为了解决什么问题诞生的)?
    问题[※※※※]:ARC通过什么方式帮助开发者管理内存?
    问题[※※※※]:一个objc对象如何进行内存布局?(考虑有父类的情况)
    问题[※※※※]:不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)
    问题[※※※※※]:苹果是如何实现autoreleasepool的?
    问题[○○○]:描述一个你所遇到retain cycle例子
    问题[○○○○]:请谈谈内存的使用和优化的注意事项

    • 多线程

    问题[○○]:线程与进程的区别和联系?
    问题[○○]:什么是多线程
    问题[○○○]:请简单介绍下iOS的多线程
    问题[◇◇◇◇]:什么时候选择NSOperation? NSOperation 相比于 GCD 有哪些优势?
    问题[○○○]:谈谈队列和多线程的使用原理
    问题[○○○]:使用atomic一定是线程安全的吗?
    问题[○○○]:Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
    问题[○○○]:有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成执行?如果需要a、b、c、d顺序执行,该如何实现?
    问题[※※]:GCD的队列(dispatch_queue_t)分哪两种类型?
    问题[※※※※]:如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)
    问题[※※※※]:dispatch_barrier_async的作用是什么?
    问题[※※※※※]:苹果为什么要废弃dispatch_get_current_queue?

    • Runloop

    问题[◇◇◇◇]:什么是 Runloop?
    问题[※※※]:runloop和线程有什么关系?
    问题[※※※]:runloop的mode作用是什么?
    问题[※※※※※]:猜想runloop内部是如何实现的?
    问题[○○○○]:UITableViewCell上有个UILabel,显示NSTimer实现的秒表时间,手指滚动cell过程中,label是否刷新,为什么?
    问题[※※※※]:以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?
    问题[◇◇◇◇]:为什么 UIScrollView 的滚动会导致 NSTimer 失效?

    • Runtime

    问题[○○○○]:runtime 如何实现 weak 属性
    问题[※※※※]:runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法)
    问题[※※※※]:使用runtime Associate 方法关联的对象,需要在主对象dealloc的时候释放么?
    问题[※※※※※]:runtime如何实现weak变量的自动置nil?
    问题[○○○○○]:什么是method swizzling?
    问题[◇◇◇◇◇]:+(void)load; +(void)initialize;有什么用处?
    问题[◇◇◇◇◇]:如何访问并修改一个类的私有属性?
    问题[◇◇◇◇◇]:Objective-C 如何对已有的方法,添加自己的功能代码以实现类似记录日志这样的功能?

    • Cocoa Touch Layer
      • High Level Features

    问题[◆◆◆]:Cocoa Touch Layer 包含什么?不包含什么?
    问题[●●●]:什么是App Extentions?
    问题[●●●]:什么是Handoff?
    问题[●●●]:什么是Document Picker?
    问题[●●●]:什么是AirDrop?
    问题[●●●]:什么是TextKit
    问题[●●●]:什么是UIKit Dynamics?
    问题[●●●]:什么是Multitasking?
    问题[●●●]:什么是Auto Layout?
    问题[●●●]:什么是Storyboards?
    问题[●●●]:什么是UI State Preservation?
    问题[●●●]:什么是Apple Push Notification Service?
    问题[●●●]:什么是Local Notifications?
    问题[●●●]:什么是Gesture Recognizers?
    问题[●●●]:什么是Standard System View Controllers?
    问题[◆◆◆]:请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的。
    问题[◆◆◆]:iOS应用是如何实现后台多任务处理(Multitasking)的?
    问题[◇◇◇]:iOS 7的多任务添加了哪两个新的 API? 各自的使用场景是什么?
    问题[◆◆◆]:Game Center针对iOS游戏有哪些功能?

    • Cocoa Touch Frameworks
      • APP

    问题[◆◆◆]:AppDelegate扮演着什么样的角色?
    问题[○○○]:请谈谈应用的生命周期
    问题[◇◇◇◇]:当系统出现内存警告时会发生什么?
    - 基础控件

    问题[◆◆◆]:请解释一下启动画面(Launch Images)。
    问题[◆◆◆]:什么是模态视图?
    问题[◆◆◆]:什么是分段控件?
    问题[◆◆◆]:应该在什么情况下使用标签、文本域和文本视图?
    问题[◆◆◆]:选取器视图(Picker View)适合存放哪类内容?
    问题[◆◆◆]:Splitview Controller是什么?
    问题[◆◆◆][自]:什么时候用“弹出(Popover)”属性最为合适?
    问题[◆◆◆]:表视图(Table View)是什么?集合视图(Collection View)又是什么?
    问题[◆◆◆]:选项卡(Tab Bar)和工具栏(Toolbar)分别是什么?两者之间有何共同点和不同点?
    问题[◆◆◆][自]:导航栏(Navigation Bar)是什么?能否拿出你的iPhone,指出你下载的哪些应用运用了导航栏?
    问题[◆◆◆]:设备状态栏(Device Status Bar)是什么?高度如何?是否透明?在手机通话或者导航状态下,它是如何显示的?
    问题[○○○]:自定义实现UITabbarController的原理

     -  View Controller
    

    问题[◆◆◆]:Controller Life-Cycle以及View Life-cycle分别有哪些调试方法?
    问题[○○○]:请谈一谈UIViewController的完整生命周期
    问题[○○○]:ViewController 的 loadView,、viewDidLoad,、viewDidUnload 分别是在什么时候调用的?
    问题[○○○]:push view controller 和 present view controller的区别
    问题[◇◇◇◇]:哪些途径可以让 ViewController 瘦下来?

     -  View
    

    问题[○○○○]:谈谈控制器View的加载过程?
    问题[○○○○]:loadView干嘛用的?
    问题[○○○○]:LayoutSubViews在什么时候被调用?
    问题[○○○○]:使用drawRect有什么影响?
    问题[○○○]:一个view已经初始化完毕,view上面添加了n个button,除用view的tag之外,还可以采用什么办法来找到自己想要的button来修改button的值
    问题[◇◇◇◇]:请问UIView和CALayer是什么关系?
    问题[◇◇◇◇◇]:+[UIView animateWithDuration :animations: completion:] 内部大概是如何实现的?
    问题[◇]:frame和bounds有什么不同?

     -  Tableview
    

    问题[○○]:UITableView的数据源方法和代理方法?
    问题[○○]:说说您对于单元格重用的理解
    问题[○○○]:如何解决cell重用时出现的问题
    问题[◇◇◇◇]:当 TableView 的 Cell 改变时,如何让这些改变以动画的形式呈现?
    [问题[○○○○]:谈谈UITableViewCell是如何优化表格的?

     -  Event
    

    问题[◆◆◆]:按钮或者其他控件可以响应哪些事件?
    问题[◆◆◆]:请简要描述一下UIScrollView的执行过程。它是如何响应手势识别(Gesture Recognizer)、多点触控(Multi-Touch)和Run Loop的?
    问题[○○○]:view的touch事件有哪些?
    问题[◇◇◇◇]:什么是响应者链,它是怎么工作的?

     -  Storybaord
    

    问题[◆◆◆]:请描述一下Storyboard和标准NIB文件的差别。
    问题[※※]:IBOutlet连出来的视图属性为什么可以被设置成weak?
    问题[※※※※※]:IB中User Defined Runtime Attributes如何使用?
    问题[◆◆◆]:自动布局(Auto Layout)的作用是什么?请概括一下它是如何运行的。

     -  通知
    

    问题[◆◆◆]:iOS提供哪些种类的通知?
    问题[○○○○]:说说APNS的推送机制
    问题[◇◇◇]:Push Notification 是如何工作的?
    - 其他

    问题[◇◇◇]:iOS 的沙盒目录结构是怎样的? App Bundle 里面都有什么?
    问题[○○]:将字符串“2015-04-10”格式化日期转为NSDate类型
    问题[◇◇]:使用 NSUserDefaults 时,如何处理布尔的默认值?(比如返回 NO,不知道是真的 NO 还是没有设置过)
    问题[◆◆◆]:请解释一下NSUserDefaults。就你而言,你会如何在磁盘中对数组对象进行序列化?
    问题[◇◇◇]:如何把一个包含自定义对象的数组序列化到磁盘?
    问题[○○○]:如何让自己所写的对象具有拷贝功能?
    问题[○○○]:如何合并多个数据并去除重复元素?
    问题[○○○]:谈谈OC中可修改和不可以修改类型
    问题[◇◇◇◇]:performSelector:withObject:afterDelay: 内部大概是怎么实现的,有什么注意事项么?
    问题[◆◆◆]:请描述SpriteKit和SceneKit的作用。
    问题[◆◆◆]:请概括一下你在构建iOS应用时的测试过程。iOS应用如何实现对其他语言、日期格式以及货币单位的支持?
    问题[◆◆◆]:为什么移动设备上的缓存和压缩是不可或缺的?
    问题[◆◆]:为什么Cocoa Touch的类名称是以两个大写字母开头的?
    问题[◆◆◆]:iOS是如何提高安全性,保护用户隐私信息的?
    问题[◆◆◆][自]:iPad 2,iPad mini 1-3,iPad Retina,iPad Air 2,iPhone 5、5S、6以及6+在硬件性能方面有何差异?这对注重性能的应用有何限制?
    问题[◆◆◆][自]:传感器,IO以及WiFi、拨号等连接方式如何在iOS平台上运作?它们有何利用价值?请扼要地谈谈你的观点。
    问题[◆◆◆]:AirPlay是如何运行的?换做是你,你会如何通过编程提高应用的实用性以及演示效果?

    • Media Layer

    问题[○○○]:Quatrz 2D的绘图功能的三个核心概念是什么并简述其作用。
    问题[○○○]:如何播放 GIF 图片,有什么优化方案么?
    问题[○○○○]:如何高性能的给 UIImageView 加个圆角?
    问题[◇◇◇]:如何把一张大图缩小为1/4大小的缩略图?
    问题[◇◇◇◇◇]:为什么当 Core Animation 完成时,layer 又会恢复到原先的状态?
    问题[◆◆◆◆]:Metal是什么?
    问题[○○○]:iPhone OS主要提供了几种播放音频的方法?
    问题[○○○]:使用AVAudioPlayer类调用哪个框架、使用步骤?
    问题[◆◆◆]:请概括一下Core Audio,Core Data以及Core Location各是什么。它们对iOS应用有何意义?

    • Core Services Layer

    问题[◆◆◆]:iCloud包含了哪些技术与服务?
    问题[◆◆◆]:HealthKit是什么?
    问题[◆◆◆]:VoiceOver是什么?请举例解释一下iOS中的辅助功能(Accessibility)。开发者如何使用这些功能?
    问题[◆◆◆]:iBeacons是什么?
    问题[○○]:什么是coredata?
    问题[○○○]:用过Core Data 或者 SQLite吗?读写是分线程的吗?遇到过死锁没?如何解决的?
    问题[○○]:什么是NSManagedobjectContext?
    问题[○○]:什么是谓词?
    问题[○○○]:什么是NSManagedObject模型?
    问题[○○○]:iOS怎么做数据的持久化?
    问题[○○○]:TCP和UDP的区别于联系
    问题[○○○]:TCP连接的三次握手
    问题[○○○]:Scoket连接和HTTP连接的区别
    问题[○○○]:HTTP协议的特点,关于HTTP请求GET和POST的区别
    问题[○○○]:XML数据解析方式各有什么不同,JSON解析有哪些框架?
    问题[○○○]:Core Foundation中提供了哪几种操作Socket的方法?
    问题[○○○]:CFSocket使用有哪几个步骤
    问题[◇◇◇]:如何处理异步的网络请求?

    • Core OS Layer

    问题[○○○]:如何制作一个静态库/动态库,他们的区别是什么?
    问题[◇◇◇]:你会如何存储用户的一些敏感信息,如登录的 token。
    问题[◇◇◇]:Apple Pay 是什么?它的大概工作流程是怎样的?

    • 数据结构与算法

    问题[●●●]:请谈谈数组和链表的区别?
    问题[●●●]:谈谈你所知道的排序算法
    问题[●●●]:谈谈你所了解的查找算法
    问题[○○○]:二叉搜索树的概念,时间复杂度多少?

    • 架构

    问题[○○○]:如何理解MVC设计模式
    问题[◆◆◆]:MVC对代码库(Codebase)的设计有何影响?
    问题[◆◆◆]:应用可以下载并即刻显示数据。如何根据MVC来判断下载的最佳位置?
    问题[○○○]:如何理解MVVM设计模式

    • 设计模式

    问题[●●●]:什么是设计模式?聊聊你所知道的设计模式。
    问题[○○○]:单例模式的作用?程序中有哪些常见的单例?单例的实现步骤?
    问题[◇◇◇◇]:如果让你来实现dispatch_once,你会怎么做?
    问题[◆◆◆]:iOS使用的是哪些设计模式(Design Patterns)?你的代码库使用的是哪些设计模式?
    问题[●●●●]:UIScrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?
    问题[●●●]:简要描述观察者模式,并运用此模式编写一段代码?
    问题[●●●]:使用工厂模式最主要的好处是什么?你在哪里使用?

    • 第三方组件

    问题[○○○]:SDWebImage原理
    问题[○○○○○]:ASIHttpRequest 或者 SDWebImage 里面给 UIImageView 加载图片的逻辑是什么样的?
    问题[◇◇◇]:有用过一些开源组件吧,能简单说几个么,大概说说它们的使用场景实现。

    • 加密解密

    问题[○○○○]:MD5和Base64的区别是什么,各自场景是什么?

    • UI设计

    问题[○○]:Apple设备尺寸和编程尺寸
    问题[◆◆◆]:iPhone5、6、6+以及iPad Air 2的屏幕分辨率分别是多少?
    问题[◆◆◆][自]:设计iPhone和iPad应用时,应分别考虑哪些因素?
    问题[◆◆◆][自]:请描述一下软件设计中的交互和Feedback有什么作用。
    问题[◆◆◆][自]:设计软件时为什么要加上动画?
    问题[◆◆◆][自]:请描述一下原型设计对于软件开发的意义。其作用是什么?
    问题[◆◆◆]:iOS应用图标是指什么?请尽可能详细地描述一下。
    问题[◆◆◆]:应用图标能否包含透明的部分?
    问题[◆◆◆]:最小尺寸和最大尺寸的应用图标分别是什么样子的?
    问题[◆◆◆]:Newsstand的图标与常规应用有何不同?
    问题[◆◆◆]:iOS UI的图像储存类型是什么
    问题[◆◆◆]:分辨率的计算单位是什么?

    • 综合题

    问题[◇◇◇◇]:设计一个可以无限滚动并且支持自动滚动的 SlideShow
    问题[◇◇◇◇]:设计一个进度条。
    问题[◇◇◇◇]:设计一套大文件(如上百M的视频)下载方案。
    问题[◇◇◇◇]:设计一个类似 iOS 主屏可以下拉出现 Spotlight 的系统。
    问题[○○○○]:麻烦你设计个简单的图片内存缓存器

    • 其他

    问题[◇◇◇]:最近这两天你有学到什么知识/技能么?
    问题[◇◇◇]:最近有做过比较酷或者比较有挑战的项目么?
    问题[◇◇◇]:最近看过的书/文章有哪些?
    问题[◇◇◇]:为什么要学习编程,编程对你而言的乐趣在哪儿?
    问题[◇◇◇]:自身最大优点是什么,怎么证明?
    问题[◇◇◇]:今年你最想掌握的一门技术是什么?为什么?目前已经做到了哪个程度?
    问题[◆◆◆][自]:你最爱以哪种方式来检验一项新技术是否好用?
    问题[◆◆◆][自]:iOS上你最喜欢哪些API?
    问题[◆◆◆][自]:你觉得Xcode有哪些需要改进的地方?
    问题[◆◆◆][自]:最喜欢什么项目?哪种类型的?
    问题[◆◆◆][自]:最近有没有开发什么好玩的东西?你最引以为豪的作品是什么?
    问题[◆◆◆][自]:你最敬佩的独立Mac或者iOS应用开发者是谁?
    问题[◆◆◆][自]:请概括一下你对软件授权的理解,及其对软件开发的影响。
    问题[◆◆◆][自]:你认为iOS需要添加或改进哪些API?

    相关文章

      网友评论

      • 超_iOS:APP 链接挂了么?
      • changeWong:不错,每次面试都在烦各种的面试题。烦人:sweat:
      • _wzz:要给楼主生猴子:monkey_face:
      • baiwulong:很好耶
        启发禅悟:@我是摆乌龙 谢谢。有些答案不是很好。到时候有意见,建议或者更加完备正确的答案请回复哦。
      • IT界的古天乐:作者辛苦,给作者敬礼
      • 孔凡伍:看了目录,很全面,打算给他通篇都看了,然后去面试。
        启发禅悟:@0x02 有些答案不一定好。到时候见谅哦:smile::smile::smile:
      • 67f75bf93352:我还没来得及看,但是看看评论,我现在只想点赞:+1:
        启发禅悟:@icandy 谢谢
      • 1dbdc3054b28:厉害,楼主有心了
        启发禅悟:@rusuKing 谢谢哦。
      • 1dbdc3054b28:厉害,楼主有心了
      • 怪客半:这个不会也被封掉吧
        启发禅悟:@怪客半 这篇文章是我整理写的,不会封的
        怪客半:@启发禅悟 之前收藏的一篇,现在已经看不了了...
        启发禅悟:@怪客半 为什么要封掉?
      • 狼之独步:楼主很用心,在看你的APP了,感脚你可以在文章上附上商店地址
        启发禅悟:@狼之独步 谢谢
      • wnido:赞一个
      • J_Knight_:OC语法上面的部分很不错
        启发禅悟:@Knight_SJ 谢谢,大部分都是搬运来的,稍微分了下类
      • kobe55:mark
      • 芙箩娅:惭愧,看到好多没接触过的知识,AppStore等好几大块里面的东西更是闻所未闻,博主有心了,辛苦了。
        启发禅悟:@芙箩娅 谢谢回复哦。一起学习进步吧。多看看,多写写,进步很快的:)
      • 泥土巴拉:真的太谢谢你了,太全面了,感觉看完这些内容可以直接去面试了 :smile:
        启发禅悟:@泥土巴拉 那就祝你找个好工作咯:)
      • 浮桥小麦:真是太有帮助了,大赞楼主
        浮桥小麦: @启发禅悟 我刚学半年多,最近要找工作了
        启发禅悟:@浮桥小麦 一起学习咯,我也是整理了一下而已。
      • SMFly:我收藏之后一直没来得及看,惭愧,今天看了点,给作者点赞,
        启发禅悟:@SMFly 哈哈,工作了,那就都是实用主义了。
        SMFly:@启发禅悟 再次回味,业务型的我对概念还是需要强化。再次感谢 :smiley:
        启发禅悟:@SMFly 谢谢哦。慢慢看啦,一起加油学习:)
      • 启发禅悟:谢谢评论哦。都是转帖,所以,还好啦:)
      • 0dd7406fa64a:为啥这么好的帖子都木有人评论:smile::smile::smile:

      本文标题:iOS面试题大全-点亮你iOS技能树

      本文链接:https://www.haomeiwen.com/subject/nstmlttx.html