2022 ios面试题

计算机网络

1.TCP为什么是三次握手 四次挥手

第一次握手:第一次握手是客户端发送同步报文到服务端,这个时候客户端是知道自己具备发送数据的能力的,但是不知道服务端是否有接收和发送数据的能力;

第二次握手:当服务端接收到同步报文后,回复确认同步报文,此时服务端是知道客户端具有发送报文的能力,并且知道自己具有接收和发送数据的能力,但是并不知道客户端是否有接收数据的能力;

第三次握手:当客户端收到服务端的确认报文后,知道服务端具备接收和发送数据的能力,但是此时服务端并不知道自己具有接收的能力,所以还需要发送一个确认报文,告知服务端自己是具有接收能力的。

当整个三次握手结束过后,客户端和服务端都知道自己和对方具备发送和接收数据的能力,随后整个连接建立就完成了,可以进行后续数据的传输了。
第一次挥手客户端发起关闭连接的请求给服务端;

第二次挥手:服务端收到关闭请求的时候可能这个时候数据还没发送完,所以服务端会先回复一个确认报文,表示自己知道客户端想要关闭连接了,但是因为数据还没传输完,所以还需要等待;

第三次挥手:当数据传输完了,服务端会主动发送一个 FIN 报文,告诉客户端,表示数据已经发送完了,服务端这边准备关闭连接了。

第四次挥手:当客户端收到服务端的 FIN 报文过后,会回复一个 ACK 报文,告诉服务端自己知道了,再等待一会就关闭连接。
TCP 协议是面向连接的可靠的传输层协议,它的拥塞控制,失败重传等机制在互联网数据传输中是不可或缺的。

2.TCP如何保证数据包有效

TCP 是通过下面几个特性保证数据传输的可靠性:
序列号和确认应答信号
超时重发控制
连接管理
滑动窗口控制
流量控制
拥塞控制

3.http和https区别

HTTPS协议是什么

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由进行,提供了身份验证与加密通讯方法,现在它被广泛用于网上安全敏感的通讯,例如交易支付方面。

超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和服务器之间互相通信的规则,通过因特网传送文档的数据传送协议。

HTTP协议是什么?

HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。

HTTPS和HTTP的主要区别

https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

https协议需要到ca申请证书,一般免费证书很少,需要交费。http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

4.tcp和udp区别
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html

首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

5.osi 的七层架构以及每层都有哪些协议
https://zhuanlan.zhihu.com/p/32059190

6.你所知道的http请求头和返回码
https://www.51cto.com/article/608197.html

操作系统

1 进程与线程的区别
https://www.liaoxuefeng.com/wiki/1016959663602400/1017627212385376
//www.greatytc.com/p/ecb1a559f816

2.0  进程

在iOS 中 一个进程就是一个正在运行的一个应用程序;  比如 QQ.app  ,而且一个app只能有一个进程 不像安卓支持多个进程。

每一个进度都是独立的,每一个进程均在专门且手保护的内存空间内;

iOS中是一个非常封闭的系统,每一个App(一个进程)都有自己独特的内存和磁盘空间,别的App(进程)是不允许访问的(越狱不在讨论范围);

所以,在iPhone中下载了两种音乐播放器,下载的音乐歌曲却是不能共享的!跟安卓完全不同! 

进程 是系统资源分配和调度的一个独立单位,简单的理解就是用来帮程序占据一定的存储空间等的资源。进程拥有自己独立的位置空间,在没有经过进程本身允许的情况下,其他进程不能访问改进程的地址空间

在 iOS 中  UIApplication  这个 类是 是 进程相关的操作的。比如  进程A(程序A) 调用另外一个进程B(程序B) 。  打开iOS 系统的浏览器等 都是 这个类 来负责。

二者之间的区别:
线程是进程的一部分,它是进程中用来执行任务的单位。一个进程可以拥有多个线程,但最少要有一个主线程;每个线程不能独立执行,必须有一个父进程;线程可以拥有自己的堆、栈、计数器和局部变量,一个进程里的全部线程会共享该进程的资源。线程是独立运行的,一个线程并不知道其它线程的存在,在线程运行过程中随时都有可能被挂起,方便其他线程运行;线程是有优先级的,当然主线程的优先级最高,在我们编程的时候也可以设置线程1执行完毕后才执行线程2。

进程的并发性:处理器每次只执行一个进程,然后在多个进程之间快速切换,依次来达到多个进程在单个处理器上同时执行的效果;

进程的并行性:同一时刻,处理器同时执行多个进程;



多线程与多进程的对比:

1.进程之间不能共享内存,线程可以

同一个进程中的线程共享了改进程的很多资源,包括:进程虚拟空间、进程代码段、进程共有数据等,因此线程之间更容易相互通信,多线程的运行效率远远高于多进程;

2.系统创建进程的时候要为其分配系统资源,而创建线程则只需要很小一部分,因此多线程比多进程来的更加容易;

3.多线程可以充分利用处理器(双核或者多核),但是当线程数量达到上限的时候,性能就不在提升了;

4.多线程的进程中一个线程崩溃了就会导致进程崩溃,如果是主线程崩溃会导致程序崩溃;

但是多进程中子进程崩溃了不会影响到其它进程,程序稳定性更好;

5.多线程需要控制线程之间的同步,而多进程则需要控制和主进程之间的交互;

6.如果两个进程之间要相互传输大量的数据,会相当影响性能,多进程适合小数据量传输,密集运算;

2.cpu执行单位

线程是CPU调度的最小单元;

线程的作用:执行app的代码;

 一个进程(App)至少有一个线程,这个进程叫做主线程;

3.堆和栈的区别
https://blog.csdn.net/k346k346/article/details/80849966
//www.greatytc.com/p/5db3323cf171
4.虚拟地址怎么映射到物理地址

5简述IO多路复用

6.线程有几种状态
https://juejin.cn/post/6844904053130919943

创建(new)------就绪start-----------运行running-----------阻塞sleep----------死亡dead

7死锁的产生条件,如何检查,如何解决

死锁是由于多个线程(进程)在执行过程中,因为争夺资源而造成的互相等待现象,你可以理解为卡主了。产生死锁的必要条件有四个:

*   互斥条件 : 指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
*   请求和保持条件 : 指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
*   不可剥夺条件 : 指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
*   环路等待条件 : 指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。 了解更多:[juejin.cn/post/699469…](https://juejin.cn/post/6994698940843032612 "https://juejin.cn/post/6994698940843032612")

设计模式

1线程安全是如何做到的

2java中IO侠的inputstream用了什么设计模式

3.简述知道的设计模式

4.简述AOP和IOC的作用

  1. socket

swift

1.swift的struct和class的区别

1.
类(class)和结构体(struct),不止在iOS开发中,在其他各种语言开发中都属于老生常谈的问题了,在看class和struct之前,我们先看一下引用类型和结构体的概念。
引用类型:将一个对象赋值给另一个对象时,系统不会对此对象进行拷贝,而会将指向这个对象的指针赋值给另一个对象,当修改其中一个对象的值时,另一个对象的值会随之改变。
值类型:将一个对象赋值给另一个对象时,会对此对象进行拷贝,复制出一份副本给另一个对象,在修改其中一个对象的值时,不影响另外一个对象。

不同点:1.类属于引用类型,结构体属于值类型
2.struct不能继承,class可以继承。
3.类中的每一个成员变量都必须被初始化,否则编译器会报错,而结构体不需要,编译器会自动帮我们生成init函数,给变量赋一个默认值

https://juejin.cn/post/6844903799413276685
2.swift中的方法调用有哪些形式
3.swift和oc有什么区别
4.怎么理解面向协议编程

oc

1 block是如何实现的?block对应的数据结构是什么样的?—block的作用,它对应的数据结构又是什么样的
2,GCd中的block实在堆上还是栈上
3.NSCoding 协议是干什么用的
4.kvo的实现原理
5.NSNotification 是同步还是异步,如果通知发生在子线程,接收在那个线程?
6.NSOperation的哪些特性别者GCD有哪些优势,他有哪些API

UI

事件响应链是如何传递的
什么是异步渲染
layoutsubviews是什么时候调用
一张图片的展示经历了哪些步骤
什么是离屏渲染,什么情况导致的
CoreAnimation这个框架的作用是什么,他跟uikit的关系

引用技术

1arc方案的原理是什么?他是什么时候做的隐式release操作

2循环引用有哪些场景,如何避免
3为什么当我们在使用block时外面要声明weak,还要在block内部强持有一下
4,autoreleasepool(自动释放池)的实现机制是什么?他是什么时候释放内部对象的?他的内部的数据结构是什么样的?当我提到哨兵对象时,会继续问哨兵对象的作用是什么?为什么要这么设计他
5哪些对象会放入autoreleasepool中
6,weak的实现原理是什么?当应用对象销毁他是如何管理内部的hash表的

runtime

1消息发送的流程是怎样的
2关联对象时什么情况会导致内存泄露
3消息转发的流程是什么
4.category(扩展)能否添加属性,为什么?能否添加实例变量,为什么?

解答:类与类别中添加的属性要区分开来,因为类别中只能添加方法,不能添加实例变量。经常会在ios的代码中看到在类别中添加属性,这种情况下,是不会自动生成实例变量的。这里添加的属性,不会自动生成实例变量,这里添加的属性其实是添加的getter与setter方法。
https://blog.csdn.net/shifang07/article/details/100536487
匿名类别(匿名扩展)是可以添加实例变量的,非匿名类别是不能添加实例变量的,只能添加方法,或者属性(其实也是方法)。

5.iOS类别(Category)与扩展(Extension,匿名类别)

//www.greatytc.com/p/0968f9302c80

runloop

1.讲一下runloop的理解
2.可以用runloop实现什么功能

性能优化

1.对tableview进行性能优化有哪些方式
2.xcode的instruments都有哪些调试工具
3.讲一下你做过的性能优化的事情
4,如何检测卡顿,都有哪些方法
5.缩小包体积有哪些方案

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

推荐阅读更多精彩内容