一些问题

1.以下情况的打印结果

    NSArray *arr = [NSString stringWithFormat:@"abc"];
    NSLog(@"%@", arr);
    NSString *str = arr;
    NSLog(@"%@",str);
2016-08-26 10:23:45.364 SomeThing[45895:1817616] abc
2016-08-26 10:23:45.365 SomeThing[45895:1817616] abc

2.OC是强类型还是弱类型语言?

强类型:为所有变量指定数据类型称为“强类型”。
强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。
强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。Java、C# 、Apex和 Python 等都是强类型语言。

3.写一个冒泡排序,时间复杂度

- (void)bubSort:(NSMutableArray *)arr{
    for (int i = 0; i < arr.count; i++) {
        for (int j = 0; j < arr.count - i - 1; j++) {
            if ([arr[j+1] integerValue] < [arr[j] integerValue]) {
                NSInteger temp = [arr[j+1] integerValue];
                arr[j+1] = arr[j];
                arr[j] = [NSNumber numberWithInteger:temp];
            }
        }
    }   
}

时间复杂度为log(n^2)

4.写一个折半查找,时间复杂度

- (NSInteger)binSearch:(NSArray *)arr number:(NSInteger)num{
    
    NSInteger low = 0;
    NSInteger high = arr.count - 1;
    
    while (low <= high) {
        NSInteger mid = (low + high)/2;
        
        if (num < [arr[mid] integerValue]) {
            high = mid - 1;
        }else if (num >= [arr[mid] integerValue]){
            low = mid + 1;
        }else{
            return mid;
        }
    }
    
    return -1;
}

时间复杂度为O(n^2)

5.分类和继承的区别
分类:可以扩展类方法,不能定义新成员,可以访问私有成员
继承:可以通过覆盖和定义新方法扩展父类,可以新增成员,但是不能访问父类私有成员

分类会覆盖原同名方法,将不同的方法写入不同的文件中,更适合团队开发,而且分类更小巧灵活

6.iOS沙盒的目录结构
Documents iTunes:会同步该目录,适合存放重要数据
Library/Caches: iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。
Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。
tmp: iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。

7.get和post的区别

  • GET使用URL或Cookie传参。而POST将数据放在BODY中。
  • GET的URL会有长度上的限制,则POST的数据则可以非常大。
  • POST比GET安全,因为数据在地址栏上不可见

8.如何开启一个常驻线程

9.深拷贝和浅拷贝

  • 深拷贝:对象拷贝
  • 浅拷贝:地址拷贝
  • 在非集合类对象中:对****immutable****对象进行****copy****操作,是指针复制,****mutableCopy****操作时内容复制;对****mutable****对象进行****copy****和****mutableCopy****都是内容复制。

你可能感兴趣的:(一些问题)