2021年100个iOS开发面试题汇总
iOS面试题总结
iOS面试题总结目录•1. 多线程的底层实现?•2. 线程间怎么通信?•3. 网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?•4. 用NSOpertion和NSOpertionQueue处理A,B,C三个线程,要求执行完A,B后才能执行C,怎么做?•5. 列举cocoa中常见对几种多线程的实现,并谈谈多线程安全的几种解决办法及多线程安全怎么控制?•6. GCD内部怎么实现的?•7. 你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和GCD 的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。
•8. 既然提到GCD,那么问一下在使用GCD以及block时要注意些什么?它们两是一回事儿吗?block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?•9. 在异步线程中下载很多图片,如果失败了,该如何处理?请结合RunLoop来谈谈解决方案.(提示:在异步线程中启动一个RunLoop 重新发送网络请求,下载图片)。
•10. 怎么保证多人开发进行内存泄露的检查?•11. 非自动内存管理情况下怎么做单例模式?•12. 对于类方法(静态方法)默认是autorelease的,所有类方法都会这样吗?•13. block在ARC中和MRC中的用法有什么区别,需要注意什么?•14. 什么情况下会发生内存泄漏和内存溢出?•15. [NSArray arrayWithobject:(id)obj]这个方法添加对象后,需要对这个数组做释放操作吗?•16. 自动释放池底层怎么实现?•17. KVO内部实现原理是什么?•18. 是否可以把比较耗时的操作放在NSNotificationCenter中?•19. Foundation对象与Core Foundation对象有什么区别?•20. 如何不用中间变量,用两种方法交换A和B的值?•21. 简单描述下对单利模式设计的理解?•22. runtime实现的机制是什么,如何用,用来做什么?你所使用的相关的头文件或者某些方法的名称有哪些?•23. 是否使用Core Text或者Core Image等?如果使用过,请谈谈你使用Core Text或者Core Image的体验。
史上最全的iOS面试题及答案
史上最全的iOS面试题及答案1. 1.写一个NSString类的实现+ (id)initWithCString:(c*****t char *)nullTerminatedCStringencoding:(NSStringEncoding)encoding;+ (id) stringWithCString: (c*****t char*)nullTerminatedCStringencoding: (NSStringEncoding)encoding{NSString *obj;obj = [self allocWithZone: NSDefaultMallocZone()];obj = [obj initWithCString: nullTerminatedCString encoding: encoding];return AUTORELEASE(obj);}2static 关键字的作用:(1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的static 成员变量。
3线程与进程的区别和联系?进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
iOS面试题集锦(附答案)(个人精心整理)
iOS⾯试题集锦(附答案)(个⼈精⼼整理)1、第三⽅库、masonry第三⽅⾃动布局是否⽤过,类⽅法和对象⽅法的区别2、MVC机制C对M:APIC对V:OutletV对C:T arget-action,Delegate,DatasourceM对C:Notification,KVO3、runtime机制runtime是⼀套⽐较底层的纯C语⾔API, 属于1个C语⾔库, 包含了很多底层的C语⾔API。
runtime ⽤来⼲什么呢??⽤在那些地⽅呢?怎么⽤呢?runtime是属于OC的底层, 可以进⾏⼀些⾮常底层的操作(⽤OC是⽆法现实的, 不好实现)在程序运⾏过程中, 动态创建⼀个类(⽐如KVO的底层实现)在程序运⾏过程中, 动态地为某个类添加属性\⽅法, 修改属性值\⽅法遍历⼀个类的所有成员变量(属性)\所有⽅法例如:我们需要对⼀个类的属性进⾏归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使⽤了runtime就可以动态设置!1>头⽂件利⽤头⽂件,我们可以查看到runtime中的各个⽅法!2>相关应⽤NSCoding(归档和解档, 利⽤runtime遍历模型对象的所有属性)字典–>模型(利⽤runtime遍历模型对象的所有属性, 根据属性名从字典中取出对应的值, 设置到模型的属性上)KVO(利⽤runtime动态产⽣⼀个类)⽤于封装框架(想怎么改就怎么改)这就是我们runtime机制的只要运⽤⽅向3>相关函数objc_msgSend : 给对象发送消息class_copyMethodList : 遍历某个类所有的⽅法class_copyIvarList : 遍历某个类所有的成员变量class_…..这是我们学习runtime必须知道的函数!4.必备常识1> Ivar : 成员变量2> Method : 成员⽅法从上⾯例⼦中我们看到我们定义的成员变量,如果要是动态创建⽅法,可以使⽤Method,4、strong ,weak, assign有什么区别assign:简单赋值,不更改索引计数(Reference Counting)。
史上最全的iOS面试题及答案
史上最全的iOS面试题及答案以下是为大家整理的史上最全的ios面试题及答案的相关范文,本文关键词为史上,最全,ios,试题,答案,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教师教学中查看更多范文。
精品文档.史上最全的ios面试题及答案?1.写一个nsstring类的实现+(id)initwithcstring:(c*****tchar*)nullTerminatedcstringencoding:(nsstringencoding)encoding;+(id)stringwithcstring:(c*****tchar*)nullTerminatedcstringencoding:(nsstringencoding)encoding{nsstring*obj;obj=[selfallocwithZone:nsDefaultmallocZone()];obj=[objinitwithcstring:n ullTerminatedcstringencoding:encoding];returnAuToReLeAse(obj);}2static关键字的作用:(1)函数体内static变量的作用范围为该函数体,不同于auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
3线程与进程的区别和联系?精品文档进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
iOS面试题总结(持续更新)
iOS⾯试题总结(持续更新)过段时间打算跳槽,找了⼀些⾯试题来做,在这⾥做个总结⽅便review,希望能对要⾯试的童鞋有帮助。
以下为⾯试题:1. 运⾏以下代码会有什么结果NSString *str1 = @"str1";NSString *str2 = [NSString stringWithFormat:@"str1"];NSString *str3 = @"str1";NSLog(@"str1 == str2 --- %d", str1 == str2);NSLog(@"str1 == str3 --- %d", str1 == str3);NSLog(@"str1 isEqualToString str2 --- %d", [str1 isEqualToString:str2]);NSLog(@"str1 isEqualToString str3 --- %d", [str1 isEqualToString:str3]); 第⼀眼看这道题,只能确定使⽤isEqualToString:来⽐较字符串是⽐较每⼀个字符,所以isEqualToString肯定是true,⽽在OC⾥使⽤==号⽤于判断是否指向同⼀个地址,那么问题就来了,使⽤字⾯量创建的字符串与调⽤⽅法创建的有什么区别呢? 实践出真知,⽼⽼实实敲代码,打上断点来⼀探究竟 可以看到使⽤字⾯量创建的字符串为常量字符串,⽽⽤⽅法创建的则是指针字符串。
常量字符串会在app销毁后释放,在app存在期间会⼀直存在,且相同的常量字符串都指向同⼀个地址。
运⾏结果就如下了 2. 以下⽅式创建的timer有什么区别[NSTimer scheduledTimerWithTimeInterval:1.f repeats:YES block:^(NSTimer * _Nonnull timer) {//创建⼀个timer并且在当前的runloop中执⾏。
史上最全的iOS面试题及答案
史上最全的iOS面试题及答案史上最全的iOS面试题及答案iOS面试小贴士———————————————回答好下面的足够了-------------------------------------多线程、特别是NSOperation 和GCD 的内部原理。
运行时机制的原理和运用场景。
SDWebImage的原理。
实现机制。
如何解决TableView卡的问题。
block和代理的,通知的区别。
block的用法需要注意些什么。
strong,weak,retain,assign,copy nomatic 等的区别。
设计模式,mvc,单利,工厂,代理等的应用场景。
单利的写法。
在单利中创建数组应该注意些什么。
NSString 的时候用copy和strong的区别。
响应值链。
NSTimer 在子线程中应该手动创建NSRunLoop ,否则不能循环执行。
UIScrollView和NSTimer组合做循环广告图轮播的时候有一个属性可以控制当上下滚动tableview的时候广告轮播图依然正常滚动。
Xcode最新的自动布局。
这个很多公司都用。
尽量自学下。
git ,和svn的用法。
git的几个命令简单的记下。
友盟报错可以查到具体某一行的错误,原理是什么。
Instrument 可以检测电池的耗电量、和内存的消耗。
的用法。
动画CABaseAnimation CAKeyAni…. CATrans….. CAGoup…. 等熟悉。
ARC的原理。
自己写过什么自定义控件就最好了。
———————————————回答好上面的足够了------------------------------------- __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。
2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。
ios面试题
ios⾯试题1. Object-c的类可以多重继承么?可以实现多个接⼝么?Category是什么?重写⼀个类的⽅式⽤继承好还是分类好?为什么?答: Object-c的类不可以多重继承,只能继承⼀个⽗类;可以实现多个接⼝,通过实现多个接⼝可以完成C++的多重继承;Category是类别,⼀般情况⽤分类好,⽤Category去重写类的⽅法,仅对本Category有效,不会影响到其他类与原有类的关系。
2. #import 跟#include ⼜什么区别,@class呢, #import<> 跟 #import””⼜什么区别?答:#import是Objective-C导⼊头⽂件的关键字,#include是C/C++导⼊头⽂件的关键字,使⽤#import头⽂件会⾃动只导⼊⼀次,不会重复导⼊,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执⾏时,才去查看类的实现⽂件,可以解决头⽂件的相互包含;#import<>⽤来包含系统的头⽂件,#import””⽤来包含⽤户头⽂件。
3. 属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作⽤,在那种情况下⽤?答:1). readwrite 是可读可写特性;需要⽣成getter⽅法和setter⽅法时2). readonly 是只读特性只会⽣成getter⽅法不会⽣成setter⽅法 ;不希望属性在类外改变3). assign 是赋值特性,setter⽅法将传⼊参数赋值给实例变量;仅设置变量时;4). retain 表⽰持有特性,setter⽅法将传⼊参数先保留,再赋值,传⼊参数的retaincount会+1;5). copy 表⽰赋值特性,setter⽅法将传⼊对象复制⼀份;需要完全⼀份新的变量时。
6).nonatomic ⾮原⼦操作,决定编译器⽣成的setter getter是否是原⼦操作,atomic表⽰多线程安全,⼀般使⽤nonatomic4.写⼀个setter⽅法⽤于完成@property (nonatomic,retain)NSString *name,写⼀个setter⽅法⽤于完成@property(nonatomic,copy)NSString *name答: retain 是指针拷贝,只是引⽤计数加⼀了。
ios高级开发面试题
ios高级开发面试题iOS开发在近年来得到了广泛的关注和应用。
为了在这个竞争激烈的领域中脱颖而出,对于iOS高级开发者来说,掌握一些核心的技术和知识点是非常重要的。
本文将从技术、设计、性能等方面探讨一些iOS高级开发面试题,帮助读者了解iOS开发的一些关键点。
一、架构与设计1. 请解释什么是MVC架构?它在iOS开发中的应用场景有哪些?MVC(Model-View-Controller)是一种软件设计模式,主要由三个部分组成:模型(Model)、视图(View)和控制器(Controller)。
在iOS开发中,MVC经常用来分离应用中的数据、用户界面和业务逻辑。
模型负责处理数据和业务逻辑,视图负责展示用户界面,而控制器则负责协调模型和视图之间的通讯。
2. 什么是单例模式?在iOS开发中如何实现单例模式?单例模式是一种创建型设计模式,它确保一个类只能创建一个实例,并提供全局访问点。
在iOS开发中,可以通过以下方式实现单例模式:```swiftclass Singleton {static let shared = Singleton()private init() {}}```通过使用`static let`关键字,我们可以创建一个静态的共享实例,而`private init()`则确保该类无法在外部被实例化。
二、性能优化1. 在iOS开发中,什么是视图重用?为什么需要进行视图重用?视图重用是指在滚动视图(如UITableView和UICollectionView)中重复使用视图,以减少内存占用和提高性能。
在列表或网格视图中,当某个视图滚出屏幕时,可以将其重用来显示新的内容,而不是创建一个全新的视图。
视图重用可以有效地减少内存开销和提高滚动性能,特别是在数据量较大的情况下。
通过使用复用标识符和重用队列,我们可以轻松地重用视图并更新其内容。
2. 在进行网络请求时,如何避免引起内存泄漏?内存泄漏是指应用程序中无用的内存对象无法被垃圾回收器回收的情况。
ios面试题锦集(带答案)
iOS 面试题锦集1.Difference between shallow copy and deep copy? 浅复制和深复制的区别? 答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。
深层复制:复制引用对象本身。
意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个存资源,复制的只不过是是一个指针,对象本身资源 还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。
深复制就好理解了,存中存在了 两份独立对象本身。
用网上一哥们通俗的话将就是: 浅复制好比你和你的影子,你完蛋,你的影子也完蛋 深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。
2.What is advantage of categories? What is difference between implementing a category and inheritance? 类别的作用?继承和类别在实现中有何区别?答案:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。
并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。
类别主要有3个作用: (1)将类的实现分散到多个不同文件或多个不同框架中。
(2)创建对私有方法的前向引用。
(3)向对象添加非正式协议。
继承可以增加,修改或者删除方法,并且可以增加属性。
3.Difference between categories and extensions? 类别和类扩展的区别。
答案:category和extensions的不同在于后者可以添加属性。
另外后者添加的方法是必须要实现的。
extensions可以认为是一个私有的Category。
4.Difference between protocol in objective c and interfaces in java? obc中的协议和java中的接口概念有何不同? 答案:OBC中的代理有2层含义,官方定义为 formal和informal protocol。
iOS面试题(附答案)
iOS面试题(附答案)1、简述一下UIViewController的生命周期?alloc -‐> i nit -‐> l oadView -‐>viewDidLoad -‐> v iewWillAppear -‐>viewDidAppear -‐>viewWillDisappear -‐>viewDidDisappear -‐>viewUnLoad -‐>dealloc2、#import和#include的区别?#import导入的头文件不会多次重复导入3、写一个计算A、B中较大值的标准宏MAX?#define MAX(A,B) ( (A)>(B) ? (A) : (B) )4、谈一下iOS中的多线程?多线程是指从软件或硬件上实现多个线程并发执行的技术iOS中可以使用NSThread、NSOperation、GCD实现多线程5、谈一下Objective-‐C的内存管理方式?ARC、手动管理、线程池6、简述assign、retain、copy、weak和strong分别在什么情况下使用?答案见《iOS面试知识点整理.pdf》7、类别的作用?说一下类别和类扩展的区别?类别的作用是给类增加方法类扩展可以给类增加属性或私有变量,只可以对自定义的类使用类扩展8、说说你对KVC和KVO的理解?KVC:键值编码,提供一种机制来间接访问对象的属性KVO:键值观察,基于KVC实现的对类属性的观察监听9、深复制和浅复制的区别?答案见《iOS面试知识点整理.pdf》10、谈一下你对block的理解,请写一个block类型的属性?block本质是匿名函数声明一个block:方法一:void (^block)( N SString *string);方法二:typedef v oid(^MyBlock)(NSString *string);@property (nonatomic, s trong)MyBlock b lock;11、frame和bounds的区别?答案见《iOS面试知识点整理.pdf》12、谈一下UITableViewCell的重用机制?13、简述一下消息推送的流程?1、在苹果推送服务器APNs上注册deviceToken,并发送给自己的后台服务器;2、后台服务器将deviceToken和要发送的消息打包发送给APNs(注意:这一步还需要推送证书的路径和密码)3、A PNs将消息发送给deviceToken中保存的指定设备中的指定App14、简述一下App发布到AppStore的流程?1、首先生成发布描述文件(通过创建生产证书 -‐> 创建AppId (Bundle I d)-‐> 创建发布的描述文件)2、然后在iTunesContent中创建一个应用并填好信息3、在XCode中将项目打包并上传(注意:Bundle I d全程一致, 在build S etting中填好刚创建的描述文件)4、最后再回到iTunesContent中选择刚才上传的项目,然后点击提交。
ios面试选择题
竭诚为您提供优质文档/双击可除ios面试选择题篇一:100个ios开发面试题汇总100个ios开发面试题汇总关于ios开发面试,不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会。
无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,从编程、设计、appstore等各个方面对ios开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。
一方面,能够帮助hR在短时间内获取更多反馈信息,更好地甄选合适人选,而ios开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备。
常见问题你昨天/这周学习了什么你为什么热衷于软件开发你对哪一种控制系统比较熟悉是否参与过github项目是否参与过github或其他同类型网站的ios开源项目请描述一下你的ios应用开发流程。
是否熟知cocoapods它是什么如何运行的请概括一下你对软件授权的理解,及其对软件开发的影响。
请概括一下你在构建ios应用时的测试过程。
ios应用如何实现对其他语言、日期格式以及货币单位的支持请描述一下instruments及其作用。
关于ios技术请解释一下handoff是什么,并简述它是如何实现ios、mac/网页应用互通的。
icloud包含了哪些技术与服务ios扩展是指能否列举一些热门或常见的范例healthkit是什么homekit是什么applepay是什么能否描述一下如何在应用中使用applepay请解释一下ios应用沙盒机制。
Voiceover是什么请举例解释一下ios中的辅助功能(accessibility)。
开发者如何使用这些功能ios应用是如何实现后台多任务处理(multitasking)的gamecenter针对ios游戏有哪些功能ibeacons是什么cocoa/cocoatouch是什么请概括一下coreaudio,coredata以及corelocation 各是什么。
iOS面试及答案
史上最全的iOS面试题及答案iOS面试小贴士———————————————回答好下面的足够了-------------------------------------多线程、特别是NSOperation 和GCD 的内部原理。
运行时机制的原理和运用场景。
SDWebImage的原理。
实现机制。
如何解决TableView卡的问题。
block和代理的,通知的区别。
block的用法需要注意些什么。
strong,weak,retain,assign,copy nomatic 等的区别。
设计模式,mvc,单利,工厂,代理等的应用场景。
单利的写法。
在单利中创建数组应该注意些什么。
NSString 的时候用copy和strong的区别。
响应值链。
NSTimer 在子线程中应该手动创建NSRunLoop ,否则不能循环执行。
UIScrollView和NSTimer组合做循环广告图轮播的时候有一个属性可以控制当上下滚动tableview的时候广告轮播图依然正常滚动。
Xcode最新的自动布局。
这个很多公司都用。
尽量自学下。
git ,和svn的用法。
git的几个命令简单的记下。
友盟报错可以查到具体某一行的错误,原理是什么。
Instrument 可以检测电池的耗电量、和内存的消耗。
的用法。
动画CABaseAnimation CAKeyAni…. CATrans….. CAGoup…. 等熟悉。
ARC的原理。
自己写过什么自定义控件就最好了。
———————————————回答好上面的足够了-------------------------------------__block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。
2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。
3.__block对象可以在block中被重新赋值,__weak不可以。
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机制使得接收者可以改变发送者的行为。
iOS面试题
iOS面试题iOS基础面试题1.用objective-c写一个插入法排序2.写一个NSString类的实现+ (id)initWithCString:(const char *)nullTerminatedCStringencoding:(NSStringEncoding)encoding;+ (id)initWithCString:(const char *)nullTerminatedCStringencoding:(NSStringEncoding)encoding{NSString *obj;obj = [self allocWithZone: NSDefaultMallocZone()];obj = [obj initWIthCString: nullTerminatedCString encoding: encoding];return AUTORELEASE(obj);}3.写一个委托的interface#import@protocol MyDelegate;//声明@interface MyClass : NSObject{id delegate;}@end@protocol MyDelegate//委托方法- (void)didJobs:(NSArray *)args;@end4.obj-c有私有方法么?私有变量呢在Objective-C有私有方法,有静态方法和实例方法。
也有私有变量。
@interface MyClass (Private)- (void)testPrivate;@endobjective-c - 类里面的方法只有两种, 静态方法和实例方法. 这似乎就不是完整的面向对象了,按照OO 的原则就是一个对象只暴露有用的东西. 如果没有了私有方法的话, 对于一些小范围的代码重用就不那么顺手了. 在类里面声名一个私有方法@interface Controller : NSObject { NSString *something; }+ (void)thisIsAStaticMethod;- (void)thisIsAnInstanceMethod;@end@interface Controller (private) -(void)thisIsAPrivateMethod;@end@private可以用来修饰私有变量在Objective‐C中,所有实例变量默认都是私有的,所有实例方法默认都是公有的5.#import跟#include的区别?预编译指令Objective-C:#import C,C++:#include #import由gcc编译器支持在Objective-C 中,#import 被当成#include 指令的改良版本来使用。
iOS面试题总结
本文由我司收集整编,推荐下载,如有疑问,请与我司联系iOS 面试题总结1.app 分发方式所谓分发方式简单点讲就是你的app 都可以通过哪些途径给用户使用。
a:个人或者公司的开发者账号可以上传appStore,用户通过appStore 下载。
b:企业账号:打包分发。
c:打包到本地: product- archive /window- organizer --- import -- save for ad hoc.有一段时间由于xcode 版本问题,项目不能真机运行,就是通过打包到本地,再安装到手机上进行测试的。
需要先下载证书。
d:通过第三方:比如蒲公英。
公司组织测试的时候,就是将项目导包上传,然后通过扫码或者链接下载。
前提也是先需要下载证书。
2.UIWebView +H5 面试官问的是UIWebView 加载H5 页面需要做哪些优化。
其实这个问题需要具体问题具体分析,主要是看你页面怎么排版以及H5 页面的内容,有些问题因为H5 中自己处理了,就不再需要手动处理了。
具体详见:cnblogs/devyh/p/5392577.htmlscalesPgeToFit=yes ;//页面自适应e) { //图片下载完成} } }]; #import “SDImageCache.h”缓存图片[[SDImageCache sharedImageCache] storeImage:image forKey:@”anUrlString”toDisk:NO];4.多线程NSThread/NSOperation/GCD 具体的就不介绍了。
注:自己编写的单例需要使用GCDeg:+(SaveInfo*)shareDataModle{stati 不同之处,又有何联系?Swift 是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言Objective-C 是扩充C 的面向对象编程语言区别:语法;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
100个iOS开发面试题汇总
关于iOS开发面试,不论对于招聘和应聘来说,面试都是很重要一种环节,特别对于开发者来说,面试中技术问题环节不但是公司相应聘者技能和积累考察,也是一种开发者自我检查好机会。
无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱项目,从编程、设计、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是什么?
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是如何实现?
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?
在为团队谋求高档别开发工程师或者Leader类职位时,这些问题回答会是相应聘者技术深度和广度一种有效考察。
同样地,如果你团队在某块技术上比较
偏重,但是技术团队No.1工程师却不能较好地回答这些问题话,也许也会是需要检讨技术层一种信号。