iOS 面试常问问题总结

1.除了MVC模式 你还熟悉什么设计模式


   代理模式:当一个类的某些功能需要由别的类实现,但是又不确定具体是哪个类实现的


   单例模式:确保程序运行期,某个类只有一份实例,用于进行资源共享


   工厂模式:工厂模式创建的实例,多与proxy模式配合,创建可替代的类,一般用于基础控件的创建


   观察者模式:一般为model层,对controller和view进行通知,不关心谁接收,只负责发布消息


   策略模式:定义算法,封装起来,使他们之间可相互替换


2.线程和进程的区别与联系?谈谈多线程。

   

(1)一个线程只属于有一个进程,而一个进程可以有多个线程,至少有一个线程


(2)资源分配给进程,统一进程的所有线程共享该进程的所有资源


(3)处理及分给线程,即真正在处理机上运行的是线程


3.你在开发项目中,用到了那些数据存储方式,ios中常见的方式有哪几种?


(1)归档 :采用归档的形式来保存数据,该数据对象需要 遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码。例如对Possession对象归档保存  


(2)NSUserDefault:用来保存应用程序设置和属性、用户保存的数 据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSDataNSString NSNumberNSDateNSArrayNSDictionary。如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储。


(3)write写入,永久保存在磁盘中:具体方法为:第一步:获得文件即将保存的路径:NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask,YES);//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录 的全路径。该函数有三个参数,目录类型、he domain mask、布尔值。其中布尔值表示是否需要通过~扩展路径。而且第一个参数是不变的,即为NSSearchPathDirectory 。在IOS中后两个参数也是不变的,即为:NSUserDomainMask  YESNSString *ourDocumentPath =[documentPaths objectAtIndex:0]; 


(4)sqlite数据库:一步需要添加SQLite相关的库以及头文件:在项目文件的Build Phases下,找到Link Binary Library(ies),添加libsqlite3.0.dylib;在项目文件中头文件或者源文件中添加头文件#import “/usr/include/sqlite3.h”第二步:开始使用SQLite:使用前注意:如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库。


4.arc的程序出现内存泄露怎么办


   用ARC的,只是编译器帮你管理合适release、retain,不用ARC就需要你自己去管理,说到底就是谁去管理的问题,如果实在找不到问题,建议你找到内存泄露的那个对象,将其赋值为nil,因为在ARC中,一旦对象没有指针指向,就会马上释放


5.❤️简述一下iOS应用开发流程


 (1)产品经理做需求调研,确定产品需求,编写需求文档


 (2)产品人员完成产品原型


 (3)产品经理召开会议(产品,uI,开发,测试,服务器)


 (4)服务器与客户端成员一起制定接口文档


 (5)项目经理制定开发进度,分配任务,预算开发周期

 

 (6)移动客户端开发人员根据UI界面和需求文档,开始编码,开发模块上的功能

 

 (7)开发者完成开发后提交给测试


 (8)测试部分完毕,提交给产品经理,验收产品

 

 (9)提交到appstore





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值