美文网首页面试
面试总结 陆续更新

面试总结 陆续更新

作者: iOS_Alex | 来源:发表于2016-09-01 17:05 被阅读389次

1 Object-C的类可以多重继承么?可以实现多个接口吗?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。
2 #import跟#include又什么区别?@class呢,#import<>跟#import””又什么区别?

import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import””用来包含用户头文件。

4 写一个setter方法用于完成@property(nonatomic, strong)NSString name, 写一个setter方法用于完成@property(nonatomic, copy)NSString name

  • (void) setName:(NSString*) str
    {
    [str retain];
    [name release];
    name = str;
    }
  • (void)setName:(NSString )str
    {
    id t = [str copy];
    [name release];
    name = t;
    }
    5 对于语句NSString
    obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?
    编译时是NSString的类型;运行时是NSData类型的对象
    6 常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?
    object-c的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;NSInteger是基本数据类型,并不是NSNumber的子类,当然也不是NSObject的子类。NSInteger是基本数据类型Int或者Long的别名(NSInteger的定义typedef long NSInteger),它的区别在于,NSInteger会根据系统是32位还是64位来决定是本身是int还是Long。
    7 什么是id类型,id 声明的对象有什么特性?
    Id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;
    8 Objective-C如何对内存管理的,说说你的看法和解决方法?
    Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。
    1). (Garbage Collection)自动内存计数:这种方式和java类似,在你的程序的执行过程中。始终有一个高人在背后准确地帮你收拾垃圾,你不用考虑它什么时候开始工作,怎样工作。你只需要明白,我申请了一段内存空间,当我不再使用从而这段内存成为垃圾的时候,我就彻底的把它忘记掉,反正那个高人会帮我收拾垃圾。遗憾的是,那个高人需要消耗一定的资源,在携带设备里面,资源是紧俏商品所以iPhone不支持这个功能。所以“Garbage Collection”不是本入门指南的范围,对“Garbage Collection”内部机制感兴趣的同学可以参考一些其他的资料,不过说老实话“Garbage Collection”不大适合适初学者研究。

解决: 通过alloc – initial方式创建的, 创建后引用计数+1, 此后每retain一次引用计数+1, 那么在程序中做相应次数的release就好了.

2). (Reference Counted)手动内存计数:就是说,从一段内存被申请之后,就存在一个变量用于保存这段内存被使用的次数,我们暂时把它称为计数器,当计数器变为0的时候,那么就是释放这段内存的时候。比如说,当在程序A里面一段内存被成功申请完成之后,那么这个计数器就从0变成1(我们把这个过程叫做alloc),然后程序B也需要使用这个内存,那么计数器就从1变成了2(我们把这个过程叫做retain)。紧接着程序A不再需要这段内存了,那么程序A就把这个计数器减1(我们把这个过程叫做release);程序B也不再需要这段内存的时候,那么也把计数器减1(这个过程还是release)。当系统(也就是Foundation)发现这个计数器变 成员了0,那么就会调用内存回收程序把这段内存回收(我们把这个过程叫做dealloc)。顺便提一句,如果没有Foundation,那么维护计数器,释放内存等等工作需要你手工来完成。

解决:一般是由类的静态方法创建的, 函数名中不会出现alloc或init字样, 如[NSString string]和[NSArray arrayWithObject:], 创建后引用计数+0, 在函数出栈后释放, 即相当于一个栈上的局部变量. 当然也可以通过retain延长对象的生存期.

3). (NSAutoRealeasePool)内存池:可以通过创建和释放内存池控制内存申请和回收的时机.

解决:是由autorelease加入系统内存池, 内存池是可以嵌套的, 每个内存池都需要有一个创建释放对, 就像main函数中写的一样. 使用也很简单, 比如[[[NSString alloc]initialWithFormat:@”Hey you!”] autorelease], 即将一个NSString对象加入到最内层的系统内存池, 当我们释放这个内存池时, 其中的对象都会被释放

9 原子(atomic)跟非原子性(non-atomic)属性有什么区别?
1). atomic提供多线程安全。是防止在写未完成的时候被另外一个线程读取,造成数据错误
2). non-atomic:在自己管理内存的环境中,解析的访问器保留并自动释放返回的值,如果指定了 nonatomic ,那么访问器只是简单地返回这个值
10 看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢?为什么
SMutableArray* ary = [[NSMutableArray array] retain];
NSString *str = [NSString stringWithFormat:@"test"];
[str retain];
[aryaddObject:str];
NSLog(@”%@%d”,str,[str retainCount]);
[str retain];
[str release];
[str release];
NSLog(@”%@%d”,str,[str retainCount]);
[aryremoveAllObjects];
NSLog(@”%@%d”,str,[str retainCount]);
str的retainCount创建+1,retain+1,加入数组自动+1 3

retain+1,release-1,release-1 2

数组删除所有对象,所有数组内的对象自动-1 1
11 内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
谁申请,谁释放
遵循Cocoa Touch的使用原则;

内存管理主要要避免“过早释放”和“内存泄漏”,对于“过早释放”需要注意@property设置特性时,一定要用对特性关键字,对于“内存泄漏”,一定要申请了要负责释放,要细心。

关键字alloc 或new 生成的对象需要手动释放;

设置正确的property属性,对于retain需要在合适的地方释放,

相关文章

  • 面试总结 陆续更新

    1 Object-C的类可以多重继承么?可以实现多个接口吗?Category是什么?重写一个类的方式用继承好还是分...

  • js面试题总结

    这几天第一批学生都出去面试了,学生也陆陆续续的反馈回来一些面试题。以下是我对这些面试题的总结及分析。这个会一直更新...

  • 面试题

    历年阿里面试题汇总(2017年不断更新中)面试总结Java面试重难点剖析(不断更新)Java方向如何准备BAT技术...

  • Java面试题,陆续更新

    一、Java 面向对象 1. 面向对象都有哪些特性以及你对这些特性的理解 封装:其实本质就是隐藏一切可...

  • Vue 面试题总结及答案

    最近一段时间在总结学习内容,要准备面试,下面有我最近弄得 Vue 面试题及答案,会持续更新Vue 面试题总结

  • 面试官:你来说一下springboot启动时的一个自动装配过程吧

    前言 继续总结吧,没有面试就继续夯实自己的基础,前阵子的在面试过程中遇到的各种问题陆陆续续都会总结出来分享给大家,...

  • 我发现面试官对 Android 这些知识点百问不厌!(已整理)

    开头 为了准备面试复习了Android的一些原理知识,并陆陆续续的总结了一些面试相关的东西,因为太久没写面试之类的...

  • 综述

    最近在申请各种面试,陆陆续续也接到一些面试电话,自己也准备了蛮多。开个帖子总结一下最近的面试经验和面试期间准备的材...

  • 阿里、腾讯各个大厂最受欢迎面试题合集

    (长期更新)此贴用来收集Java相关的面试题集合,以及面试技巧 技术面试题推荐: 天猫面试题(含总结):线程池+并...

  • 阿里腾讯头条美团等iOS面试总结

    阿里iOS面试总结 头条iOS面试总结 腾讯iOS面试总结 百度iOS面试总结 美团iOS面试总结

网友评论

    本文标题:面试总结 陆续更新

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