iOS 面试常见问题总结

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


   代理模式:当一个类的某些功能须要由别的类实现,可是又不肯定具体是哪一个类实现的算法


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


   工厂模式:工厂模式建立的实例,多与proxy模式配合,建立可替代的类,通常用于基础控件的建立数据库


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


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


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

   

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


(2)资源分配给进程,统一进程的全部线程共享该进程的全部资源app


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


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

相关文章
相关标签/搜索