当前位置: 首页 > news >正文

iOS 面试题以及自我理解答案

1、简述push原理,push的证书和其他的有什么不一样?请添加图片描述
第 一阶段:BeejiveIM服务器把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务 的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。
iOS push原理浅析

2. viewcontroller的一些方法的说明viewDidLoad, viewWillDisappear, viewWillAppear方法的 顺序和 作用?

viewDidLoad:在视图加载后被调用

viewWillAppear:视图即将可见时调用。默认情况下不执行任何操作

viewDidAppear:视图已完全过渡到屏幕上时调用

viewWillDisappear:视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作

viewDidDisappear:视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作

先执行viewDidLoad再执行viewWillAppear。
3. frame和 bounds的 区别 ,bound的大小改变frame 改变吗?

frame:描述当前视图在其父视图中的位置和大小。

bounds:描述当前视图在其自身坐标系统中的位置和大小。

改变。

4. sqlite中插入特殊字符的方法和接收到处理方法。

除’其他的都是在特殊字符前面加“/”,而 ’ -> ‘’ 。方法:keyWord = keyWord.replace(“/”,“//”);

5。谈谈你对数组和连表认识,还有你是怎么用他们的?
链表和数组的区别

数组需要一块连续的内存空间来存储,对内存要求比较高
链表通过指针,将一组零散的内存块串联起来使用

链表和数组的优缺点

时间复杂度
数组插入删除操作时间复杂度是O(n)
链表插入删除操作时间复杂度是O(1)
随机访问第k个元素
数组:O(1)
链表:O(n)

iOS - 链表、数组区别及常见算法

NSArray 用于对象有序集合(数组),初始化一个数组时,经常使用initWithObject 和 initWithObjects。没有s的表示使用一个指针初始化NSArray,初始化后,这个NSArray的实例只有一个数据,所以在调用没有s的函数的时候是不能以nil结束的;但是有s的就不一样了,哪怕只有一个数据,或者没有数据,必须使用一个nil结束。还有一个NSMutableArray可变对象数组,可以进行删除添加排序等一系列操作。

NSSet 用于对象无序集合,同数组相比,集合是一个无序的;不同元素的集合。数组中的元素可以重复,但是集合不同。

NSDictionary用于键值映射,key-value, key-value, … 一系列键值对。key(键)在整个dictionary是唯一的,通过key可以查询其对应的一个或多个value(值)。

6、冒泡算法

-(void)bubbleSorting2{int count = 0;NSMutableArray *array = [NSMutableArray arrayWithObjects:@3,@2,@9,@1,@6,@7,@4,@5,@8,nil];NSLog(@"排序之前的数组===%@",array);for (int i = 0; i< array.count -1; i++) {BOOL isEnd = NO;//判断是否已排序完成for (int j = 0; j < array.count -1 -i; j++) {count++;if ([array[j] integerValue] >[array[j+1] integerValue] ) {isEnd = YES;[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];}}if (!isEnd) {break;}}NSLog(@"排序后的数组===%@",array);NSLog(@"循环次数%d",count);
}//运行结果
2021-03-04 16:38:08.899639+0800 test[16965:252277] 排序后的数组===(1,2,3,4,5,6,7,8,9
)
2021-03-04 16:38:08.899709+0800 test[16965:252277] 循环次数26

冒泡算法优化过程

http://www.lryc.cn/news/189911.html

相关文章:

  • vue实现自定义滚动条
  • 基于Qt C++的工具箱项目源码,含命令行工具、桌面宠物、文献翻译、文件处理工具、医学图像浏览器、插件市场、设置扩展等工具
  • C# AnimeGANv2 人像动漫化
  • gateway接口参数加解密
  • WorkPlus定制化的局域网会议软件,提供安全稳定的会议体验
  • 干货|小白也能自制电子相册赶紧码住~
  • docker之Harbor私有仓库
  • 服务器上部署python脚本
  • 【excel技巧】如何在Excel表格中添加选项按钮?
  • 前端 vite+vue3——写一个随机抽奖组件
  • 语音芯片基础知识 什么是语音芯 他有什么作用 发展趋势是什么
  • 设计模式01———简单工厂模式 c#
  • 如何解决MidJourney错过付费后被暂停
  • 考研人考研魂——英语单词篇(20231010)
  • java 版 项目管理工程系统,实现项目全周期管理-源码交付
  • TOGAF(企业架构)
  • vue中v-model的原理是什么?v-model作用在组件上的原理是什么?sync修饰符的原理是什么?
  • 新闻api接口,新闻资讯,社交媒体,体育赛事,全国热门带正文新闻查询API接口
  • Redis - php通过ssh方式连接到redis服务器
  • IDEA的使用(四)创建不同类型的工程(IntelliJ IDEA 2022.1.3版本)
  • Mac上brew切换国内源【极简方案】
  • 计算机网络面试常问问题--保研及考研复试
  • elasticsearch 8.5.3问题记录
  • 【Ubuntu虚拟机】
  • 江苏服务器有哪些特点
  • acwing算法基础之基础算法--求逆序对的数目
  • uni-app 实现考勤打卡功能
  • Jenkins发布失败记录
  • 【算法|双指针系列No.6】leetcode LCR 179. 查找总价格为目标值的两个商品
  • python flask接口字段存在性校验函数(http接口字段校验)(返回提示缺少的字段信息)validate_fields()