第一篇:100个iOS开发设计程序员面试题汇总
www.xiexiebang.com
美国上市公司
亿元级外企IT培训企业
100个iOS开发/设计程序员面试题汇总
无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文作者Cameron Banga从编程、设计、App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备。
一、常见问题
你昨天/这周学习了什么?
你为什么热衷于软件开发?
你对哪一种控制系统比较熟悉?
是否参与过GitHub项目?
是否参与过GitHub或其他同类型网站的iOS开源项目?
请描述一下你的iOS应用开发流程。
是否熟知CocoaPods?它是什么?如何运行的?
请概括一下你对软件授权的理解,及其对软件开发的影响。
请概括一下你在构建iOS应用时的测试过程。iOS应用如何实现对其他语言、日期格式以及货币单位的支持?
请描述一下Instruments及其作用。
二、关于iOS技术
请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的。
iCloud包含了哪些技术与服务?
iOS扩展是指?能否列举一些热门或常见的范例?
HealthKit是什么?
HomeKit是什么?
Apple Pay是什么?能否描述一下如何在应用中使用Apple Pay?
请解释一下iOS应用沙盒机制。
VoiceOver是什么?请举例解释一下iOS中的辅助功能(Accessibility)。开发者如何使用这些功能?
iOS应用是如何实现后台多任务处理(Multitasking)的?
Game Center针对iOS游戏有哪些功能?
iBeacons是什么?
www.xiexiebang.com
美国上市公司
亿元级外企IT培训企业
Cocoa/Cocoa Touch是什么?
请概括一下Core Audio,Core Data以及Core Location各是什么。它们对iOS应用有何意义?
请描述SpriteKit和SceneKit的作用。
Metal是什么?
响应链(Responder Chain)是什么?它是如何发挥作用的?
按钮和其他控制方式对哪些操作做出回应?
AppDelegate扮演着什么样的角色?
请解释一下NSUserDefaults。就你而言,你会如何在磁盘中对数组对象进行序列化?
你会如何储存用户的认证信息?
请问何为Keychain服务?
为什么移动设备上的缓存和压缩是不可或缺的?
请解释一下~/Documents,~/Library和~/tmp。iOS中的~属于什么目录?
AirPlay是如何运行的?换做是你,你会如何通过编程提高应用的实用性以及演示效果?
传感器,IO以及WiFi、拨号等连接方式如何在iOS平台上运作?它们有何利用价值?请扼要地谈谈你的观点。
iPad 2,iPad mini 1-3,iPad Retina,iPad Air 2,iPhone 5、5S、6以及6+在硬件性能方面有何差异?这对注重性能的应用有何限制?
三、关于编程
Cocoa Touch包含什么?不包含什么?
为什么Cocoa Touch的类名称是以两个大写字母开头的?
Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系?
为什么Optional在Swift语言中非常重要?
请解释一下NSError。在Swift中,什么情况下能使用NSError,什么情况下不能?
请说明如何使用Instancetype及其重要性。
在Swift中,什么时候该用let,什么时候该用var?
为什么map函数必不可少?该在什么情况下使用它?
你会选择什么工具来追踪Bug?
如果在Cocoa中发现一个Bug,你会如何处理?
如果应用的新版本出现了Regression的情况,该如何补救?如何防止用户在使用过程中遇到新的Bug?
Objective-C的类是怎么执行的?Objective-C Runtime是如何实现的?
www.xiexiebang.com
美国上市公司
亿元级外企IT培训企业
iOS是如何提高安全性,保护用户隐私信息的?
应用可以下载并即刻显示数据。如何根据MVC来判断下载的最佳位置?
MVC对代码库(Codebase)的设计有何影响?
Controller Life-Cycle以及View Life-cycle分别有哪些调试方法?
iOS使用的是哪些设计模式(Design Patterns)?你的代码库使用的是哪些设计模式?
iOS提供哪些线程?如何充分利用这些线程?
请简要描述一下UIScrollView的执行过程。它是如何响应手势识别(Gesture Recognizer)、多点触控(Multi-Touch)和Run Loop的?
你认为iOS需要添加或改进哪些API?
四、关于界面
iPhone5、6、6+以及iPad Air 2的屏幕分辨率分别是多少?
分辨率的计算单位是什么?
请解释一下Interface Builder的作用以及NIB文件的概念。
iOS UI的图像储存类型是什么?
请描述一下Storyboard和标准NIB文件的差别。
设备状态栏(Device Status Bar)是什么?高度如何?是否透明?在手机通话或者导航状态下,它是如何显示的?
导航栏(Navigation Bar)是什么?能否拿出你的iPhone,指出你下载的哪些应用运用了导航栏?
选项卡(Tab Bar)和工具栏(Toolbar)分别是什么?两者之间有何共同点和不同点?
表视图(Table View)是什么?集合视图(Collection View)又是什么?
什么时候用“弹出(Popover)”属性最为合适?
Split-view Controller是什么?
选取器视图(Picker View)适合存放哪类内容?
应该在什么情况下使用标签、文本域和文本视图?
分段控件(Segmented Control)的作用是什么?
模态视图(Modal View)是什么?
iOS通知属于什么类型?
五、关于设计
iOS应用图标是指什么?请尽可能详细地描述一下。
最小尺寸和最大尺寸的应用图标分别是什么样子的?
应用图标能否包含透明的部分?
www.xiexiebang.com
美国上市公司
亿元级外企IT培训企业
Newsstand的图标与常规应用有何不同?
请解释一下启动画面(Launch Images)。
自动布局(Auto Layout)的作用是什么?请概括一下它是如何运行的。
设计软件时为什么要加上动画?
请描述一下软件设计中的交互和Feedback有什么作用。
设计iPhone和iPad应用时,应分别考虑哪些因素?
请描述一下原型设计对于软件开发的意义。其作用是什么?
六、关于App Store
应用内购买(In-App Purchases)是怎么回事?IAP能够为用户带来哪些新体验?
你是否在App Store上发布过应用?能否概括一下过程?
iTunes Connect是什么?
Provisioning Profiles是指?
App ID是什么?
iOS的开发和发布签名证书有何异同?
如何使用TestFlight?通过Ad-hoc发布应用的话,该如何使用UUID?
应何时验证购买收据?
发布iAds(苹果平台广告)有哪些要求?
七、趣味问答
最近有没有开发什么好玩的东西?你最引以为豪的作品是什么?
谈一谈你常用的开发工具都有哪些优势?
你最敬佩的独立Mac或者iOS应用开发者是谁?
最喜欢什么项目?哪种类型的?
你觉得Xcode有哪些需要改进的地方?
iOS上你最喜欢哪些API?
是否有最中意的错误报告?
你最爱以哪种方式来检验一项新技术是否好用?
为什么词典被称作Dictionaries,而不是HashTable或HashMap?
以上内容来自达内iOS培训机构,更多关于iOS的内容欢迎在线咨询!
第二篇:iOS开发高级程序员面试题-答案
一、判断题(每题2分,共20分)
1、UITableView能够绑定多个数据源。(错)
2、一个UIViewController可以管理多个UITableView。(对)
3、Object-c的类可以多重继承。(错)
4、objective-c类里面的方法只有两种, 静态方法和实例方法。(对)
5、NSFileManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。(对)
6、用类别增加方法时,不能与原来类中的方法产生名称冲突。(错)
7、frame指的是该view在本身坐标系统中 的位置和大小。(错)
8、method是一个方法的名字,selector是一个组合体。(错)
9、ARC是编译特性,不是运行时特性,在编译时,编译器会自动加上释放代码。(对)
10、从iOS4之后,Safari支持全屏浏览,Siri支持普通话。(对)
二、填空题(每空2分,共20分)
1、iOS是使用Objective-C语言编写的,使用该语言开发的Cocoa是一款功能强大的用户界面工具包,也是iOS的核心。
2、数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。链表恰好相反,其中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。
3、发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作。而发送异步请求不会阻塞主线程,会建立一个新的线程来操作,之后程序可以继续运行。
4、autorelease只是把Object放入了当前的autorelease pool中,当它被释放时,其中的所有Object都会被调用Release。
5、作为Objective-C导入头文件的关键字,#import<>用来包含系统的头文件,#import””用来包含用户头文件。
三、简述题(每题4分,共20分)
1、delegate和notification有什么区别,什么情况下使用?
答:delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。
notification:消息的发送者告知接收者事件已经发生或者将要发生,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。
2、Object-C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
答:线程创建有三种方法:使用NSThread创建、使用 GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue。
在主线程执行代码,方法是 performSelectorOnMainThread。
如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone。
3、iOS有哪些数据持久化方式?
答:四种:属性列表、对象归档、SQLite3和Core Data。
4、Objective-C如何对内存管理的,说说你的看法和解决方法?
答:Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。解决方法的话:谁持有,谁释放。
5、如何对iOS设备进行性能测试?
答:Profile-> Instruments->Time Profiler。
四、问答题(每题10分,共20分)
1、什么是MVC,为什么使用MVC,有什么好处?描述一下iOS SDK中如何实现MVC的开发模式。
答:MVC分别为:模型(Model),视图(View)和控制Controller)。
模型(Model):即“数据模型”,用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。视图(View):视图层能够实现数据有目的显示。
控制器(Controller):控制器起到不同层面间的组织作用,用于控制应用程序的流程。对于iOS SDK,所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。
2、请阐述UIViewController的生命周期,包括代码的执行顺序。答:当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序
// 视图显示在屏幕上的顺序
1、alloc 创建对象,分配空间。
2、init(initWithNibName)初始化对象,初始化数据。
3、viewload 从nib载入视图, 这一步不需要去干涉。除非没有使用xib文件创建视图。
4、viewDidLoad 加载完毕,可以进行自定义数据以及动态创建其他控件。
5、viewWillAppear 视图将出现在屏幕之前,马上这个视图即将显示在屏幕上。
6、viewDidAppear 视图已在屏幕上渲染完成。
// 视图将被从屏幕上移除的顺序
1、viewWillDisappear 视图将被从屏幕上移除之前执行。
2、viewDidDisappear 视图已经被从屏幕上移除。
3、dealloc 视图被销毁,此时需要在init和viewDidLoad中创建的对象进行释放。
4、viewDidUnload 出现内存警告在内存不足时执行,并对所有非当前显示的controller执行。本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。
五、论述题(20分)
请针对正泰中自智慧水务APP的需求(见现场展示的原型),论述您的开发思路和使用的开发技术。
第三篇:IOS开发工程师面试题
湖南路线图网络科技有限公司 技术中心 内部资料
IOS开发工程师面试题(45分钟)
1.请详述viewController的生命周期?
2.OC中类的属性retain, assign, weak, strong的作用是什么?
3.OC中SEL是什么,有什么作用?
4.如何在OC的字典或数组中存取一个基本数据类型的值?如何把字典或数组中的值转换成基本数据类型的值?
5.IOS中界面间传值的方式有哪些?
6.OC中通知有哪几类?请简述苹果推送的流程?
7.OC中浅拷贝和深拷贝的区别是什么?
8.什么是block?block如何使用?
9.谈谈OC中内存管理的方式和过程,以及ARC的使用注意事项,如何在ARC的工
程中使用非ARC的类和开源框架?
10.简要说明下OC的延展和分类的作用和区别
11.OC中多线程的实现方式有哪些?如何实现在一个异步线程中使用一个定时器?
12.请例举常用的网络请求开源框架、JSON解析开源框架、UI开源框架。
13.请详述如何使app对IOS6、IOS7、iphone4S、iphone5做界面适配的方法
14.请列举出你所知道的设计模式及各种设计模式的特点。
第四篇:iOS面试题整理
1.用#define定义一个宏,表示一年中的秒数。
@interface USER
{NSSTring *name;}
@end
a)self.name=@”abc”与name=@”abc”的区别?
b)self.name=[[NSSTring alloc]initWithString:@”abc”];中name的retainCount是多少?
c)补全setName:(NSSTring *)myName方法
d)这里用self.name访问了name属性,还可以用别的方法访问name属
性么?
2.UITableView中什么可以自定义?
3.view.bounds和view.frame有什么区别?
4.iOS中是怎样进行内存管理的?
5.简述分类与继承的区别。
6.简述CALayer与UIView的区别。
7.简述堆与栈的区别。
8.简述Delegate、KVO和NotificationCenter区别。
9.用预处理指令#define声明MAX(X,Y)和MIN(X,Y)。
10.试写出strCompare
11.对于一个字节(8bit)的变量,求其二进制中“1”的个数,要求算法的执
行效率尽可能地高。
12.求两个正整数的最大公约数,要求算法的执行效率尽可能地高。
13.如何判断两个单向链表是否相交?
14.能不能找到符合如下条件的9位数:
a)这个数包括了1-9这9个数字;
b)这个9位数的前n位都能被n整除,若这个数表示为abcdefghi,则ab
可以被2整除,abc可以被3整除„„abcdefghi可以被9整除。
15.说说autorelease和release 的区别?
16.如何下载图片?
17.微博的认证?
18.版本扩展?
19.程序调试?
20..(点)运算符?
21.UITableView中每一行都缓存图片的处理,如何处理才能在滑动时不会出现等
待的现象。
22.
第五篇:中关村在线iOS开发工程师面试题 2
中关村在线iOS开发工程师面试题
1.有n个人围坐成一圈(假设他们的编号沿顺时针方向依次为1到n),编程序,使用数组来存放各数据(人员编号),而后从1号人员开始数起(沿顺时针方向),当数到k时(其中k>1由用户输入指定),则该号人员被“淘汰出局”;接着仍沿顺时针方向从被淘汰出局者的下一人员又重新从1开始数起,数到k后,淘汰第2个人;如此继续,直到最后剩下一个人时停止。请输出先后被“淘汰”的人的编号。
2.编码实现:
1)由键盘上输入任意n个符号,输出它的全排列。
2)找出所有从m个元素中选取n(n<=m)元素的组合。
3.要求:描述越全面越好,最好有部分代码实现。
1)试描述iOS的网络获取机制。
提示:1.网络获取与数据解析的过程
2.post与get的用法3.同步与异步处理4.关于Webkit
2)试简述对于缓存机制的理解。
提示:1.应用缓存机制的情况
2.数据缓存与图片缓存如何处理3.缓存机制具体如何实现4.在程序进入后台和后台唤醒时的缓存处理