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

1、简述push原理,push的证书和其他的有什么不一样?iOS 面试题以及自我理解答案_第1张图片
第 一阶段: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

冒泡算法优化过程

你可能感兴趣的:(iOS面试相关,ios)