美文网首页
2021iOS面试题总结day5

2021iOS面试题总结day5

作者: anny_4243 | 来源:发表于2021-03-15 00:38 被阅读0次

准备:
1.TCP、UDP的区别
TCP:面向连接、可靠、发送数据之前需要先建立连接(安全)(一对一)
UDP:面向数据报、不可靠、发送数据之前不需要建立连接(速度快)(一对一、一对多、多对一、多对多)
2.TCP如何实现有效传输
3.TCP三次握手、四次挥手

所谓的四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。

4.线程和进程的区别,为什么要有线程,线程拥有什么独立的资源,多线程如何安全的访问进程中的资源,讲一下各种锁
进程是操作系统资源分配的最小单位,线程是CPU调度的基本单位,
多线程防止主线程堵塞、提高运行效率
同一块资源,被多个线程同时读写操作时,任然能够得到正确的结果,称之为线程是安全的。

解决方案:使用线程同步技术(同步,就是协同步调,按预定的先后次序进行)
常见的线程同步技术是:加锁

什么是锁:
一种同步机制,在存在于多线程的环境中实施的对资源的限制访问,排除并发的策略。

iOS中的锁:递归锁、条件锁、分布式锁、一般锁、互斥锁(休眠状态)、自旋锁(死循环)
常用的:
@synchronized关键字加锁
NSLock对象锁
NSConditionLock条件锁
NSRecursiveLock递归锁
pthread_mutex互斥锁(c语言)

5.数组和链表的区别
6.http2.0的原理,https的原理(加密的解释),https和http的区别,为什么要使用https

虽然 HTTP1.1 默认是开启 Keep-Alive 长连接的,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点

针对同一域名,在请求较多的情况下,HTTP1.1 会开辟多个连接,据说浏览器一般是6-8 个,较多连接也会导致延迟增大,资源消耗等问题

HTTP1.1 不安全,可能存在被篡改、被窃听、被伪装等问题。当然,前阵子 Apple 推广 HTTPS 的时候,相信很多人已经接入 HTTPS

HTTP 的头部没有压缩,header 的大小也是传输的负担,带来更多的流量消耗和传输延迟。并且很多 header 是相同的,重复传输是没有必要的。

服务端无法主动推送资源到客户端

HTTP1.1的格式是文本格式,基于文本做一些扩展、优化相对比较困难,但是文本格式易于阅读和调试,但HTTPS之后,也变成二进制格式了,这个优势也不复存在

在 HTTP2.0中,上面的问题几乎都不存在了。HTTP2.0 的设计来源于 Google 的 SPDY 协议。

http:无连接、无状态

HTTP1.0使用非持久连接。HTTP1.1 默认使用持久连接<keep-alive>

http2.0:

https和http的区别:
https是http的安全版,在http的基础上加入SSL层(安全套接字),对数据传输进行加密和身份验证。

https的原理:
1.服务器用非对称加密(RSA)生产公钥和私钥
2.服务器把私钥发给客户端,自己保留公钥
3.客户端用公钥生成密钥,密钥是将来服务器端和客户端通信的钥匙
4.客户端用公钥加密密钥,发给服务器
5.服务器拿到密钥以后用私钥解密密钥,这样两端都获得了通信的密钥

7.volatile表示变量随时可以改变
8.网络7层模型各层功能和协议、TCP/IP四层
9.线程中的通信方式
答:一个线程传递数据给另一个线程,在一个线程中执行完特定的任务后,转到另一个线程继续执行任务。
10.内存泄漏的处理方式
11.斐波那契额数列
12.快排
13.中序遍历一个二叉树
14.并发和并行分别是什么意思,多线程是并发还是并行?

并发性(Concurrence):指两个或两个以上的事件或活动在同一时间间隔内发生。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
  并行性(parallelism)指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。
  区别:一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务。
  前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生。
  两者的联系:并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的。并行性是并发性的特例,而并发性是并行性的扩展。

多线程是并发

15.反转链表
16.iOS9-13,每个版本讲一个特性
17.夜间模式怎么实现,除了通知还有什么更优雅的方式?
18.SDWebImage原理,不用SDWebImage如何实现类似逻辑?
SDWebImage加载图片的过程大致如下:

1.从内存(字典)中找图片(当这个图片在本次使用程序的过程中已经被加载过),找到直接使用。
2.从沙盒中找(当这个图片在之前使用程序的过程中被加载过),找到使用,缓存到内存中。
3.从网络上获取,使用,缓存到内存,缓存到沙盒。

19.每个tableviewcell都有一个UIImageView要加载,如果没有缓存,五个cell请求一个url,同时发请求不实际,如何处理?
20.微信TableView滑动的时候,动图是不动的,为什么?(Runloop的Mode决定的)
21.WebSocket
22.不用递归打印一个UIView的所有subviews?
23.设计一个图片缓存系统
24.http是应用层协议
25.http常见返回码

答:状态码由3位数字组成,第一位标识响应的类型,常用的5大类状态码如下:
1xx:表示服务器已接收了客户端的请求,客户端可以继续发送请求
2xx:表示服务器已成功接收到请求并进行处理
3xx:表示服务器要求客户端重定向
4xx:表示客户端的请求有非法内容
5xx:标识服务器未能正常处理客户端的请求而出现意外错误

26.http除了get、post还有哪些?
27.https能防止中间人攻击吗?
28.https怎么抓包?
29.不使用gcd如何保证线程安全?
30.如何实现多个任务实现后再统一处理?
31.iOS有哪些多线程方式?
pthread(C语言、开发者管理线程生命周期)、NSThread(OC、面向对象、开发者管理线程生命周期)、GCD(C语言、自动管理线程的生命周期)、NSOperation(基于GCD,面向对象、OC、自动管理线程的生命周期)
更倾向于GCD
32.同步异步的区别
33.串行队列和并行队列的区别
34.队列和线程的关系
35.死锁是怎么产生的?
主队列同步
解决办法:同步换成异步
主队列换成其他串行或并行队列
36.https用的是对称加密还是非对称加密,什么是对称加密、非对称加密
37.TCP挥手,第三次不挥手会怎样?
38.单例模式,其他设计模式简介

单例:一个类只被实例化一次,一个类只有一个对象

委托、观察者、MVC
39.DNS
40.在堆中找指定的一个元素的复杂度是多少?
41.MVC、MVP、MVVM应用和彼此本质区别?
42.TCP核心机制(滑动窗口、快速重传、拥塞控制)
43.HTTP请求格式
44.get、post区别
get:提交数据不安全、客户端地址栏可见、提交数据大小有限
post:提交数据安全、数据置于消息主体内、客户端不可见、提交数据大小没有限制
45.若建立时间较长,http怎么优化?
46.Block:可以获取其他函数局部变量的匿名函数

这一天上午面试的是一家做外包的小公司,面试我的人没有问我技术问题。来这家之前看了公司的介绍是一家做传媒的公司,比较感兴趣,所以决定来看看。来了之后一问竟然是做外包的公司,公司里不到10个人。公司位置比较偏远,早起赶了两个小时的路程才到,结果面试10分钟左右就结束了。对方问我离职原因,我实话实说公司快黄了开不出工资,为什么从北京来到上海,我说觉得上海比北京环境好一些,问我在上海有亲戚吗,我说有远房亲戚。好像几乎每个公司都会问我为什么从北京来到上海,我说的都是实话,结果还被怀疑,为什么一定要有亲戚才能换城市,我来上海找工作根本不是因为有亲戚,当初去北京也没有认识的人,自己一个人拿着行李箱就去了,在哪里都是漂,我为什么不选一个环境好一点的城市漂,这有什么错吗?看来我以后不得不说有亲戚了,招聘者更喜欢得到一个他们满意的答案,而不是真实的答案。然后问我会不会跨平台开发,我说我做的是原生开发,还问我会不会做直播,我确实没做过就说没做过,但是可以做研究一下就可以。看来招聘之前他们根本没有好好看我的简历,既然他们想招做跨平台开发直播软件的人为什么不直接找对应的人,还把我叫过去面试。

同时这次面试也给了我一个教训,答应面试之前一定要先问好这家公司是做什么的,有很多外包公司打着其他公司的名头在招聘。然后最好问一下他们招的是不是自己的岗位,很多公司连简历都不仔细看就把你招过去面试,而且招聘要求写的也和实际情况不一样,所以应该事先都问清楚,以免浪费自己的面试机会。

这一天下午本来约好了字节跳动的视频面试,是boss直聘上的人帮我内推的。邮箱里给了面试的视频链接,让提前10分钟进入,结果我进入提示我的麦克风检测不通过。之前特意试了在微信上视频聊天麦克风说话没有问题。我换了一个浏览器打开链接还是不行,后来面试官来了,让我重启电脑试试,结果重启了还是不行。没有办法我只好放弃了这次面试。后来我又调试了一会,发现是因为需要选择一下声音输入设备,可能是因为我之前接过其他的声音输入设备,改变了默认值。可是等我调好以后面试官已经开始面试另一个人了,我只能放弃了。

为了这次面试我还把之前收到的offer拖了一天,最后却是这个结果。既然已经这样了我就马上联系了之前那家公司,说我可以入职了,什么时候能入职?然后那家公司的hr和我说公司的录用需要走审批流程,需要一到三个工作日。但是之前和我给我打电话的时候从来都没有提到过有审批流程的事,如果事先知道的话我也不会把后面的面试都停掉。我就问hr能不能给我一个确定的答复,我都把后面的面试给推掉了。hr回复我说领导在开会晚点给我答复。我等到了晚上8点也没回复我,于是我又问了一遍,hr和我说领导今天一直在开会没有答复,明天给我一个确定答复,我说好那明天联系吧。

相关文章

  • 2021iOS面试题总结day5

    准备:1.TCP、UDP的区别TCP:面向连接、可靠、发送数据之前需要先建立连接(安全)(一对一)UDP:面向数据...

  • 2021iOS面试题

    iOS开发组件化; 说下对runloop的理解; 项目中遇到的难点; 事件的响应链机制; 消息的传递及消息的转发机...

  • 2021iOS面试题总结day8

    准备:1.UIView和CALayer的坐标系有什么区别?CALayer的坐标系统比UIView多了一个ancho...

  • 2021iOS面试题总结day2

    准备:1.iOS的数据持久化方案所有的本地持久化数据存储的本质都是写文件,而且只能存到沙盒中。沙盒机制是苹果的一项...

  • 2021iOS面试题总结day7

    准备:1.常用的设计模式2.用过哪些开源框架3.多线程4.instruments5.runtime6.TCP/IP...

  • 2021iOS面试题总结day3

    准备:1.iOSUI渲染机制 On-Screen Rendering:意为在屏渲染(当前屏幕渲染),指的是GPU的...

  • 2021iOS面试题总结day4

    准备:1.weex Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验,来构建 Android...

  • 2021iOS面试题总结day1

    今天刚刚开始面试,接下来这几天把遇到的面试题总结如下: 1.内存管理在实际开发中的应用(必考,已经被问两次了) 答...

  • Java面试题汇总

    Java面试题总结 Java面试题总结一Java面试题总结二

  • iOS经典面试题总结--内存管理

    iOS经典面试题总结--内存管理 iOS经典面试题总结--内存管理

网友评论

      本文标题:2021iOS面试题总结day5

      本文链接:https://www.haomeiwen.com/subject/kodhcltx.html