ios面试题锦集(带答案)
搜狐 2022 iOS工 程师面试题(求职面试回答资料)

搜狐2022 iOS工程师面试题第1题:单选题1、以下哪一段代码不会抛出特别()A、NSArray *array=@[1,2,3];NSNumber * number=array[3];B、NSDictionary *dict=@{@"key":nil};C、NSString *str=nil;NSString *str2=[str substringFromIndex:3];D、NSString *str=@"hi";NSString *str2=[str substringFromIndex:3];1、CA:OC数组中的元素不能是基本数据类型,必需是对象,并且array[3]下标越界,Xcode编译时报错B:字典中键值对不能为nil,运行时崩溃C:OC中向空对象发送消息,不执行任何操作,不报错,不崩溃D:数组下标越界,运行时崩溃第2题:2、delegate中的property使用以下哪个属性()A、assignB、retainC、copyD、strong2、Adelegate中文叫做托付,通常会用在class内部把一些大事处理"托付"给别人去完成。
为什么我们不用retain而要用assign呢?缘由就是在于iOS的reference counting的环境中,我们必需解决circular count的问题。
第3题:3、C和Objective-C的混合使用,以下描述错误的是()A、cpp文件只能使用C/C++代码B、cpp文件include的头文件中,可以消失objective-C的代码C、mm文件中混用cpp直接使用即可D、cpp使用objective-C的关键是使用接口,而不能直接使用代码3、Bobj-c 的编译器处理后缀为m 的文件时,可以识别obj-c 和c 的代码,处理mm 文件可以识别obj-c,c,c++ 代码,但cpp 文件必需只能用c/c++ 代码,而且cpp 文件include 的头文件中,也不能消失obj-c 的代码,由于cpp 只是cpp第4题:4、关于Objective-C中属性的说明,以下错误的是()A、readwrite是可读可写特性,需要生成getter方法和setter方法B、readonly是只读特性,只有getter方法,没有setter方法C、assign是赋值属性,setter方法将传入参数赋值给实例变量D、retain表示持有特性,copy属性表示拷贝属性,都会建立一个相同的对象4、DCopy是创建一个新对象,Retain是创建一个指针,引用对象计数加1。
苹果奇葩的面试题目(3篇)

第1篇一、产品设计与创新类1. 如果桌上放置了一部旧iPhone,你能看到哪些材料?(考察应聘者对产品的洞察力和创新能力)2. 请设计一款可以解决全球饥饿问题的产品。
(考察应聘者的大局观和创新思维)3. 请用不超过10个字概括苹果公司的核心价值观。
(考察应聘者的提炼能力和对企业的理解)二、逻辑思维与问题解决类1. 如果准备了4杯水,却来了5位领导,应该如何分配?(考察应聘者的应变能力和团队协作精神)2. 帝国大厦有多重?(考察应聘者的观察力和逻辑推理能力)3. 每天有多少孩子出生?(考察应聘者的观察力和数据处理能力)三、个人价值观与职业规划类1. 你会是什么超级英雄?为什么?(考察应聘者的个性和价值观)2. 请描述你职业生涯中最难忘的一次失败经历,以及你从中学到了什么。
(考察应聘者的挫折承受能力和自我反省能力)3. 你认为自己的优势和劣势分别是什么?(考察应聘者的自我认知能力)四、沟通与团队协作类1. 如果你在团队中遇到了一个难以沟通的同事,你会如何处理?(考察应聘者的沟通能力和团队协作精神)2. 请设计一场针对苹果公司产品的发布会,包括演讲稿、PPT和现场互动环节。
(考察应聘者的策划能力和沟通能力)3. 你认为团队中最重要的是什么?(考察应聘者的团队观念和价值观)五、心理素质与抗压能力类1. 如果你在工作中遇到了一个难以解决的问题,你会如何应对?(考察应聘者的心理素质和抗压能力)2. 请描述一次你在压力下完成任务的经历,以及你如何应对压力。
(考察应聘者的心理素质和抗压能力)3. 你认为自己在面对挫折时,最需要的是什么?(考察应聘者的心理素质和抗压能力)六、社会热点与价值观类1. 如果你是苹果公司的CEO,你会如何应对当前全球贸易战?(考察应聘者的政治敏感度和全局观)2. 请谈谈你对人工智能发展的看法,以及你认为苹果公司应该如何应对?(考察应聘者的价值观和前瞻性)3. 你认为苹果公司应该如何在环保方面做出贡献?(考察应聘者的社会责任感和价值观)总之,苹果公司的奇葩面试题目不仅考验应聘者的专业知识,更考验其创新能力、应变能力和综合素质。
史上最全的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.在一个对象的方法里面:=“object”;和name=”object”有什么不同吗?答:=”object”:会调用对象的setName()方法;name=“object”:会直接把object赋值给当前对象的name属性。
2.请简述=nil的机制,以及与[namerelease]的区别?=nil;//使用nil参数调用setName:方法[name release]生成的访问器将自动释放以前的name对象3.请简要说明viewDidLoad和viewDidUnload何时调用答viewDidLoad在view从nib文件初始化时调用,loadView在controller 的view为nil时调用。
此方法在编程实现view时调用,view控制器默认会注册memory warning notification,当view controller的任何view没有用的时候,viewDidUnload会被调用,在这里实现将retain的view release,如果是retain的IBOutlet view属性则不要在这里release,IBOutlet会负责release。
4.打印结果main(){int a[5]={1,2,3,4,5};int*ptr=(int*)(&a+1);printf(“%d,%d”,*(a+1),*(ptr-1));}答:*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)int*ptr=(int*)(&a+1);则ptr实际是&(a[5]),也就是a+5原因如下:&a是数组指针,其类型为int(*)[5];而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。
a是长度为5的int数组指针,所以要加5*sizeof(int)所以ptr实际是a[5]但是prt与(&a+1)类型是不一样的(这点很重要)所以prt-1只会减去sizeof(int*)a,&a的地址是一样的,但意思不一样a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].5.简述内存分区情况提示:分为代码区、数据区、堆区、栈区(1)代码区:存放函数二进制代码(2)数据区:系统运行时申请内存并初始化,系统退出时由系统释放。
iOS基础知识面试题合集(有目录)

iOS基础知识面试题合集1.#IMPORT和#INCLUDE的区别@CLASS? 32. READWRITE,READONLY,ASSIGN,RETAIN,COPY,NONATOMIC 属性的作用 33.在一个对象的方法里面:=“OBJECT”;和 NAME =”OBJECT”有什么不同吗? 34.请简述= NIL的机制,以及与[NAMERELEASE]的区别? 35.请简要说明VIEW D ID L OAD和VIEW D ID U NLOAD何时调用 36.实例化一个UIT ABLE V IEW对象,要求写出关键语句? 37.使用SQL语句查询出省名以湖开头,邮编为436001所在的市区?(5分)(表名及字段名自定义) 48.打印结果 49.用预处理指令#DEFINE声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 510.写一”标准”宏MIN,这个宏输入两个参数并返回较小的一个 511.数组和指针的区别 512.STATIC的作用 513.简述内存分区情况 614.#INCLUDE<FILENAME>和#INCLUDE”FILENAME”有什么区别 615.CONST CHAR *P; CHARCONST*P; CHAR*CONST P; CONST CHAR* CONST P;四个修饰指针有什么区别 616.MVC的理解? 617.在O BJ-C中有没有私有方法?私有变量?一般采用什么方法实现? 618.OC中加号方法与减号的区别?719.FREE与RELEASE的区别720.在终端环境下,分别说明4,2,1,0对应的权限是什么721.ARC机制722.自动释放池是什么,如何工作723.V IEW C ONTROLLER 的 LOAD V IEW, VIEW D ID L OAD,VIEW D ID U NLOAD 分别是在什么时候调用的?在自定义V IEW C ONTROLLER 的时候这几个函数里面应该做什么工作?824. 浅复制和深复制的区别?//浅拷贝和深拷贝825. FRAME和BOUNDS有什么不同?826. OBJ-C的优缺点827. 用变量A给出下面的定义828. 写出几个死循环?929. 队列和栈有什么区别:930.HTTP协议中,POST和GET的区别是什么?9(核心服务层THE C ORE S ERVICES LAYER)、31. I OS的系统架构分为(核心操作系统层THE C ORE OS LAYER)、(媒体层THE M EDIA LAYER)和(C OCOA界面服务层THE C OCOA T OUCH LAYER)四个层次。
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面试题(修改版1.1)

iOS面试题1、IOS中的传值方式有那些?答案:属性传值、单例传值,通知传值、全局变量、代理传值,block传值2. obj-c的优缺点答: objc优点:1) Cateogies (类目)2) Posing (冒充)3) 动态识别4) 指标计算5)弹性讯息传递6) 不是一个过度复杂的 C 衍生语言7) Objective-C 与 C++ 可混合编程objc缺点:1) 不支援命名空間2) 不支持运算符重载3)不支持多重继承4)使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。
(如内联函数等),性能低劣。
3. readwrite,re ado nly,assign,retain,copy,nonatomic 属性的作用?答:@property是一个属性访问声明,扩号内支持以下几个属性:1,getter=getterName,setter=setterName,设置setter与 getter的方法名2,readwrite,re ado nly,设置可供访问级别2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料)4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再 Copy出新的对象,retainCount为1。
这是为了减少对上下文的依赖而引入的机制。
4.获取应用程序程序包中资源文件路径的方法:例如获取程序包中一个图片资源(apple.png)路径的方法:答: NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”];UIImage *appleImage = [[UIImage alloc]initWithContentsOfFile:imagePath];代码中的mainBundle类方法用于返回一个代表应用程序包的对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
前者和Java接口一样。
informal protocol中的方法属于设计模式考虑范畴,不是必须实现的,但是如果有实现,就会改变类的属性。
其实关于正式协议,类别和非正式协议我很早前学习的时候大致看过,也写在了学习教程里 “非正式协议概念其实就是类别的另一种表达方式“这里有一些你可能希望实现的方法,你可以使用他们更好的完成工作”。
这个意思是,这些是可选的。
比如我门要一个更好的方法,我们就会申明一个这样的类别去实现。
然后你在后期可以直接使用这些更好的方法。
这么看,总觉得类别这玩意儿有点像协议的可选协议。
" 现在来看,其实protocal已经开始对两者都统一和规范起来操作,因为资料中说“非正式协议使用interface修饰“, 现在我们看到协议中两个修饰词:“必须实现(@requied)”和“可选实现(@optional)”。
5.What are KVO and KVC? 答案:kvc:键 - 值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,直接或通过实例变量访问的机制。
很多情况下可以简化程序代码。
apple文档其实给了一个很好的例子。
kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码。
具体用看到嗯哼用到过的一个地方是对于按钮点击变化状态的的监控。
比如我自定义的一个button [cpp] [self addObserver:self forKeyPath:@"highlighted" options:0 context:nil]; #pragma mark KVO - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context { if ([keyPath isEqualToString:@"highlighted"] ) { [self setNeedsDisplay]; } }对于系统是根据keypath去取的到相应的值发生改变,理论上来说是和kvc机制的道理是一样的。
对于kvc机制如何通过key寻找到value: “当通过KVC调用对象时,比如:[self valueForKey:@”someKey”]时,程序会自动试图通过几种不同的方式解析这个调用。
首先查找对象是否带有 someKey 这个方法,如果没找到,会继续查找对象是否带有someKey这个实例变量(iVar),如果还没有找到,程序会继续试图调用 -(id) valueForUndefinedKey:这个方法。
如果这个方法还是没有被实现的话,程序会抛出一个NSUndefinedKeyException异常错误。
(注:Key-Value Coding查找方法的时候,不仅仅会查找someKey这个方法,还会查找getsomeKey这个方法,前面加一个get,或者_someKey以及_getsomeKey这几种形式。
同时,查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在。
) 设计valueForUndefinedKey:方法的主要目的是当你使用-(id)valueForKey方法从对象中请求值时,对象能够在错误发生前,有最后的机会响应这个请求。
这样做有很多好处,下面的两个例子说明了这样做的好处。
“ 来至cocoa,这个说法应该挺有道理。
因为我们知道button却是存在一个highlighted实例变量.因此为何上面我们只是add一个相关的keypath就行了, 可以按照kvc查找的逻辑理解,就说的过去了。
6.What is purpose of delegates? 代理的作用?答案:代理的目的是改变或传递控制链。
允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。
可以减少框架复杂度。
另外一点,代理可以理解为java中的回调监听机制的一种类似。
7.What are mutable and immutable types in Objective C? obc中可修改和不可以修改类型。
答案:可修改不可修改的集合类。
这个我个人简单理解就是可动态添加修改和不可动态添加修改一样。
比如NSArray和NSMutableArray。
前者在初始化后的内存控件就是固定不可变的,后者可以添加等,可以动态申请新的内存空间。
8.When we call objective c is runtime language what does itmean? 我们说的obc是动态运行时语言是什么意思? 答案:多态。
主要是将数据类型的确定由编译时,推迟到了运行时。
这个问题其实浅涉及到两个概念,运行时和多态。
简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。
多态:不同对象以自己的方式响应相同的消息的能力叫做多态。
意思就是假设生物类(life)都用有一个相同的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。
也就是不同的对象以自己的方式响应了相同的消息(响应了eat这个选择器)。
因此也可以说,运行时机制是多态的基础?~~~9.what is difference between NSNotification and protocol? 通知和协议的不同之处? 答案:协议有控制链(has-a)的关系,通知没有。
首先我一开始也不太明白,什么叫控制链(专业术语了~)。
但是简单分析下通知和代理的行为模式,我们大致可以有自己的理解 简单来说,通知的话,它可以一对多,一条消息可以发送给多个消息接受者。
代理按我们的理解,到不是直接说不能一对多,比如我们知道的明星经济代理人,很多时候一个经济人负责好几个明星的事务。
只是对于不同明星间,代理的事物对象都是不一样的,一一对应,不可能说明天要处理A明星要一个发布会,代理人发出处理发布会的消息后,别称B的 发布会了。
但是通知就不一样,他只关心发出通知,而不关心多少接收到感兴趣要处理。
因此控制链(has-a从英语单词大致可以看出,单一拥有和可控制的对应关系。
10.What is push notification? 什么是推送消息? 11.Polymorphism? 关于多态性 答案:多态,子类指针可以赋值给父类。
这个题目其实可以出到一切面向对象语言中, 因此关于多态,继承和封装基本最好都有个自我意识的理解,也并非一定要把书上资料上写的能背出来。
最重要的是转化成自我理解。
12.Singleton? 对于单例的理解 答案:11,12题目其实出的有点泛泛的感觉了,可能说是编程语言需要或是必备的基础。
基本能用熟悉的语言写出一个单例,以及可以运用到的场景或是你编程中碰到过运用的此种模式的框架类等。
进一步点,考虑下如何在多线程访问单例时的安全性。
13.What is responder chain? 说说响应链 答案:事件响应链。
包括点击事件,画面刷新事件等。
在视图栈内从上至下,或者从下之上传播。
可以说点事件的分发,传递以及处理。
具体可以去看下touch事件这块。
因为问的太抽象化了 严重怀疑题目出到越后面就越笼统。
14.Difference between frame and bounds? frame和bounds 有什么不同? 答案:frame指的是:该view在父view坐标系统中的位置和大小。
(参照点是父亲的坐标系统) bounds指的是:该view在本身坐标系统中的位置和大小。
(参照点是本身坐标系统)15.Difference between method and selector? 方法和选择器有何不同? 答案:selector是一个方法的名字,method是一个组合体,包含了名字和实现. 详情可以看apple文档。
16.Is there any garbage collection mechanism in ObjectiveC.? OBC的垃圾回收机制? 答案: OBC2.0有Garbage collection,但是iOS平台不提供。