2019年iOS面试真题大全

合集下载

史上最全的iOS面试题及答案

史上最全的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

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、深拷贝和浅拷贝的理解?深拷贝拷贝的是内容,浅拷贝拷贝的是指针。

苹果奇葩的面试题目(3篇)

苹果奇葩的面试题目(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经典面试题

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基础知识面试题合集(有目录)

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

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,试题,答案,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教师教学中查看更多范文。

精品文档.史上最全的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.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类方法用于返回一个代表应用程序包的对象。

iOS面试题及答案

iOS面试题及答案

面试题1.Object-c的类可以多继承么?category是什么?重写一个类的方式用继承好还是分类好?为什么?答:Object-c的类不可以多重继承,可以用伪继承和@protocol委托来代替;可以实现多个接口,通过实现多个接口就可以完成C++的多重继承,Category 是类别,一般用分类比较好,用Category去重写类的方法,仅对本Category 有效,不会影响到其他类与原有类的关系。

伪继承必须覆盖两个方法,即methodSignatureForSelector: 和forwardInvocation:。

methodSignatureForSelector:的作用在于为另一个类实现的消息创建一个有效的方法签名。

forwardInvocation:将选择器转发给一个真正实现了该消息的对象.2.类别的作用?继承和类别在实现中有何区别?答:category可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。

并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。

类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。

(2)创建对私有方法的前向引用。

(3)向对象添加非正式协议。

继承可以增加,修改或者删除方法,并且可以增加属性。

/* 非正式协议:是使用类别category来实现,非正式协议是NSObject的一个类别,这样任何类的对象都可以作为委托对象来使用,它可以列出对象能够执行的所有方法,这样用来实现委托,我们可以使用选择器来判断该非正式协议中是否有这个方法。

正式协议:是一个命名的方法列表,与非正式协议相比不同的是,它要求显示的采用协议,采用协议的方法是在类的@interface声明中列出协议的名称,此时,实现协议的类应该遵守协议,承诺实现协议中的所有方法。

*/3.类别和类扩展的区别?答:1."类别"比"子类"方便多了,因为对已添加category的类,使用到它或者它的子类的地方,category都会起作用;“子类”的话,则需要在使用的每个地方,创建子类对象2."类别"只能添加方法,不能加属性、变量3."类别"一般是对框架提供类的扩展(没有源码,不能修改)4."类别"一般是在不想生成一个新的子类的情况下,比如对NSArray的扩展“扩展”则相当于定义一个子类,在里面添加属性和方法4.属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?什么情况使用weak关键字,相比assign有什么不同?答:1> readwrite:同时生成get方法和set方法的声明和实现2> readonly:只生成get方法的声明和实现3> assign:set方法的实现是直接赋值,用于基本数据类型4> retain:set方法的实现是release旧值,retain新值,用于OC对象类型5> copy:set方法的实现是release旧值,copy新值,用于NSString、block等类型6> nonatomic:非原子性,set方法的实现不加锁(比atomic性能高)注意点:(nonatomic)非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。

iOS招聘会面试题收集

iOS招聘会面试题收集

文思海辉:
1、远程推送;本地消息和原地推送的区别
2、FBdb,有什么亮点
3、GCD
4、多线程的底层实行
5、SQLite
6、iOS7的新特性
7、iOS6和iOS7适配
8、本地缓存一般存在哪个文件下
9、沙盒下面都有哪些文件夹
10、三次握手,具体怎么交互
11、get/post
12、百度地图LBS两点之间的距离
13、发布流程
14、企业级发布
15、原理与AFN之间区别,和如何实现的
16、KVO
17、一个软件的开发流程?
18、运行时机制也问的很多
19、苹果怎么实现安全机制
20、为什么要用第三方框架
21、介绍下iOS7中增加的NSURSession?
22、地图定位怎么实现的?
众方阳光传媒集团有限公司
1、远程推送
2、极光推送原理(第三方框架),怎么用的?遇到什么问题?怎么解决的?
3、GCD底层实现原理
4、平常看什么技术博客、看什么时候
5、类似微信怎么搜索到附件的人,用地图需不需要服务器,你如何实现?北京乐宠科技有限公司
1、问网络、服务器、数据库特别多
2、TCP/IP创建连接的过程
3、微信的附近功能怎么实现的?
4、怎么实现第三方登陆
安尼梅森(北京)数码科技有限公司
1、不懂技术的人问。

IOS面试题1(答案)

IOS面试题1(答案)

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。

ios面试题及答案2019

ios面试题及答案2019

ios面试题及答案20191. 什么是iOS?iOS是苹果公司为其移动设备开发的操作系统,包括iPhone、iPad和iPod Touch。

它是一个闭源操作系统,基于Unix,提供了一系列用户界面和应用程序。

2. iOS和Android的主要区别是什么?iOS和Android的主要区别包括:- 开发环境:iOS基于Objective-C和Swift,而Android基于Java和Kotlin。

- 操作系统:iOS是苹果公司的闭源操作系统,而Android是谷歌的开源操作系统。

- 设备兼容性:iOS仅适用于苹果设备,而Android适用于多种设备制造商。

- 应用商店:iOS使用App Store,而Android使用Google Play商店。

3. 什么是Objective-C?Objective-C是一种面向对象的编程语言,它在C语言的基础上增加了面向对象的特性。

它是iOS开发的主要语言之一。

4. Swift语言有哪些特点?Swift是苹果公司开发的一种新的编程语言,用于iOS和macOS应用的开发。

它的特点包括:- 简洁:Swift的语法更简洁,易于阅读和编写。

- 安全:Swift提供了多种安全特性,如自动引用计数和类型安全。

- 性能:Swift的性能接近于C语言,非常适合高性能应用。

5. MVC模式是什么?MVC(Model-View-Controller)是一种设计模式,用于将应用程序的逻辑、数据和用户界面分离。

在iOS开发中,MVC是常用的架构模式。

6. 如何在iOS中实现多线程?在iOS中实现多线程可以通过以下几种方式:- 使用NSThread类创建新线程。

- 使用Grand Central Dispatch(GCD)。

- 使用Operation Queue。

7. 什么是Auto Layout?Auto Layout是iOS开发中用于自动计算和调整视图大小和位置的布局系统。

它允许开发者定义视图之间的约束,系统会根据这些约束自动计算视图的位置和大小。

iOS面试题(附答案)

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

iOS 面试题及答案1、自动释放池是什么,如何工作的?当您向一个对象发送一个autorelease消息时,cocoa就会将该对象的一个引用放入到最新的自动释放池。

它仍然是个正当的对象,因此自动释放池定义的作用域内的其他对象可以向它发送消息。

当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就会被释放。

2、线程和进程的区别和联系?进程和线程都是由操作系统所体会的程序运行的基本单元,系统会利用该基本单元实现系统对应用的并发性。

线程和进程的主要差别在于它们是不同的操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。

线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所有多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

3、属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?1)Readwrite是可读可写特性,需要生成getter方法和setter方法时2)Readonly是只读写特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变3)Assign是赋值特性,setter方法将传入参数赋值给实例变量,仅设置变量时4)Retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+15)Copy表示赋值特性,setter方法将传入对象赋值一份,需要完全一份新的变量时6)Nonatomic非原子操作,决定编译器生成的setter,getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic4、object-c中创建线程的方法是什么,如果在主线程中执行代码,方法是什么,如果想延时执行代码,方法又是什么?线程创建有三种方法:使用nsthread创建、使用gcd的dispatch创建、使用子类化的nsoperation创建,然后将其加入nsoperationqueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone5、类别的作用,继承和类别在实现中有何区别?Category可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改;并且如果类别和原来类中的方法产生冲突,类别将覆盖原来的方法,因此类别具有更高的优先级;将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,向对象添加非正式协议。

iOS开发高级程序员面试题-答案

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 面试题锦集between shallow copy and deep copy浅复制和深复制的区别答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。

深层复制:复制引用对象本身。

意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。

深复制就好理解了,内存中存在了两份独立对象本身。

用网上一哥们通俗的话将就是:浅复制好比你和你的影子,你完蛋,你的影子也完蛋深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。

is advantage of categories What is difference between implementing a category and inheritance类别的作用继承和类别在实现中有何区别答案:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。

并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。

类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。

(2)创建对私有方法的前向引用。

(3)向对象添加非正式协议。

继承可以增加,修改或者删除方法,并且可以增加属性。

between categories and extensions类别和类扩展的区别。

答案:category和extensions的不同在于后者可以添加属性。

另外后者添加的方法是必须要实现的。

extensions可以认为是一个私有的Category。

between protocol in objective c and interfaces in javaobc中的协议和java中的接口概念有何不同答案:OBC中的代理有2层含义,官方定义为 formal和informal protocol。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019年iOS面试真题大全(3-5年)1、自我介绍2、如何实现一个倒计时功能,类似于蘑菇街中的秒杀。

3、怎么理解es6箭头函数中的this,它和一般函数的this指向有什么区别呢?4、一个矩形,里面一个樱桃,过樱桃做一条直线,并且没有数据和测量工具,如果做到评分矩形呢?5、说一下同源策略6、vue中的路由时如何管理的?你知道他的实现方式吗?7、提到了我的博客,问我的博客相关问题。

8、retina屏幕的了解9、说一说移动端的布局。

flexible。

10、知道原理吗,怎么自己去实现一个flexible。

rem布局的实现原理。

移动端的点透是什么,有没有了解11、说一说异步编程的方式有哪些。

12、项目中的设计是怎么回事,说说设计方面。

13、你博客里的轮播图,如果还要优化,你会怎么去优化。

14、你最喜欢的es6中的特性是什么,为什么。

15、为什么选择前端(不是科班,这个问题经常被问。

)16、css布局的属性有哪些。

17、有没有遇到过这样的问题:一个有border的div,里面有一个图片,发现图片和下面的border 有一定的空隙(baseline)。

18、函数调用的方式有哪些。

他们的区别是什么。

19、说一说原型链(这个要非常清楚)。

20、用过什么框架。

jquery用过吗?21、你实习公司的前端leader是谁。

22、给你一个项目,你使用jquery还是vue、react。

为什么。

(这个问题也是会被经常问到的)23、说一说异步编程。

24、说一说回调地狱是什么,有什么问题。

异常捕获怎么做。

25、说一说promise。

一个promise有多个then,如果第一个then出错,后面的还会执行吗,如何捕获异常。

如果第一个then出错了,我还想要后面的继续执行,应该怎么做。

26、你在学习js的时候,遇到过哪些js方面的坑、你觉得js哪些知识会难一些。

27、 MVC 具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后怎么通知 Model?28、两个无限长度链表(也就是可能有环)判断有没有交点29、UITableView 的相关优化30、 KVO、Notification、delegate 各自的优缺点,效率还有使用场景31、如何手动通知 KVO32、Objective-C 中的 copy 方法33、 runtime 中,SEL 和 IMP 的区别34、autoreleasepool 的使用场景和原理35、RunLoop 的实现原理和数据结构,什么时候会用到36、block 为什么会有循环引用37、使用 GCD 如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。

38、NSOperation 和 GCD 的区别39、CoreData 的使用,如何处理多线程问题40、如何设计图片缓存?41、有没有自己设计过网络控件?42、怎么判断某个 cell 是否显示在屏幕上43、进程和线程的区别44、TCP 与 UDP 区别45、TCP 流量控制46、数组和链表的区别47、UIView 生命周期48、如果页面 A 跳转到页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?49、block 循环引用问题50、ARC 的本质51、RunLoop 的基本概念,它是怎么休眠的?52、Autoreleasepool 什么时候释放,在什么场景下使用?53、如何找到字符串中第一个不重复的字符54、哈希表如何处理冲突55、你的成绩怎么样?为什么不学习原专业?56、登录状态怎么保持?57、为什么用本地存储,而不用session,session更加简单啊!58、http和https的区别是什么?(http、https、http2这些都是经常被问到的)59、post和get的区别是什么?60、你会的技术有哪些?61、你在学校社团是做什么的,你是做什么的?62、为什么不愿意留在暑期实习的公司?63、为什么要用Alamofire而不用原生的NSURLSession,Alamofire的优势是什么?64、如果让你来封装一个网络库,类似于Alamofire或者SDWebImage,你会如何实现?65、在网络库中,如何针对TableView快速滚动过程中的图片额外渲染进行优化(网络库不能持有TableView)?66、iOS的系统架构是怎么样的?常用SDK有哪些?67、了解HTTP协议吗?GET和POST的区别是什么?68、对安全方面有何了解?如何应对web页面被劫持?了解HTTPS加密解密的过程吗69、vue和react有什么区别?70、angular用过吗?71、说一下同源策略?说一个JSONP?(同源策略和跨域的多种方式还是要很熟练的)72、304和200的区别是什么。

(状态码也是必须要掌握的,包括各种区别)73、你所知道的前端优化有哪些内容?(常考的问题,多多总结就好了)74、linux知道吗?你所知道的linux命令有哪些?75、vue中v-if和v-show的区别是什么?(这个实在是记不住了,但是说明了vue不好就是因为api太多)76、你看过哪些书? (比如计算机的几门专业课、JavaScript高级程序设计、css揭秘、你不知道的JavaScript、深入react技术栈、图解http等等)77、你会的技术包括哪些78、为什么不学习原专业,而是要转行。

79、为什么选择了北京而不是西安。

80、项目问题。

81、一个DOM树,其中有两个节点,找出这两个节点公共的父节点?(视频面试)82、说一下二叉树?83、如果反转二叉树?84、简洁、对于不同的类型,如何做出对比?85、说一下vue和react中的路由实现方式?86、说一下强缓存和协商缓存?(浏览器的缓存机制也需要很清楚)87、跨域?88、说一下设计模式?89、其中的一个项目,你究竟做了哪些优化?90、websocket聊天室如果发送失败了,你怎么解决这个问题?如何做到发送图片?有了文字、图片等不同的数据类型之后,你如何实现数据的存储,如何设计,前端如何获取?91、websocket聊天室有输入框,那么怎么获取的,对于使用div来模仿textarea,我说使用正则去掉div,那么用户输入的也是div呢?如果发送失败了呢?究竟应该是先发送,还是应该先存储到redux中,考虑用户体验(仿照微信)。

92、为什么数据库使用的是mongodb而不是mysql。

93、什么是xss,如何防止xss?94、边边购项目说一下?登录的整个过程是什么?购物车是怎么存储设计的?如果LocalStorage中数据的值超过了范围,你该如何去处理这个问题?如果商品下架了,那么你如何显示这个商品?登录的过程中,一个用户退出登录,另一个用户登录,那么这个购物车是否还是存在的。

说一下边边购项目的多个不同的模块。

95、说一下你说的项目中遇到的问题,然后你是如何解决这个问题的?(这个可以好好准备一下~)96、websocket的使用,底层是如何处理的。

(类似于xhr的。

)、97、websocket在连接的过程中,会有新包。

balabala 一堆听不懂的词,非常尴尬,,,我就直接说的不会。

98、手写代码判断是否是浏览器环境。

99、http和https https的整个过程画一下100、httPS需要多少时间比http慢多少怎么优化101、https有什么缺点102、手写快速排序复杂度最慢是多少为什么取第一个值作为中间值如果这个值是最大的或者最小的怎么办103、http2有哪些特性头部压缩怎么回事104、100层 1个花瓶仍找到n层不碎 n + 1层碎了的情况 2个花瓶呢105、node了解多少全局对象是什么106、事件机制说一下事件绑定说一下手写如何把div中的a放在平级其中的事件会怎么样冒泡会到document还是window107、推荐一下身边厉害的人,你觉得你比他厉害吗。

为什么108、xss怎么防范尖括号应该怎么过滤,一直问确定吗,最后也没说清楚109、用过哪些框架110、移动端如何真机调试111、tap是怎么回事、和click的区别。

112、cookie和session有什么区别113、说一下浏览器缓存问题114、动态规划是怎么回事115、进程和线程的区别是什么116、说一下restful api吧,117、说一说post和get的区别,118、说一下状态码吧119、你觉得什么样的代码是好的代码(这个其实还挺考验实力的)120、说一下position的几个属性吧。

121、typescript你用过吗?122、最后又聊了一下部门的情况。

121、说一下你做过的几个项目吧。

123、框架对比一下124、cookie和session有什么区别,cookie的大小是多少。

125、css3了解多少,说到了渐进增强和优雅降级126、vue接触过多长时间、react接触过多长时间、127、你对互联网公司怎么看,你想要什么样的公司、未来是怎么样的。

128、乐信你了解多少,你对来深圳工作怎么看。

129、你还转载过美团的文章?嗯(很多面试官还是会看博客的,谢谢博客总是好的)130、cookie和localStorage区别,如何把cookie写在一个对象中,其属性就是键值对131、实现水平竖直居中的几中方法(高度和宽度不确定)132、flex是什么133、深拷贝和浅拷贝的区别,手写深拷贝(博客里总结过,遂让手撕)134、Oject的几中方式,如何区分(这个也是常考的)135、兼容性说一说,你做的PC端兼容性是到哪的136、如何看待最近react事件(百度、wordpress弃用事件。

可以多关注前端的一些动态)137、JQuery和三大框架的区别,react和vue的区别138、说一说CSS3中的动画,animation中可以取哪些值(css3动画也很重要)139、flex布局是什么,默认的方向是什么,如何改变方向140、你的博客都是自己写的吗?你所有所学都会写成博客吗?141、说一说原型和原型链,object是最上面的吗?142、vue中的数据双向绑定是如何实现的、143、display有哪些,回答了7 8个,还是不满意144、你的node项目中有几个线程,有几个进程,如果node进程崩溃了,如何知道145、node中的process是什么146、node中如何创建子进程/19讲一讲你遇到的比较困难的事情,问了两个,最后是怎么解决的147、CSS中的单位有哪些分别说一说(提到了ex)148、你未来的发展规划是怎么样的149、跨域,举一个例子,安全性问题到底在哪里150、100万个数据中,找出前10大数据,最快的方法是什么,堆排序怎么写151、登录状态怎么使用cookie保持,最好的方法是什么152、页面中一个video,可能格式不支持,那么前端如何判断并给出提示?153、通过比较img的onerror是一种方法,通过服务器端也可以保存一些属性来标识哪些浏览器支持,哪些不支持154、为什么要用vue和react,而不用JQuery,给你一个项目,什么情况下使用单页面应用,什么情况下使用多页面应用。

相关文档
最新文档