• 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    冒泡算法优化过程

  • 相关阅读:
    基于Qt QTreeView|QTreeWidget控件使用简单版
    webp批量转换为png、jpg工具
    17. Python 逻辑运算
    Java变量
    序列的第k个数(快速幂的应用C++)
    excel自动翻译-excel一键自动翻译免费
    外汇交易新手福利:入门必看,快速提升交易技能
    硬链接和软链接的区别
    【WiFI问题自助】解决WiFi能连上但是没有网的问题
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园服装租赁系统864e2
  • 原文地址:https://blog.csdn.net/baidu_30087715/article/details/133703588