IOS面试题--1

来源:互联网 发布:单词翻译软件 编辑:程序博客网 时间:2024/04/27 19:48

1、        简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwritereadonlyassignretaincopynonatomicatomicstrongweak属性的作用?

 

Release -----,alloc 开辟空间 deaclloc销毁空间 .手动调用dealloc的时候会强制将引用计数置为0

 

readwrite,可读可写,让系统生成settergetter   readonly,只可读,只生成getter

 

assign引用计数不会+1,适用于基本数据类型.常用于指向储存于静态区的变量以及delegate,直接赋值

 

retain引用计数+1,获得对象的所有权

 

copy 复制一个对象,并且储存在不同的内存区.原对象的引用计数不变.遵循NSCoping协议的可以深拷贝

 

Nonatomic非原子性的,不保证多线程下保护安全 atomic原子性,保证多线程下安全.有一个属性需要多个线程同时访问一个变量,使用atomic能够自动加锁解锁.

 

Strong,用于ARC模式下,表明对象属于强引用.类似于retain,但是比retain更加安全,只要对象存在拥有者,就可以引用,不会被释放.只要对象失去了拥有者,立即被抛弃.不必再将已经指向已经释放的对象的指针指向空.避免了野指针.

 

Weak类似assign,弱引用.应用计数不会增加.释放指针自动置为nil;

 

 

 

2、        类变量的@protected,@private,@public,@package,声明各有什么含义?

通过->的方式访问成员变量

@protected受保护的.该类和所有子类中的方法可以直接访问这样的变量。

@private 变量是私有的,该类的方法可以直接访问变量。

@public 所有类都可以访问

@package 表示框架内访问,外部无法访问

 

 

3、        线程是什么?进程是什么?二者有什么区别和联系?

线程,是进程的一个具体实例.程序运行的最小单位,是被系统独立调度和CPU的基本运行单元.

进程是操作系统中可以并行工作的基本单元,

一个应用程序有一个进程,一个进程中至少有一个线程.

 

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程

 

 

4、        谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?

在一个进程中有多个线程共同存在,每个线程执行各自的任务,相互之间不会干扰,一个线程可以创建或者撤销其他的线程.让一个进程可以同时执行很多任务.这就减少了等待时间,提高了进程的运行效率.但是多线程会耗费资源,并且由于一个线程死掉会造成整个进程死掉.多线程也容易造成安全性问题.

 

Thread

 

使用GCD

 

使用NSOperationQueue

 

POSX

 

异步方法

 

5、        线程同步和异步的区别?IOS中如何实现多线程的同步?

线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 ,串行执行任务  线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制,并行执行任务

 

使用GCD的主队列.使用NSOperationQueue,把最大线程数设为1

GCD使用障碍

6、        假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符,即上述字符串处理之后的输出结果为:aabcd

 

 

 

 

7、        获取一台设备唯一标识的方法有哪些?

UDID

OPENUDID

广告标识符

Vindor标识符

推送token+bundle_id

UUID

 

8、        ios类是否可以多继承?如果没有,那可以用其他方法实现吗?简述实现过程。

没有.通过协议可以调用.

 

 

 

9、        堆和栈的区别?

:由编译器自动分配释放,存放函数的参数值,局部变量的值等

:一般由程序员分配释放,若程序员不释放,程序结束时可能由系统回收

 

10、     ios本地数据存储都有哪几种方式?

plist(属性列表)

数据库(SQLite)

归档和反归档

文件读写

coreData 

0 0
原创粉丝点击