iOS面试题有哪些?

2024-05-13 22:30

1. iOS面试题有哪些?

iOS面试题主要有:
1、多线程、特别是NSOperation 和 GCD 的内部原理。
2、运行时机制的原理和运用场景。
3、SDWebImage的原理。实现机制。如何解决TableView卡的问题。
4、block和代理的通知的区别。block的用法需要注意些什么。
5、strong,weak,retain,assign,copy nomatic 等的区别。
6、设计模式,mvc,单利,工厂,代理等的应用场景。
7、单利的写法。在单利中创建数组应该注意些什么。
8、NSString 的时候用copy和strong的区别。
9、响应值链。
10、NSTimer 在子线程中应该手动创建NSRunLoop ,否则不能循环执行。
11、UIScrollView和NSTimer组合做循环广告图轮播的时候有一个属性可以控制当上下滚动tableview的时候广告轮播图依然正常滚动。
12、Xcode最新的自动布局。
13、git ,和svn的用法,git的几个命令。
14、友盟报错可以查到具体某一行的错误,原理是什么。
15、Instrument  可以检测 电池的耗电量、和内存的消耗。的用法。
16、动画CABaseAnimation CAKeyAni….  CATrans…..  CAGoup….    。
17、ARC的原理。

iOS面试题有哪些?

2. 史下最全的iOS面试题及答案怎么解决

iOS面试题主要有:
1、多线程、特别是NSOperation 和 GCD 的内部原理。
2、运行时机制的原理和运用场景。
3、SDWebImage的原理。实现机制。如何解决TableView卡的问题。
4、block和代理的通知的区别。block的用法需要注意些什么。
5、strong,weak,retain,assign,copy nomatic 等的区别。
6、设计模式,mvc,单利,工厂,代理等的应用场景。
7、单利的写法。在单利中创建数组应该注意些什么。
8、NSString 的时候用copy和strong的区别。
9、响应值链。
10、NSTimer 在子线程中应该手动创建NSRunLoop ,否则不能循环执行。
11、UIScrollView和NSTimer组合做循环广告图轮播的时候有一个属性可以控制当上下滚动tableview的时候广告轮播图依然正常滚动。
12、Xcode最新的自动布局。
13、git ,和svn的用法,git的几个命令。
14、友盟报错可以查到具体某一行的错误,原理是什么。
15、Instrument 可以检测 电池的耗电量、和内存的消耗。的用法。
16、动画CABaseAnimation CAKeyAni…. CATrans….. CAGoup…. 。
17、ARC的原理。望采

3. iOS面试题有哪些

iOS 面试题		 
1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
答:不可以,可以实现多个接口;category是分类,,一般情况下分类好,用category重写只会影响到分类本身,不影响其他类和原有类的关系。
2.#import 跟#include 又什么区别 #import> 跟 #import""又什么区别?
答:#import 是oc导入头文件的关键字,#include是c/c++导入头文件的关键字,#import会自动导入一次,不会重复导入,不会引起交叉编译,@class告诉编译器某个类的声明,当执行是才去查看类的执行文件,当两个类文件有循环依赖关系(A引用B,B引用A)时,需要用@class,
在interface中引用一个类,就用@class,它会把这个类作为一个类型来使用,而在实现这个interface的文件中,如果需要引用这个类的实体变量或者方法之类的,还是需要import这个在@class中声明的类。
#import>引用系统文件,它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件.
 #import"":用户自定义的文件用双引号引用,编译器首先会在用户目录下查找,然后到安装目录中查
2.1重复引用(
ClassA 与 ClassB同时引用了ClassC,不做重复引用处理的时候在ClassD中同时引用ClassA,ClassB编译会提示对ClassC重复引用的错误.
#import解决了这个问题
)
3.类变量的@protected ,@private,@public,@package声明各有什么含义?
答:变量的作用域不同,@protected  该类和所有子类中 的方法可以直接访问这样的变量,这是默认的,
      @private 该类中的方法可以访问这样的变量,子类不可以。
@public除了自己和子类方法外,也可以被其他类或者其他模块中的方法访问
@package 
4.id 声明的对象有什么特性?
答:
Id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象
5.MVC是什么?有什么特性?为什么在iPhone上被广泛运用?
答:是一种设计模式,将代码按照视图,模型控制器的结构来设计
6.对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别时什么类型的对象?
答:nsstring,nsdata
7.什么是安全释放?
答:[_instance release],_instance = nil;
8.为什么有些4.0独有的objective-c 函数在3.1上运行时会报错.而4.0独有的类在3.1上分配内存时不会报错?分配的结果是什么?
 运行时因为 3.1的sdk 里没有对应的函数实现.所以会找不到对应的 @selector 指针. 错误.
而分配内存.应该是涉及到类的创建的机制上
9.为什么4.0独有的c函数在3.1的机器上运行不会报错(在没有调用的情况下?)而4.0独有的类名在3.1的机器上一运行就报错?
10.异常exception 怎么捕获?不同的CPU结构上开销怎样?C中又什么类似的方法?
11.property中属性retain,copy,assgin的含义分别是什么?有什么区别?将其转换成get/set方法怎么做?有什么注意事项?
- (void)setInstance:(id)instance{
    if (_instance != instance) {
        [_instance release];
        _instance = [instance retain];
    }
}


copy

 
复制代码
- (void)setInstance:(id)instance{
    if (_instance != instance) {
        [_instance release];
        _instance = [instance copy];
    }
}
   



assgin

 
 
复制代码
- (void)setInstance:(id)instance{
    if (_instance != instance) {
        _instance = instance;
    }
}
   

12.委托是什么?委托的property声明用什么属性?为什么?
delegate assgin
13.浅拷贝和深拷贝区别是什么?
答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。
 深层复制:复制引用对象本身。
14.Cocoa中与虚基类的概念么?怎么简洁的实现?
没有 delegate
15.自动释放池跟GC有什么区别?iPhone上有GC么?[pool release] 和[pool drain]有什么区别?
没有GC
16.
?
1
2
3
4
5
6
7
   
for(int index = 0; index < 20; index ++){
    NSString *tempStr = @”tempStr”;
    NSLog(tempStr);
    NSNumber *tempNumber = [NSNumber numberWithInt:2];
    NSLog(tempNumber);
}

   

这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?
17.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
答:谁申请谁释放。
18.在一个对象释放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove这个对象可能会出现什么问题?
19.怎样实现一个 singleton的类.给出思路。
20.什么是序列化或者Acrchiving,可以用来做什么,怎样与copy结合,原理是什么?.
21.线程是什么? 有哪些注意事项.?
22.在iphone上有两件事情要做,请问是在一个线程里按顺序做效率高还是两个线程里做效率高?为什么?
23.runloop是什么?在主线程中的某个函数里调用了异步函数,怎么样block当前线程,且还能响应当前线程的timer事件,touch事件等.
24.ios平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?
25.阐述一个nil对象从interface bulider产生,到载入程序运行空间,最后被释放时所经历的生命周期.
26.notification是同步还是异步? kvo是同步还是异步?notification是全进程空间的通知吗?kvo呢?
27.kvc是什么?kvo是什么?有什么特性?
28.响应者链是什么?
29.unix上进程怎么通信?
30.timer的间隔周期准吗?为什么?怎样实现一个精准的timer?
31.UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?
32如果要开发一个类似eclipse的软件,支持插件结构。且开放给第三方开发。你会怎样去设计它?(大概思路)
33.Objective-C如何对内存管理的,说说你的看法和解决方法?
Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。
34. Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:
35.What are KVO and KVC?
答案:kvc:键 - 值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,直接或通过实例变量访问的机制。
很多情况下可以简化程序代码。
kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码。
具体用看到嗯哼用到过的一个地方是对于按钮点击变化状态的的监控。
比如我自定义的一个button

[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:
36.Difference between method and selector?
方法和选择器有何不同?
答案:selector是一个方法的名字,method是一个组合体,包含了名字和实现.

iOS面试题有哪些

4. iOS:面试一般问哪些

目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡。矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力!

OC的理解与特性

OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定、动态加载等)。总体来讲,OC确实是一门不错的编程语言,

Objective-C具有相当多的动态特性,表现为三方面:动态类型(Dynamic typing)、动态绑定(Dynamic binding)和动态加载(Dynamic loading)。动态——必须到运行时(run time)才会做的一些事情。

动态类型:即运行时再决定对象的类型,这种动态特性在日常的应用中非常常见,简单来说就是id类型。事实上,由于静态类型的固定性和可预知性,从而使用的更加广泛。静态类型是强类型,而动态类型属于弱类型,运行时决定接受者。

动态绑定:基于动态类型,在某个实例对象被确定后,其类型便被确定了,该对象对应的属性和响应消息也被完全确定。

动态加载:根据需求加载所需要的资源,最基本就是不同机型的适配,例如,在Retina设备上加载@2x的图片,而在老一些的普通苹设备上加载原图,让程序在运行时添加代码模块以及其他资源,用户可根据需要加载一些可执行代码和资源,而不是在启动时就加载所有组件,可执行代码可以含有和程序运行时整合的新类。

5. ios 面试技巧

时间掌控:
在面试过程中自我介绍一般在3~5分钟,不能超过10分钟。另外,时间分配上也要把握好。如果5分钟做自我介绍,那么1分钟就要做完自然情况介绍;列举最近三到五年工作介绍要占到3分钟;其余1分钟要搞定。
内容想好:
1.想想之前干过什么。简单介绍自己曾经做过的事情,比如工作单位、工作地点、工作岗位、担任职务、工作内容等,一般要对最近几年做过的事情要详细来说。要把握核心。
2.自己做成过那些事情。介绍清楚自己在不同阶段做成的事情,注意两点:一是与应聘岗位需要的能力相关的业绩多介绍,不相关的要少说;二要注意你个人的业绩要多介绍,而不是团队业绩,要重点呈现自己最精彩的一两段业绩,因为用人单位要招聘的是你,而不是你过去的团队。
3自己擅长什么。介绍自己最擅长的方面要与应聘的岗位密切相关,主要是围绕专业特长来介绍。除专业特长以外,个别很突出的特长也可以介绍,但不要说太多。

ios 面试技巧

6. ios面试需要注意什么

1.仪态得当
正所谓,人靠衣装。衣着是否整洁得体,发型是否利落,精神面貌是否神采奕奕,决定了面试官对求职的第一印象。为了让面试官第一眼就对你充满好感,你需要在穿着上注重细节,一套得体的服装,干净利落的气质,能大大提高你面试成功的几率。
2.保持自信
谈谈自己,一般是iOS面试的“前菜”,对于求职者来说,这是一个证明自己有多优秀的机会。如果你准备了一大堆溢美之词来包装自己,不妨根据企业的用人标准,挑选最能代表自己能力、最能说明自己经验和优点的具体事迹来说。在回答问题过程中,保持谦虚但不可过分谦卑,尤其是对于技术问题更要备足信心。没有公司愿意雇佣对自己技术都信心不足的员工。
3.切忌说话不经大脑,背诵解决方案
在面试过程中,你需要展现你的应变能力,但并非是不经大脑地脱口而出。做iOS需要严谨的思维,在回答问题之前最好理一下自己的思路,快但却没条理的回答只会暴露你缺乏思考能力、粗心的缺点。如果你事先做的功课正好是面试官提出的问题,切忌一味背诵答案,结合你自己的实际经验来侃侃而谈,一定会赢得面试官的好感。
4.不要写上你不清楚的技术
面试之前,你需要好好回顾一下自己做过的项目,展现自己在团队中的重要作用,都会为你实现高薪大大加分。尽可能更全面地展现出你在iOS编程上的技能,让面试官对你的能力有更全面的了解,但切勿在简历中写上自己并不清楚的技术。在技术更新极快的当下,编程过程中总会遇到一些自己不清楚的问题,而面试官更看重的是你的态度。写上你并不熟悉的技术,问题稍微深入一些你就容易露馅。假如你是诚信而勇于挑战的话,面试官一定会对你青睐有加。

7. 当了半年多的面试官,iOS真的没人要了吗?原因就在这里!

  上篇文章: 这下,“感觉” 全世界都在劝退学iOS的程序员  
   最近有个特别流行的词—— 内卷 ,其实iOS的内卷不是一天两天了。
   作为第一批90后,有幸亲历了iOS从盛而"衰"的全历程。还记得14年找工作时可以一周约10个面试,到了16年的时候开始出现了"iOS开发没人要了"这样不和谐但是却很现实的声音。等到我17年跳槽时,找同学或朋友内推了北京大多数知名公司,结果收到的面试通知寥寥无几。得亏在面试之前做了大量的准备工作,才能在零星的几个面试中获得一份还算满意的offer。其实iOS的拼杀一直非常激烈,如果不会学习不会思考,那么可能在将来甚至过去的某个时候就已经被行业淘汰。现在大多数面试官对候选人的要求已经从"熟练"->"独当一面"逐渐过渡到了"精通"的要求。请原谅我用了"精通"这个饱含深意却又血淋淋的词汇。2020年突如其来的疫情给本就加剧的内卷化添加了几分催化剂,今年上半年的面试中不少候选人是由于疫情原因而被迫加入到求职的大军中。——烈烈寒风起,惨惨飞云浮。
   iOS的需求依旧有相当量的需求,否则我也不会从2月面到10月。只是iOS的需求发生了变化,不再仅仅要求候选人能熟练的使用各种API,或者熟悉某些三方库。而是希望候选人能具备解决问题的能力。技术强弱不单单是取决于信息量的多少,更重要的是掌握解决问题的方法论。
   现在程序员找工作必经的两个阶段就是刷题和看面经。候选人不刷几道算法,不回顾几个经典问题,面试总觉得没底。面试官不问几道算法,不问几个刁钻的问题觉得自己不专业。正是由于面试官和候选人的"默契配合",导致了现在面试越来越像考试,而这种应试化的评判标准是很值得人们怀疑和反思的。
    任何行业的任何岗位,技术过硬的都非常吃香。因为这样的人才不多,物以稀为贵。 
   其实候选人上家公司就是最好的面试官。人的性格、学习习惯、解决问题的能力一般不会随着环境的变化而产生过多的差异。如果候选人曾经解决过一些问题,并且在解决问题过程中有过思考和行动,那么我相信候选人在入职之后依旧会进行思考与探索,将来可能在某一方向上成为支柱。遇到这样的候选人,我一般会极力推荐进入下一轮面试。如果没有相关体现,那么可以看看候选人会哪些技术内容,会到什么程度。相对来说,不太友好的面试是,面试官只问自己擅长领域的一些问题。为了避免出现这样的情况,所以我在面试快结束时有时向候选人了解下,是否有哪些内容是他/她擅长的但是我又没有问到的。每个认真的候选人都值得被真诚对待。但是自古真诚总是被辜负,多情总被无情伤。绝大多数候选人的回答都是"没有了"。
   面了这么多候选人,大致可以归为几类:
   1、能带节奏的,让面试官跟着你走的   2、思路能跟面试官对应上的   3、需要提示和引导的   4、不知道的   5、"不就是xxxx就可以了吗" "能细化下方案吗?" "....(沉思后放弃)"
   我遇到的候选人大多数2和4之间。如果我面试的话,有遗忘的内容和有知识盲区是能被理解的,但是如果面试没有通过,那么大概率是简历上的内容回答的不是很好。
   说这么多,并不是想给大家制造焦虑,而是想告诉大家:坚持一个目标走下去是辛苦的,但是你的付出不会白费。
    希望真心能够帮助到大家提升技术!你要先自思考,看个人那些方面还不足! 

当了半年多的面试官,iOS真的没人要了吗?原因就在这里!

8. iOS面试技术难点有哪些

iOS面试|project|IOS面试课程资料 在线免费观看
链接:https://pan.baidu.com/s/1gzdP5iVcyI5KMlAFql6QVQ
提取码:m94s
iOS面试|project|IOS面试课程资料|目录.txt|第9章 RunLoop相关面试问题(录).mp4|第8章 多线程相关面试问题(录).mp4|第7章 Block相关面试问题(录).mp4|第6章 内存管理相关面试问题(录).mp4|第5章 Runtime相关面试问题(录).mp4|第4章 Objective-C语言特性相关面试问题(录).mp4|第3章 UI视图相关面试问题(录).mp4|第1章 导学(录).mp4|第15章 课程总结(录).mp4|第14章 第三方库相关面试问题(录).mp4|第13章 算法相关面试问题(录).mp4