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。
史上最全的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面试题--有答案2.doc

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面试题2(答案)

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面试题及答案

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)

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面试题及答案

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面试题集锦(附答案)(个人精心整理)

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)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
凯迈科技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、是否自学掌握别的开发语言或技术?如:。