我要投稿 投诉建议

iOS开发设计面试试题

时间:2024-11-04 22:24:39 敏冰 面试试题 我要投稿
  • 相关推荐

iOS开发设计面试试题

  无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文作者Cameron Banga从编程、设计、App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备。

iOS开发设计面试试题

  iOS开发设计面试试题一

  100个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是什么?

  Cocoa/Cocoa Touch是什么?

  请概括一下Core Audio,Core Data以及Core Location各是什么。它们对iOS应用有何意义?

  请描述SpriteKit和SceneKit的作用。(面试网 www.pincai.com)

  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是如何实现的?

  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应用图标是指什么?请尽可能详细地描述一下。

  最小尺寸和最大尺寸的应用图标分别是什么样子的?

  应用图标能否包含透明的部分?

  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开发设计面试试题二

  设计模式是什么? 你知道哪些设计模式,并简要叙述?

  设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情。

  1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编写。

  2). MVVM模式:Model View ViewModel 把模型 视图 业务逻辑 层进行解耦和编写。

  3). 单例模式:通过static关键词,声明全局变量。在整个进程运行期间只会被赋值一次。

  4). 观察者模式:KVO是典型的通知模式,观察某个属性的状态,状态发生变化时通知观察者。

  5). 委托模式:代理+协议的组合。实现1对1的反向传值操作。

  6). 工厂模式:通过一个类方法,批量的根据已有模板生产对象。

  MVC 和 MVVM 的区别

  1). MVVM是对胖模型进行的拆分,其本质是给控制器减负,将一些弱业务逻辑放到VM中去处理。

  2). MVC是一切设计的基础,所有新的设计模式都是基于MVC进行的改进。

  #import跟 #include 有什么区别,@class呢,#import<> 跟 #import””有什么区别?

  答:

  1). #import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入。

  2). @class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含。

  3). #import<>用来包含系统的头文件,#import””用来包含用户头文件。

  frame 和 bounds 有什么不同?

  frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父view的坐标系统)

  bounds指的是:该view在本身坐标系统中的位置和大小。(参照点是本身坐标系统)

  Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

  答:Objective-C的类不可以多重继承;可以实现多个接口(协议);Category是类别;一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

  @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的

  @property 的本质是什么?

  @property = ivar + getter + setter;

  “属性” (property)有两大概念:ivar(实例变量)、getter+setter(存取方法)

  “属性” (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据。 Objective-C 对象通常会把其所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”(access method)来访问。其中,“获取方法” (getter)用于读取变量值,而“设置方法” (setter)用于写入变量值。

  @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符?

  属性可以拥有的特质分为四类:

  1.原子性--- nonatomic 特质

  2.读/写权限---readwrite(读写)、readonly (只读)

  3.内存管理语义---assign、strong、 weak、unsafe_unretained、copy

  4.方法名---getter=、setter=

  5.不常用的:nonnull,null_resettable,nullable

  属性关键字 readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?

  答:

  1). readwrite 是可读可写特性。需要生成getter方法和setter方法。

  2). readonly 是只读特性。只会生成getter方法,不会生成setter方法,不希望属性在类外改变。

  3). assign 是赋值特性。setter方法将传入参数赋值给实例变量;仅设置变量时,assign用于基本数据类型。

  4). retain(MRC)/strong(ARC) 表示持有特性。setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1。

  5). copy 表示拷贝特性。setter方法将传入对象复制一份,需要完全一份新的变量时。

  6). nonatomic 非原子操作。决定编译器生成的setter和getter方法是否是原子操作,atomic表示多线程安全,一般使用nonatomic,效率高。

  什么情况使用 weak 关键字,相比 assign 有什么不同?

  1.在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性。

  2.自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。

  IBOutlet连出来的视图属性为什么可以被设置成weak?

  因为父控件的subViews数组已经对它有一个强引用。

  不同点:

  assign 可以用非 OC 对象,而 weak 必须用于 OC 对象。

  weak 表明该属性定义了一种“非拥有关系”。在属性所指的对象销毁时,属性值会自动清空(nil)。

  怎么用 copy 关键字?

  用途:

  1. NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary;

  2. block 也经常使用 copy 关键字。

  说明:

  block 使用 copy 是从 MRC 遗留下来的“传统”,在 MRC 中,方法内部的 block 是在栈区的,使用 copy 可以把它放到堆区.在 ARC 中写不写都行:对于 block 使用 copy 还是 strong 效果是一样的,但写上 copy 也无伤大雅,还能时刻提醒我们:编译器自动对 block 进行了 copy 操作。如果不写 copy ,该类的调用者有可能会忘记或者根本不知道“编译器会自动对 block 进行了 copy 操作”,他们有可能会在调用之前自行拷贝属性值。这种操作多余而低效。

  用@property声明的 NSString / NSArray / NSDictionary 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?

  答:用 @property 声明 NSString、NSArray、NSDictionary 经常使用 copy 关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作(就是把可变的赋值给不可变的),为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。

  1. 因为父类指针可以指向子类对象,使用 copy 的目的是为了让本对象的属性不受外界影响,使用 copy 无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本。

  2. 如果我们使用是 strong ,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性。

  总结:使用copy的目的是,防止把可变类型的对象赋值给不可变类型的对象时,可变类型对象的值发送变化会无意间篡改不可变类型对象原来的值。

  浅拷贝和深拷贝的区别?

  答:

  浅拷贝:只复制指向对象的指针,而不复制引用对象本身。

  深拷贝:复制引用对象本身。内存中存在了两份独立对象本身,当修改A时,A_copy不变。

  系统对象的 copy 与 mutableCopy 方法

  不管是集合类对象(NSArray、NSDictionary、NSSet ... 之类的对象),还是非集合类对象(NSString, NSNumber ... 之类的对象),接收到copy和mutableCopy消息时,都遵循以下准则:

  1. copy 返回的是不可变对象(immutableObject);如果用copy返回值调用mutable对象的方法就会crash。

  2. mutableCopy 返回的是可变对象(mutableObject)。

  一、非集合类对象的copy与mutableCopy

  在非集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;

  对可变对象进行copy和mutableCopy都是内容复制。用代码简单表示如下:

  二、集合类对象的copy与mutableCopy (同上)

  在集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;

  对可变对象进行copy和mutableCopy都是内容复制。但是:集合对象的内容复制仅限于对象本身,对集合内的对象元素仍然是指针复制。(即单层内容复制)

  iOS开发设计面试试题三

  1、最能概括你自己的三个词是什么?

  回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释。

  2、你的业余爱好是什么?

  回答提示:找一些富于团体合作精神的,这里有一个真实的故事:有人被否决掉,因为他的爱好是深海潜水。主考官说:因为这是一项单人活动,我不敢肯定他能否适应团体工作。

  3、作为被面试者给我打一下分

  回答提示:试着列出四个优点和一个非常非常非常小的缺点,(可以抱怨一下设施,没有明确责任人的缺点是不会有人介意的)。

  4、你怎么理解你应聘的职位?

  回答提示:把岗位职责和任务及工作态度阐述一下

  5、喜欢这份工作的哪一点?

  回答提示:相信其实大家心中一定都有答案了吧!每个人的价值观不同,自然评断的标准也会不同,但是,在回答面试官这个问题时可不能太直接就把自己心理的话说出来,尤其是薪资方面的问题,不过一些无伤大雅的回答是不错的考虑,如交通方便,工作性质及内容

  颇能符合自己的兴趣等等都是不错的答案,不过如果这时自己能仔细思考出这份工作的与众不同之处,相信在面试上会大大加分。

  6、为什么要离职?

  回答提示:①回答这个问题时一定要小心,就算在前一个工作受到再大的委屈,对公司有多少的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪及印象;建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等等,回答的答案最好是积极正面的。 ②我希望能获得一份更好的工作,如果机会来临,我会抓住;我觉得目前的工作,已经达到顶峰,即沒有升迁机会。

  7、说说你对行业、技术发展趋势的看法?

  回答提示:企业对这个问题很感兴趣,只有有备而来的求职者能够过关。求职者可以直接在网上查找对你所申请的行业部门的信息,只有深入了解才能产生独特的见解。企业认为最聪明的求职者是对所面试的公司预先了解很多,包括公司各个部门,发展情况,在面试回答问题的时候可以提到所了解的情况,企业欢迎进入企业的人是“知己”,而不是“盲人”。

  8、对工作的期望与目标何在?

  回答提示:这是面试者用来评断求职者是否对自己有一定程度的期望、对这份工作是否了解的问题。对于工作有确实学习目标的人通常学习较快,对于新工作自然较容易进入状况,这时建议你,最好针对工作的性质找出一个确实的答案,如业务员的工作可以这样回答:“我的目标是能成为一个超级业务员,将公司的产品广泛的推销出去,达到最好的业绩成效;为了达到这个目标,我一定会努力学习,而我相信以我认真负责的态度,一定可以达到这个目标。”其他类的工作也可以比照这个方式来回答,只要在目标方面稍微修改一下就可以了。

  9、说说你的家庭。

  回答提示:企业面试时询问家庭问题不是非要知道求职者家庭的情况,探究隐私,企业不喜欢探究个人隐私,而是要了解家庭背景对求职者的塑造和影响。企业希望听到的重点也在于家庭对求职者的积极影响。企业最喜欢听到的是:我很爱我的家庭!我的家庭一向很和睦,虽然我的父亲和母亲都是普通人,但是从小,我就看到我父亲起早贪黑,每天工作特别勤劳,他的行动无形中培养了我认真负责的态度和勤劳的精神。我母亲为人善良,对人热情,特别乐于助人,所以在单位人缘很好,她的一言一行也一直在教导我做人的道理。企业相信,和睦的家庭关系对一个人的成长有潜移默化的影响。

  10、就你申请的这个职位,你认为你还欠缺什么?

  回答提示:企业喜欢问求职者弱点,但精明的求职者一般不直接回答。他们希望看到这样的求职者:继续重复自己的优势,然后说:“对于这个职位和我的能力来说,我相信自己是可以胜任的,只是缺乏经验,这个问题我想我可以进入公司以后以最短的时间来解决,我的学习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。”企业喜欢能够巧妙地躲过难题的求职者。

  iOS开发设计面试试题四

  1、在最初的2-3个月时间里,你希望我能完成哪些工作?

  优秀的iOS开发求职者希望在面试过程中做到最好。他们不希望花很多时间慢慢了解公司的结构,他们希望有所作为。所以他们想知道公司会对其有哪些期待?所以,问这个问题很有必要。他们想找到公司对其的目标和期待,才能力求表现突出。

  2、公司优秀的人,都有哪些共同的特征?

  优秀的求职者都想成为公司的长期员工。公司每个组织是不同的,那这些不同组织中的员工都有哪些共同的特征呢?他们问这个问题大都是想了解自己是否适合这份工作,以及若想成为公司优秀的员工,需要哪些特质。或许这些优秀的员工花更多的时间工作,或许更有灵活性和创造性,而不是严格遵守公司的各项流程,或者能在新领域开发新用户而不是简单的维持和老用户的关系。

  但是不管面试官怎样回答这个问题,求职者只是想知道他们是否适合这个工作,如果适合,他们也会向这些员工看齐。

  3、怎样可以促使公司业绩增长?

  员工在公司工作,可以把它看成一项投资。因为拿了公司的工资,就需要关心怎样才能推动公司业绩的增加。比如,雇主希望技术人员对公司的某一个产品进行改版,他们希望技术人员不仅能够找出解决问题的办法,最好还能想出办法带动其销量的增加。对求职者而言,也需要了解帮助公司成功就是在帮助自己。

  4、员工业余时间都在做什么?

  公司的文化通常都是一项比较有争议性的话题,因为这很大程度上取决于雇主。如果公司的文化氛围好,员工状态自然好,他们会更加热爱自己的工作,也可愉快的与周围的同事相处。但这个问题对面试官比较难回答,除非公司规模很小,否则他们只能很笼统的回答你。在大概了解这个情况后,求职者可了解自己能否适应公司的文化,然后方便自己做出选择。

  5、你打算如何处理某一问题?

  几乎是每家公司,特别是科技公司,都在面临科技发展、竞争对手以及外部经济环境发展的变化。一个好的求职者不仅需要了解面试者的想法,还要了解公司未来的发展蓝图,然后怎样才能把自己融入到公司里。不过求职者问这个问题,多半是想确认自己是否适合公司的发展轨迹。

【iOS开发设计面试试题】相关文章:

iOS面试题集合02-13

iOS面试题汇总02-13

前端开发常见面试试题02-14

Android开发工程师面试试题02-14

2016年Java开发岗位面试题02-20

HR如何设计面试题目08-25

平面设计师面试题目02-15

肯德基面试的面试试题01-20

面试试题精选02-22