IOS工程师面试评分卡答案
- 格式:doc
- 大小:37.00 KB
- 文档页数:2
搜狐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。
史上最全的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线程与进程的区别和联系?进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
1、写出方法获取iOS内存使用情况。
〃获取当前设备可用内存及所占内存的头文件#import<sys/sysctl.h>#import<mach/mach.h>〃获取当前设备可用内存(单位:MB)-(double)availableMemory{vm_statistics_data_tvmStats; mach_msg_type_number_tinfoCount =HOST_V M」N FO_COUNT; kern_return_tkernRetur n =host_statistics(mach_host_self(),HOST_VM_INFO, (host_i nfo_t)&vmStats,& nfoCount);if (kernReturn != KERN_SUCCESS) {returnNSNotFound;}return ((vm_page_size *vmStats.free_count) / 1024.0) / 1024.0;} ~〃获取当前任务所占用的内存(单位:MB)-(double)usedMemory{task basic info data ttasklnfo;mach_msg_type_number_tinfoCount =TASK_BASIC_INFO_COUNT;kern_retum_tkernRetum = task_info(mach_task_self(), TASK_BASIC_INFO,(task_info_t)&tasklnfo,& infoCount);if (kernReturn != KERN_SUCCESS ){returnNSNotFound;}returntasklnfo.resident_size / 1024.0 / 1024.0;}1、深拷贝和浅拷贝的理解?深拷贝拷贝的是内容,浅拷贝拷贝的是指针。
IOS Software Development1.Object-C有多继承吗?没有的话用什么代替?cocoa 中所有的类都是NSObject 的子类多继承在这里是用protocol 委托代理来实现的你不用去考虑繁琐的多继承,虚基类的概念.ood的多态特性在obj-c 中通过委托来实现.2.Object-C有私有方法吗?私有变量呢?objective-c –类里面的方法只有两种, 静态方法和实例方法. 这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西. 如果没有了私有方法的话, 对于一些小范围的代码重用就不那么顺手了. 在类里面声名一个私有方法@interface Controller : NSObject { NSString *something; }+ (void)thisIsAStaticMethod;– (void)thisIsAnInstanceMethod;@end@interface Controller (private) -(void)thisIsAPrivateMethod;@end@private可以用来修饰私有变量在Objective‐C中,所有实例变量默认都是私有的,所有实例方法默认都是公有的3.关键字const什么含义const意味着”只读”,下面的声明都是什么意思?const int a;int const a;const int *a;int * const a;int const * a const;前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。
结论:•; 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。
ios面试题及答案1.uiview 和 calayer 是什么关系?•uiview 继承 uiresponder,而 uiresponder 是响应者对象,可以对ios 中的事件响应及传递,calayer 没有继承自 uiresponder,所以 calayer 不具备响应处理事件的能力。
calayer 是 quartzcore 中的类,是一个比较底层的用来绘制内容的类,用来绘制ui•uiview 对 calayer 封装属性,对 uiview 设置frame、center、bounds 等位置信息时,其实都是uiview 对 calayer 进一层封装,使得我们可以很方便地设置控件的位置;例如圆角、阴影等属性, uiview就没有进一步封装,所以我们还是需要去设置 layer 的属性来实现功能。
•uiview 是 calayer 的代理,uiview 持有一个 calayer 的属性,并且是该属性的代理,用来提供一些 calayer行的数据,例如动画和绘制。
2.bounds 和 frame 的区别?•bounds:一般是相对于自身来说的,是控件的内部尺寸。
如果你修改了 bounds,那么子控件的相对位置也会发生改变。
•frame :是相对于父控件来说的,是控件的外部尺寸。
3.setneedsdisplay 和 layoutifneeded 两者是什么关系?[图片上传失败...(image-fe66cb-)]uiview的setneedsdisplay和setneedslayout两个方法都是异步执行的。
而setneedsdisplay会自动调用drawrect方法,这样可以拿到uigraphicsgetcurrentcontext进行绘制;而setneedslayout会默认调用layoutsubviews,给当前的视图做了标记;layoutifneeded 查找是否有标记,如果有标记及立刻刷新。
iOS 面试中遇到的部分问题及简单答案(1)2016/11/23 0 1.简述block 的实现结构一个block 实例实际上由6 部分构成:1.isa 指针,所有对象都有该指针,用于实现对象相关的功能。
2.flags,用于按bit 位表示一些block 的附加信息,本文后面介绍block copy 的实现代码可以看到对该变量的使用。
3.reserved,保留变量。
4.invoke,函数指针,指向具体的block 实现的函数调用地址。
5.descriptor,表示该block 的附加描述信息,主要是size 大小,以及copy 和dispose 函数的指针。
6.variables,capture 过来的变量,block 能够访问它外部的局部变量,就是因为将这些变量(或变量的地址)复制到了结构体中。
2. 简述core animation核心动画是一套包含图形绘制,投影,动画的Objective–C 类集合。
它通过开发人员所熟悉的应用程序套件和Cocoa Touch 视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流畅的动画。
使用核心动画,你只需要设置一些参数比如起点和终点,剩下的帧核心动画为你自动完成。
核心动画类有以下分类:提供显示内容的图层类。
·动画和计时类。
·布局和约束类。
·事务类,在原子更新的时候组合图层类。
核心动画的基础类包含在Quartz 核心框架(Quartz Core framework)里面。
图层类是核心动画的核心基础,它提供了一套抽象的概念(假如你使用过NSView 或者UIView 的话,你一定会对它很熟悉)。
CALayer 是整个图层类的基础,它是所有核心动画图层类的父类。
3.iOS 触摸响应机制,触摸第一响应者是哪个?。
2023年ios面试题及答案ios面试题及答案(一)1. 原子(atomic)跟非原子(non-atomic)属性有什么区别?01. atomic提供多线程安全。
是防止在写未完成的时候被另外一个线程读取,造成数据错误02. non-atomic:在自己管理内存的环境中,解析的访问器保留并自动释放返回的值,如果指定了 nonatomic ,那么访问器只是简单地返回这个值。
2. 看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什么?NSMutableArray__ ary = [[NSMutableArray array] retain];NSString __str = [NSString stringWithFormat:@"test"];[strretain];[aryaddObject:str];NSLog(@”%@%d”,str,[str retainCount]);[strretain];[strrelease];[strrelease];NSLog(@”%@%d”,str,[str retainCount]);[aryremoveAllObjects];NSLog(@”%@%d”,str,[str retainCount]);str的retainCount创建+1,retain+1,加入数组自动+1 3retain+1,release-1,release-1 2数组删除所有对象,所有数组内的对象自动-1 13. 类别的作用?继承和类别在实现中有何区别?答案:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。
并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。
类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。
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)。
8个苹果面试中求职者可能遇到的问题及答案!【问题一】:“你面前有两扇门,其中一扇门内藏着宝藏,但如果你不小心闯入另一扇门,只能痛苦地慢慢死掉……” 这一听就是那种经典的最令人头痛的一类问题,但其实与其他问题相比,这只是个热身。
在这两扇门后面,有两个人,这两个人都知道哪扇门后有宝藏,哪扇门擅闯者死,而这两个人呢,一个人只说真话,一个人只说假话。
谁说真话谁说假话?那就要看你有没有智慧自己找出来了,游戏规则是,你只能问这两个人每人一个问题。
那么,你问什么问题?问哪个人?根据他们的回答,你又该怎么做?求职者的最佳答案:随便问其中一个人:“如果我问另一个人,他会跟我说哪扇门后是宝藏?如果你问的恰好是讲真话的那个人,那他指给你的答案就是那扇通向死亡的门,因为他会诚实地告诉你那个说谎的人会怎么说。
如果你问的是那个只说谎话的,你得到的也是错误的答案,因为另一个人是讲真话的,说谎话的人会告诉你与讲真话的人相反的答案。
所以你只要随便问一个人上述问题,然后选择与他们说的相反的门就行了。
【问题二】:“你前面站了5个人,他们中间只有一个人讲真话……” 这个问题比上个问题难就难在,你只知道他们五个中有一个只讲真话,但其余四个,他们有时候讲真话,有时候讲假话,只有一点可以确定,这四个人将真话和假话有个规律:如果这次讲了真话,下次就会讲假话,如果这次讲假话,下次就讲真话。
你的任务是,把五个人中那个只讲真话的人找出来。
你可以问两个问题,两个问题可以向同一个人发问,也可以分别问两个人。
你该问什么问题?小提示:你可以这样安排两个问题承担的任务:首先你可以先问一个问题,不管得到的答案是什么,你都能从中知道下一个问题你将得到的答案是真是假。
求职者的最佳答案:随便找一个人,首先问:“你是那个只讲真话的吗?”如果答案是肯定的,你再问这个人:“谁是只讲真话的?”;如果第一个问题你得到的答案是否定的,你就再问对方“谁不是只讲真话的?” 正如这个问题给出的提示,第一个问题的价值在于,如果你得到的答案是“我是”,那么你问的人要么是那个只讲真话的,要么是那个这一轮讲假话的“半真话半假话”者,不管是谁,他下一轮一定会说真话。
苹果面试题及答案问题一:你前面站了5个人,他们中间只有一个人讲真话这个问题比上个问题难就难在,你只知道他们五个中有一个只讲真话,但其余四个,他们有时候讲真话,有时候讲假话,只有一点可以确定,这四个人将真话和假话有个规律:如果这次讲了真话,下次就会讲假话,如果这次讲假话,下次就讲真话。
你的任务是,把五个人中那个只讲真话的人找出来。
你可以问两个问题,两个问题可以向同一个人发问,也可以分别问两个人。
你该问什么问题?小提示:你可以这样安排两个问题承担的任务:首先你可以先问一个问题,不管得到的答案是什么,你都能从中知道下一个问题你将得到的答案是真是假。
求职者的最佳答案:随便找一个人,首先问:你是那个只讲真话的吗? 如果答案是肯定的,你再问这个人:谁是只讲真话的? 如果第一个问题你得到的答案是否定的,你就再问对方谁不是只讲真话的?正如这个问题给出的提示,第一个问题的价值在于,如果你得到的答案是我是,那么你问的人要么是那个只讲真话的,要么是那个这一轮讲假话的半真话半假话者,不管是谁,他下一轮一定会说真话。
所以你可以继续问这个人:谁是只讲真话的? 对方的答案就是正确答案。
如果对第一个问题你得到的答案是我不是,那么回答者不可能是只讲真话的那个人,只能是一个此轮讲真话的半真话半假话者。
此人下一轮将会说假话,所以你应该问他:谁不是只讲真话的? 同样他告诉你的,只能是那个只讲真话的。
问题二:你面前有两扇门,其中一扇门内藏着宝藏,但如果你不小心闯入另一扇门,只能痛苦地慢慢死掉这一听就是那种经典的最令人头痛的一类问题,但其实与其他问题相比,这只是个热身。
在这两扇门后面,有两个人,这两个人都知道哪扇门后有宝藏,哪扇门擅闯者死,而这两个人呢,一个人只说真话,一个人只说假话。
谁说真话谁说假话?那就要看你有没有智慧自己找出来了,游戏规则是,你只能问这两个人每人一个问题。
那么,你问什么问题?问哪个人?根据他们的回答,你又该怎么做?求职者的最佳答案:随便问其中一个人:如果我问另一个人,他会跟我说哪扇门后是宝藏?如果你问的恰好是讲真话的那个人,那他指给你的答案就是那扇通向死亡的门,因为他会诚实地告诉你那个说谎的人会怎么说。
2022年最新iOS ⾯试题(附答案)最近⼤家都要准备去⾯试或者已经在⾯试的,这⾥我给⼤家准备了挺多资料,可以私信我拿,看看了解下。
底下就是我整理出来的⼀些⾯试题iOS 类(class )和结构体(struct )有什么区别?Swift 中,类是引⽤类型,结构体是值类型。
值类型在传递和赋值时将进⾏复制,⽽引⽤类型则只会使⽤引⽤对象的⼀个"指向"。
所以他们两者之间的区别就是两个类型的区别。
举个简单的例⼦,代码如下有想要领取免费资料的可以进裙或者加好友领取,这⾥有⼀个iOS交流圈: 可以来了解,分享BAT,阿⾥⾯试题、⾯试经验,讨论技术,裙⾥资料直接下载就⾏, ⼤家⼀起交流学习!有想要的⾯试资料或者其他资料也可以找我,欢迎咨询!需要的可⾃⾏下载A.sick() 上⾯这段代码,由于 Temperature 是 class ,为引⽤类型,故 A 的 temp 和 B 的 temp指向同⼀个对象。
A 的 temp修改了,B 的 temp 也随之修改。
这样 A 和 B 的 temp 的值都被改成了41.0。
如果将 Temperature 改为 struct,为值类型,则 A 的 temp 修改不影响 B 的 temp。
内存中,引⽤类型诸如类是在堆(heap)上,⽽值类型诸如结构体实在栈(stack)上进⾏存储和操作。
相⽐于栈上的操作,堆上的操作更加复杂耗时,所以苹果官⽅推荐使⽤结构体,这样可以提⾼ App 运⾏的效率。
class有这⼏个功能struct没有的:class可以继承,这样⼦类可以使⽤⽗类的特性和⽅法 类型转换可以在runtime的时候检查和解释⼀个实例的类型 可以⽤deinit来释放资源⼀个类可以被多次引⽤ struct也有这样⼏个优势:结构较⼩,适⽤于复制操作,相⽐于⼀个class的实例被多次引⽤更加安全。
⽆须担⼼内存memory leak或者多线程冲突问题什么是GCD ?谈谈你对GCD 的理解?GCD是Grand Central Dispatch的缩写。
IOS Software Development1.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?oc中的协议和java中的接口概念有何不同?答案:OC中的代理有2层含义,官方定义为formal和informal protocol。
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是什么?Cocoa/Cocoa Touch是什么?请概括一下Core Audio,Core Data以及Core Location各是什么。
它们对iOS应用有何意义?请描述SpriteKit和SceneKit的作用。
无限互联iOS开发面试题【31-60】31、你欣赏哪种性格的人?回答提示:诚实、不死板而且容易相处的人、有“实际行动”的人。
32、你通常如何处理別人的批评?回答提示:①沈默是金,不必说什么,否则情况更糟,不过我会接受建设性的批评。
②我会等大家冷靜下来再讨论。
33、怎样对待自己的失敗?回答提示:我们大家生来都不是十全十美的,我相信我有第二个机会改正我的错误。
34、什么会让你有成就感?回答提示:为贵公司竭力效劳,尽我所能,完成一个项目。
35、眼下你生活中最重要的是什么?回答提示:对我来说,能在这个领域找到工作是最重要的,能在贵公司任职对我说最重要。
36、你为什么愿意到我们公司来工作?回答提示:对于这个问题,你要格外小心,如果你已经对该单位作了研究,你可以回答一些详细的原因,像“公司本身的高技术开发环境很吸引我。
”、“我同公司出生在同样的时代,我希望能够进入一家与我共同成长的公司。
”、“你们公司一直都稳定发展,在近几年来在市场上很有竞争力。
”、“我认为贵公司能够给我提供一个与众不同的发展道路。
”这都显示出你已经做了一些调查,也说明你对自己的未来有了较为具体的远景规划。
37、你和别人发生过争执吗?你是怎样解决的?回答提示:这是面试中最险恶的问题,其实是考官布下的一个陷阱,千万不要说任何人的过错,应知成功解决矛盾是一个协作团体中成员所必备的能力。
假如你工作在一个服务行业,这个问题简直成了最重要的一个环节。
你是否能获得这份工作,将取决于这个问题的回答。
考官希望看到你是成熟且乐于奉献的。
他们通过这个问题了解你的成熟度和处世能力。
在没有外界干涉的情况下,通过妥协的方式来解决才是正确答案。
38、问题:你做过的哪件事最令自己感到骄傲?回答提示:这是考官给你的一个机会,让你展示自己把握命运的能力。
这会体现你潜在的领导能力以及你被提升的可能性。
假如你应聘于一个服务性质的单位,你很可能会被邀请去午餐。
记住:你的前途取决于你的知识、你的社交能力和综合表现。
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开发面试时,掌握常见的iOS面试题目及答案是至关重要的。
下面将为你提供一些常见的iOS面试题目及详细的答案,帮助你更好地准备面试。
1. 什么是ARC,它与MRC的区别是什么?ARC即自动引用计数(Automatic Reference Counting),它是一种编译器特性,用于自动管理对象的内存管理。
ARC通过在编译时自动添加与释放内存相关的代码,从而解决了手动引用计数(MRC)方式下可能出现的内存泄漏和野指针等问题。
MRC是手动引用计数(Manual Reference Counting)的缩写,使用开发者自己手动管理对象的内存,包括手动retain、release和autorelease等操作。
主要区别:- ARC是编译器特性,而MRC则需要手动编写内存管理代码;- ARC不需要考虑retain和release的使用,编译器会自动生成;- ARC需要使用强、弱、循环引用修饰符来帮助编译器处理引用关系。
2. 请解释一下iOS中的设计模式。
iOS中常用的设计模式如下:- MVC(Model-View-Controller):将应用程序分为模型、视图和控制器三个部分。
模型负责数据处理和逻辑,视图负责界面展示,控制器负责连接模型和视图,并处理用户交互。
- Delegate(委托):通过委托模式,允许一个对象代表或协助另一个对象执行某些任务或接收某些事件通知。
- Singleton(单例):确保一个类只有一个实例,并提供一个全局访问点。
- Observer(观察者):定义对象间的一对多依赖关系,当一个对象状态发生变化时,其他依赖的对象会收到通知。
- Factory(工厂):通过工厂方法创建对象,隐藏具体的实现细节,降低代码之间的耦合。
3. 请解释一下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)。
3.__block对象可以在block中被重新赋值,__weak不可以。
一、判断题(每题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工程师面试评分表答案一、技术基本要求1、常用的IOS开发语言和开发工具有哪些?是否了解苹果最新推出的开发语言?(全部正确打√)答:开发语言Objective-C;开发工具Xcode;最新开发语言Swift,速度更快,使用起来更加容易。
2、苹果目前有哪些IOS系统的硬件产品,他们的分辨率有哪些,如何进行多分辨率适配?(分辨率回答3个以上知道自适应,打√)答:iPhone4(320×480);iPhone4s(640×960);iPhone5/5s/5c(1136×640);iPad2(1024×768);iPad3(2048×1536);ipad mini1(1024×768);ipad mini2(2048×1536);iphone与IPad独立开发,独立上架,不需要互相适应;IPHONE4/5之间需要进行自适应,如自动缩放子视图、调整相对大小等方法。
3、开发一个IOS应用的流程是什么?(回答3个以上打√)答:A、业务逻辑的分析和实现技术的准备;B、编写相应模块的设计和开发文档,预估开发时间;C、按时按量完成具有高质量和规范性的编码工作;D、自行对出现的BUG进行内部测试和修改;E、撰写相应的软件使用说明文档、向部门领导提交设计和开发文档、提交接口文档和算法文档、提交具有清晰备注的源代码。
F、开发结束后,根据项目需要,不定期对客户端软件的进行维护及更新;4、IOS6、7系统的区别?(全部正确打√)答、主要是视觉差异,IOS6是拟物化设计,IOS7是扁平多彩渐变风格。
5、苹果的上架流程是怎样的,遇到哪些常见的问题会无法通过审核?(上架流程大致正确且无法通过审核正确2个以上,打√)答:上架流程:A、苹果雪豹以上的操作系统,B、开发者账号注册审批1-2周(公司已有账号忽略),C、向应用商店提交产品,D、苹果人工审批1-2周,邮件告知审批不通过,修改后重新审批1-2周;无法通过审核的原因:A、产品稳定性差,容易崩溃,B、APPstore上重复性高的小应用,C、违反苹果的设计原则,D、侵犯苹果公司或其他公司的版权,E、黄、赌、毒、暴力、诽谤、低俗、种族歧视,F、使用第三方支付等原因。
凯迈科技IOS工程师面试评分表答案
一、技术基本要求
1、常用的IOS开发语言和开发工具有哪些?是否了解苹果最新推出的开发语言?(全部正确打√)
答:开发语言Objective-C;开发工具Xcode;最新开发语言Swift,速度更快,使用起来更加容易。
2、苹果目前有哪些IOS系统的硬件产品,他们的分辨率有哪些,如何进行多分辨率适配?(分辨率回答3个以上知道自适应,打√)
答:iPhone4(320×480);iPhone4s(640×960);iPhone5/5s/5c(1136×640);iPad2(1024×768);iPad3(2048×1536);ipad mini1(1024×768);ipad mini2(2048×1536);iphone与IPad独立开发,独立上架,不需要互相适应;IPHONE4/5之间需要进行自适应,如自动缩放子视图、调整相对大小等方法。
3、开发一个IOS应用的流程是什么?(回答3个以上打√)
答:A、业务逻辑的分析和实现技术的准备;B、编写相应模块的设计和开发文档,预估开发时间;C、按时按量完成具有高质量和规范性的编码工作;D、自行对出现的BUG进行内部测试和修改;E、撰写相应的软件使用说明文档、向部门领导提交设计和开发文档、提交接口文档和算法文档、提交具有清晰备注的源代码。
F、开发结束后,根据项目需要,不定期对客户端软件的进行维护及更新;
4、IOS6、7系统的区别?(全部正确打√)
答、主要是视觉差异,IOS6是拟物化设计,IOS7是扁平多彩渐变风格。
5、苹果的上架流程是怎样的,遇到哪些常见的问题会无法通过审核?
(上架流程大致正确且无法通过审核正确2个以上,打√)
答:上架流程:A、苹果雪豹以上的操作系统,B、开发者账号注册审批1-2周(公司已有账号忽略),C、向应用商店提交产品,D、苹果人工审批1-2周,邮件告知审批不通过,修改后重新审批1-2周;
无法通过审核的原因:A、产品稳定性差,容易崩溃,B、APPstore上重复性高的小应用,C、违反苹果的设计原则,D、侵犯苹果公司或其他公司的版权,E、黄、赌、毒、暴力、诽谤、低俗、种族歧视,F、使用第三方支付等原因。
6、简单介绍IOS常用的数据库?阐述mysql、SqlServer、Oracle数据库的区别是什么?(全部正确打√)答:A、SQLite是一个轻量级的数据库,完全使用C语言编写,使用简单方便。
它是一个嵌入到程序进程的数据库,和其他一些数据库(MySQL,MS SQL)不同,它没有独立的进程。
B、mysql用于轻量级数据开发,SqlServer用于中型数据库且仅用于window系统,Oracle用于大型数据库,他们之间可以互相转换。
7、在IOS应用开发中一般什么原因会造成软件闪退?(回答3个以上打√)
答:A、内存溢出;B、数据异常时程序没有做预防机制;C、重用问题;D、空指针;E、数组访问越界;
F、配置文件读取异常等。
8、如何进行IOS应用产品的性能优化?(回答5个以上打√)
答:【初级】用ARC管理内存、在正确的地方使用reuseIdentifier、尽可能使Views透明、避免庞大的XIB、不要block主线程、在Image Views中调整图片大小、选择正确的Collection、打开gzip压缩;
【中级】重用和延迟加载Views;注意Cache;权衡渲染方法;处理内存警告;重用大开销的对象、使用Sprite Sheets、避免反复处理数据、正确地设定Background Images、选择正确的数据格式、减少使用Web特性、设定Shadow Path、优化你的Table View、选择正确的数据存储选项
【高级】加速启动时间、使用Autorelease Pool、选择是否缓存图片、尽量避免日期格式转换
9、开发中Xml、Json、HTTP协议、Socket技术分别用在哪些地方?(大部分回答正确打√)
答:大部分通信数据格式是使用JSON,和XML相比,JSON数据具有传输数据少,易于使用等特点。
而XML 则通常作为配置文件出现在各类应用中,XML有良好的易于人类阅读的特点,如果你的应用中要使用配置,解析XML是不可缺少的步骤。
HTTP一般为单向传输,socket是双向传输,及时通讯用socket,实时性要求不高用HTTP。
10、如何规范的编写代码及文档?(回答3个以上打√)
答:A、清晰的注释;B、良好的命名规范;C、每条语句单独成行;D、不同层次的语句要加缩进;E、循环代码中即使只有一行代码,也要加大括号;F、及时清理无用代码,保持代码整洁。
11、面向对象的程序设计方法中,继承、多态、封装是什么意思,用面向对象的方法有什么好处?(大部分回答正确打√)
答:【继承】,指继承是指一个对象从另一个对象中获得属性的过程;【多态】,指一个方法只能有一个名称,但可以有许多形态;【封装】,指把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。
【好处】易维护、质量高、效率高、易扩展。
12、常用的版本控制软件有哪些?使用版本控制软件有什么好处?(大概意思回答正确打√)
答:版本控制软件是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
常用的有CVN、SVN和GIT;有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。
你可以比较文件的变化细节,查出是谁最后修改了什么地方从而造成某些怪异问题,又是谁在何时报告了某个功能缺陷。
二、技术加分要求(不展开询问)
1、是否会使用Linux操作系统?(是打√;不是打×)
2、是否具备SDK反编译及项目修改经验?(是打√;不是打×)
3、能否使用Html5进行开发?(是打√;不是打×)
4、是否自学掌握别的开发语言或技术?如:。