iOS面试题汇总(待整理)

学习网站:https://www.runoob.com iOS:www.cocoachina.com

安卓是Activity 苹果是Controller 大数据学习,大数据的分析以及处理

我们实例化的对象存储在堆区,而指向对象的指针一般存储在栈区

苹果官方的API是私有的不对外开放,可以通过GNU(对外开放的)代码去研究苹果的私有属性以及

方法。

tableView的cell默认宽高 320 44 真正的高度在layoutSubViews可以获取

一、App启动时的性能优化

Main之前的优化

1.二进制重排

Main之后的优化

1.能懒加载的就懒加载

2.发动CPU的性能(多线程初始化)

3.启动阶段尽量不要用Xib、storyboard。Xib、storyboard都是需要进行xml解析,相对纯代码来讲,是比较耗时的。

二、RunLoop的作用

1、运行循环,在程序运行过程中循环做一些事情

基本作用

1、保持程序的持续运行

2、处理App中的各种事情(比如触摸事件、定时器事件等)

3、节省CPU资源,提高程序性能:该做事时做事,该休息时休息

使用举例:当列表中加入定时器时需要用到runLoop,(列表中有倒计时,添加到runloop使线程包活)避免定时器暂停

滑动scrollView时,主线程的RunLoop会切换到UITrackingRunLoopMode这个Mode,执行的也是UITrackingRunLoopMode下的任务(Mode中的item),而timer是添加在NSDefaultRunLoopMode下的,所以timer任务并不会执行,只有当UITrackingRunLoopMode的任务执行完毕,runloop切换到NSDefaultRunLoopMode后,才会继续执行timer。

将Timer放到NSRunLoopCommonModes中执行即可

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; [[NSRunLoop currentRunLoop] run];

三、事件的接受以及传递,响应链条以及传递链条

1.四种条件下UIButton无法处理点击事件 隐藏 点击效果设置为NO 透明图小于0.01 超出父视图区域

在UIView上添加手势 隐藏,设置为NO,透明度小于0.01可以处理事件

2.每个视图的hitTest:withEvent :打印两次log:1、调用时 2、返回值时

hitTest:withEvent:方法寻找合适的视图去响应,并返回响应视图

pointInside:withEvent:判断是否在当前视图的响应点上

3、手势的优先级很高,手势的代理方法,(同时响应的方法)

四、我们在使用对象调用方法时候底层是如何实现的(OC的消息机制以及转发)

objMSgSend方法

五、深浅拷贝

浅拷贝:指针拷贝(复制)内存地址和之前的是一样的,不创建新的对象

深拷贝:对象拷贝(复制) 内存地址和之前的不一样,创建新的对象,引用计数加1

原对象和拷贝对象均为不可变的时候为浅拷贝。

其它均为深拷贝。

六、controller的生命周期

视图没出现的时候加载loadView方法,->viewIdLoad->viewWillAppear->viewDidAppear->viewWillDisappear->viewDidDisappear->delloac方法结束。

七、内存管理 ARC、MRC

MRC;遵循谁创建谁释放,谁引用谁管理。创建一个对象的时候,需要使用retain,copy。释放一个对象的时候使用release或autorelease。

ARC:iOS5.0的时候提出的,当启用ARC的时候系统在适当的位置插入release或autorelease,创建对象的时候,自动插入retain。它是编译时特性,运行时机制。启用weak和 strong关键字,weak修饰的对象释放后,为nil,strong修饰的对象释放后,引用计数为0.

八、多线程的信号量以及栅栏方法

多线程的栅栏方法无法拦截全局并发队列,系统设定的,全局队列只有一条,无法拦截。

多线程使用延迟方法无法执行,可能线程会销毁。

九、tableView滑动掉帧的问题处理。

tableView处理的数据请求方法太多,使用多线程。页面太复杂,使用coreText绘制。

提前计算cell的高度,进行缓存(缓存到Model里面去)。

不要使用storyboard,xib等。

使用YYkit框架。

十、UIView与CALayer的区别

1.UIView能处理屏幕的点击事件,CALayer不能处理屏幕的点击事件

2.CALyer相对于UIView占用更小的系统资源

十一、使用Masonry的时候遇到的问题

1.控件未添加到视图上的时候导致闪退

十二、@class与#import的区别

import循环引用会报错,@class不会报错

import包括类的所有信息,包括实体类和方法 @class只是告诉后面是类的名称,其它暂时不用考虑。

十三、指针

isa:指针 实参 形参 形参置为nil,当前对象没有释放掉,形参置为nil,如果要释放必须强引用。实参置为nil,直接释放。

调用指针属性的时候,不能打点调用,应该使用[]。

地址:https://www.jianshu.com/p/6fca71be7fb0

十四、加密解密

MD5,AES,base64编码解码,对称加密以及非对称加密

十五、数据结构以及算法

冒泡排序,二分查找,使用案例(后台返回的省市区的查找)汉诺塔(排序)

十六、iOS开发中用到哪些锁,同步锁以及信号量

十七、swift与OC的区别

swift是多范式编程,既可以是面向对象的编程,也是函数响应式编程。OC中的很多类,方法都可以在swift中使用。swift中的闭包类似于OC中的block。以及其它语言的匿名函数。语法简单,代码简洁。swift与OC之间可以使用桥接。

十八、KVC的使用

键值编码,取值,赋值。可以给类的属性赋值,setValue: ForKeyPath:(不访问类的情况下)给系统的类的属性赋值,如给UITextView添加placeHolder属性。

setValue:ForKey:

十九、isKindOfClass 与 isMemberOfClass的比较。

isKindOfClass:确定一个对象是这个类的成员或者子类的成员。

isMemberOfClass:只能确定这个类是当前类的成员。

二十、如何切圆角性能最高

使用遮罩性能最高

二十一、iOS音视频

音视频采集,视频滤镜,音视频编码,推流,流媒体服务器处理,拉流,音视频解码,音视频播放。

二十二、flutter

二十三、资源加锁

二十四、id 与instanceType的区别

二十五、atomic与nonatomic的区别

atomic只是给成员变量set和get方法加锁,防止多线程一直读写成员变量,多线程下也是不安全的,使用atomic相对于nonatomic读写速度减缓了20倍。

二十六、KVO不通过改变值实时监听通知

二十七、http与https的区别

https的签名以及防篡改。(举例:提交商品信息的时候比如单价10元黑客篡改为100元)

二十八、iOS如何实现多继承

二十九、iOS universal-link

使用网页链接打开app

三十、iOS开发中相框类似face++取其中的一个区域(中软国际)

三十一、iOS单元测试

三十二、iOS bug 收集使用bugly。

三十二、模块中台化组件化

三十三、block循环引用

block只是弱引用,只能使用一次,第二次使用就释放了,避免提前释放,弱引用一次,再强引用。在整个block区块中能一直使用当前类对象。

三十四、runtime的使用

使用runtime进行方法交换,业务层不要用runtime,底层可以使用。会造成问题。

三十五、工厂模式

三十六、分类与继承的方法

分类:分散类的实现

继承:重写父类的方法,一般使用继承,继承太多,可能会出问题。

一百、对称加密以及非对称加密,算法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家。(题...
    Job_Yang阅读 12,100评论 12 143
  • 整理的一些iOS面试相关问题,持续更新,敬请关注 如果您觉得里面的问题不错,值得在面试准备的时候学习看看,之前看了...
    iOS弗森科阅读 3,628评论 0 16
  • 注:此文章来源:Job_Yang 的简书 1. Object-c的类可以多重继承么?可以实现多个接口么?Categ...
    广益散人阅读 1,341评论 0 13
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    卑微的戏子阅读 619评论 0 1
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    sumrain_cloud阅读 339评论 0 1