精品文档助力人生欢迎关注小编
io s程序员工作总结
一、判断题每题2分共20分
1、UI Tab le Vie w能够绑定多个数据源。 错
2、一个UIVie wC ontro ller可以管理多个UI Tab leView。 对
3、 Object-c的类可以多重继承。 错
4、 obj ective-c类里面的方法只有两种,静态方法和实例方法。 对
5、NSFileManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。对
6、用类别增加方法时不能与原来类中的方法产生名称冲突。 错
7、 frame指的是该view在本身坐标系统中的位置和大小。 错
8、method是一个方法的名字 se lec tor是一个组合体。 错
9、ARC是编译特性不是运行时特性在编译时编译器会自动加上释放代码。 对
10、从iOS4之后 Safari支持全屏浏览 Siri支持普通话。 对
二、填空题每空2分共20分
1、 iOS是使用Objective-C语言编写的使用该语言开发的Cocoa是一款功能强大的用户界面工具包也是iOS的核心。
2、数组是将元素在内存中连续存放 由于每个元素占用内存相同可以通过下标迅速访问数组中任何元素。链表恰好相反其中的元素在内存中不是顺序存储的而是通过存在元素中的指针联系到一起。
3、发送同步请求程序将停止用户交互直至服务器返回数据完成才可以进行下一步操作。而发送异步请求不会阻塞主线程会建立一个新的线程来操作之后程序可以继续运行。
4、 autorelease只是把Object放入了当前的autorelease pool中当它被释放时其中的所有Object都会被调用Release。
5、作为Obj ective-C导入头文件的关键字 #impo rt用来包含系统的头文件 #import””用来包含用户头文件。
三、简述题每题4分共20分
精品文档助力人生欢迎关注小编
1、 de le gate和no tificatio n有什么区别什么情况下使用
答de le gate消息的发送者sender告知接收者rece iver某个事件将要发生de le gate同意然后发送者响应事件 de le gate机制使得接收者可以改变发送者的行为。
通常发送者和接收者的关系是直接的一对多的关系。notificatio n消息的发送者告知接收者事件已经发生或者将要发生仅此而已接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。
2、Object-C中创建线程的方法是什么如果在主线程中执行代码方法是什么如果想延时执行代码、方法又是什么
答线程创建有三种方法使用N S Thread创建、使用GC D的d isp atc h、使用子类化的N SOperatio n然后将其加入N SOperatio nQ ueue。
在主线程执行代码方法是performSe lectorO nMainThread。
如果想延时执行代码可以用performSe lector:onThread:withObject:waitUntilDone。
3、 iOS有哪些数据持久化方式
答 四种属性列表、对象归档、 SQLite3和Core Data。
4、 Obj ective-C如何对内存管理的,说说你的看法和解决方法
答 O bj ective-C的内存管理主要有三种方式ARC 自动内存计数、手动内存计数、内存池。解决方法的话谁持有谁释放。
5、如何对iOS设备进行性能测试
答 Pro file- Ins trume nt s -Time Pro fi ler。
四、 问答题每题10分共20分
1、什么是MVC为什么使用MVC有什么好处描述一下iO S S DK中如何实现MVC的开发模式。
答MVC分别为模型(Mode l)视图(View)和控制C o ntro ller)。
模型Model 即“数据模型”用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。 “模型”有对数据直接访问的权力例如对数据库的访问。
视图Vie w视图层能够实现数据有目的显示。
控制器Contro ller控制器起到不同层面间的组织作用用于控制应用程序的流程。
对于iOS SDK所有的View都是视图层的它应该独立于模型层 由视图控制层来
精品文档助力人生欢迎关注小编
控制。所有的用户数据都是模型层它应该独立于视图。所有的Vie wC o ntro lle r都是控制层 由它负责控制视图访问模型数据。
2、请阐述UI Vie wC ontro ller的生命周期包括代码的执行顺序。 答 当一个视图控制器被创建并在屏幕上显示的时候。代码的执行顺序
//视图显示在屏幕上的顺序
1、 a lloc创建对象分配空间。
2、 init (initWithN ibName)初始化对象,初始化数据。
3、viewload从nib载入视图,这一步不需要去干涉。除非没有使用xib文件创建视图。
4、 viewD idLoad加载完毕可以进行自定义数据以及动态创建其他控件。
5、 viewWillAppear视图将出现在屏幕之前马上这个视图即将显示在屏幕上。
6、 viewD idAppear视图已在屏幕上渲染完成。
//视图将被从屏幕上移除的顺序
1、 viewWillD isappe ar视图将被从屏幕上移除之前执行。
2、 viewD idD isappear视图已经被从屏幕上移除。
3、 dea lloc视图被销毁此时需要在init和vie wD idLoad中创建的对象进行释放。
4、viewDidUnload出现内存警告在内存不足时执行并对所有非当前显示的contro ller执行。
本视图的所有子视图将被销毁 以释放内存此时开发者需要手动对viewLoad、viewD idLoad中创建的对象释放内存。
因为当这个视图再次显示在屏幕上的时候 viewLoad、 viewD idLoad再次被调用 以便再次构造视图。
五、论述题20分
请针对正泰中自智慧水务APP的需求见现场展示的原型论述您的开发思路和使用的开发技术。
输入和输出
IO分类
1输入和输出流
2节点流和处理流
精品文档助力人生欢迎关注小编
3字节流byte 和字符流(c har)
输入流
字节流
抽象基类Inp utS tre a m
读取文件的FileInp utStream
缓冲流Buffe redInp utStream
读取各种j ava基本数据类型的DataInp utStream
读取对象ObjectInputStream
字符流
抽象基类Reader
读取文本文件的FileReader
实现缓冲的Buffe redRe ad读取一个行readLine();newline()输出流
字节流
抽象基类O utp utS tream
写文件的FileO utputStream\\\\
缓冲输出流Buffe redOutp utStream
写各种java基本数据类型的DataO utputS tream
写对象的ObjectOutputStreamwriteObject(Object obj) ;字符流
对象的序列化
一个对象所属的类如果实现java.io.Serializable
则这个类是序列化类此类创建的对象就是序列化对象序列化对象可以通过文件流在文件中进行读和写。
数据存储★★
1、 IO S中常用的数据存储方式有哪些
答 1.数据存储有四种方案NSUserDefault,KeyChain,File,DB.2.其中File有三种方式plist,Archiver,Stream 3.DB包括core Data和FMDB
2、说一说你对s q lite的认识
S Q L ite是目前主流的嵌入式关系型数据库其最主要的特点就是轻量级、跨平台当
精品文档助力人生欢迎关注小编
前很多嵌入式操作系统都将其作为数据库首选。虽然S Q L ite是一款轻型数据库但是其功能也绝不亚于很多大型关系数据库。学习数据库就要学习其相关的定义、操作、查询语言也就是大家日常说得SQL语句。和其他数据库相比 SQLite中的SQL语法并没有太大的差别因此这里对于SQL语句的内容不会过多赘述大家可以参考SQ Lite中其他SQL相关的内容这里还是重点讲解iO S中如何使用SQLite构建应用程序。先看一下SQ Lite数据库的几个特点
1.基于C语言开发的轻型数据库
2.在iOS中需要使用C语言语法进行数据库操作、访问无法使用ObjC直接访问因为lib q lite 3框架基于C语言编写
3.SQLite中采用的是动态数据类型 即使创建时定义了一种类型在实际操作时也可以存储其他类型但是推荐建库时使用合适的类型特别是应用需要考虑跨平台的
情况时
4.建立连接后通常不需要关闭连接尽管可以手动关闭
在iO S中操作S Q L ite数据库可以分为以下几步注意先在项目中导入lib sq lite 3框架
1.打开数据库利用sq lite 3_op e n()打开数据库会指定一个数据库文件保存路径如果文件存在则直接打开否则创建并打开。打开数据库会得到一个s q lite 3类型的对象后面需要借助这个对象进行其他操作。
2.执行SQL语句执行SQL语句又包括有返回值的语句和无返回值语句。 3.对于无返回值的语句如增加、删除、修改等直接通过s q lite 3_e xe c()函数执行
4.对于有返回值的语句则首先通过sq lite 3_prep a re_v2()进行sq l语句评估语法检测然后通过sq lite 3_st ep()依次取出查询结果的每一行数据对于每行数据都可以通过对应的s q lite 3_c o lumn_类型()方法获得对应列的数据如此反复循环直到遍历完成。当然最后需要释放句柄。
3、说一说你对FMDB的认识
F MDB是一个处理数据存储的第三方框架框架是对sq lite的封装整个框架非常轻量级但又不失灵活性而且更加面向对象。 FMDB有如下几个特性
1.F MDB既然是对于lib sq lite 3框架的封装 自然使用起来也是类似的使用前也要打开一个数据库这个数据库文件存在则直接打开否则会创建并打开。这里FMDB引入了一
精品文档助力人生欢迎关注小编
个MFDataba se对象来表示数据库打开数据库和后面的数据库操作全部依
赖此对象。
2.对于数据库的操作跟前面KCDbManager的封装是类似的在FMDB中FMDatab ase类提供了两个方法exec ute Update:和e xec uteQ uery:分别用于执行无返回结果的查询和有返回结果的查询。当然这两个方法有很多的重载这里就不详细解释了。唯一需要指出的是如果调用有格式化参数的sql语句时格式化符号使用“?”而不是“%@”、等。
3.我们知道直接使用lib s q lit e 3进行数据库操作其实是线程不安全的如果遇到多个线程同时操作一个表的时候可能会发生意想不到的结果。为了解决这个问题建议在多线程中使用FMDataba seQueue对象相比FMDatabase而言它是线程安全的。
4.将事务放到FMDB中去说并不是因为只有FMD B才支持事务而是因为FM DB将其封装成了几个方法来调用不用自己写对应的sql而已。其实在在使用libsqlite3操作数据库时也是原生支持事务的因为这里的事务是基于数据库的 F MD B还是使用的S Q L ite数据库只要在执行sql语句前加上“begin transaction;”执行完之后执行“committransaction;”或者“rollback transaction;”进行提交或回滚即可。另外在Core Data中大家也可以发现所有的增、删、改操作之后必须调用上下文的保存方法其实本身就提供了事务的支持只要不调用保存方法之前所有的操作是不会提交的。在FMDB中FMDatabase有beginTrans actio n、 co mmit、 ro llback三个方法进行开启事务、提交事务和回滚事务。
4、说一说你对C ore Data的认识
C ore Data使用起来相对直接使用S Q Lite3的API而言更加的面向对象操作过
程通常分为以下几个步骤
1.创建管理上下文
创建管理上下可以细分为加载模型文件-指定数据存储路径-创建对应数据类型的存储-创建管理对象上下方并指定存储。
经过这几个步骤之后可以得到管理对象上下文NSManagedObjectContext以后所有的数据操作都由此对象负责。同时如果是第一次创建上下文Core Data会自动创建存储文件
例如这里使用SQLite3存储并且根据模型对象创建对应的表结构。
2.查询数据
对于有条件的查询在C ore Data中是通过谓词来实现的。首先创建一个请求然后
精品文档助力人生欢迎关注小编
设置请求条件最后调用上下文执行请求的方法。
3.插入数据
插入数据需要调用实体描述对象NSEntityDe scription返回一个实体对象然后设置对象属性最后保存当前上下文即可。这里需要注意增、删、改操作完最后必须调用管理对象上下文的保存方法否则操作不会执行。
4.删除数据
删除数据可以直接调用管理对象上下文的deleteObject方法删除完保存上下文即可。注意删除数据前必须先查询到对应对象。
5.修改数据
修改数据首先也是取出对应的实体对象然后通过修改对象的属性最后保存上下文。
5、 OC中有哪些数据存储方式,各有什么区别?OC中有四种数据存储方式:
1).N SUserDe faults,用于存储配置信息2).S Q Lite,用于存储查询需求较多的数据
3).CoreData,用于规划应用中的对象
4).使用基本对象类型定制的个性化缓存方案.NSUserDefaults:对象中储存了系统中用户的配置信息,开发者可以通过这个实例对象对这些已有的信息进行修改,也可以按照自己的需求创建新的配置项。S Q Lite擅长处理的数据类型其实与N SUse rDe faults差不多,也是基础类型的小数据,只是从组织形式上不同。开发者可以以关系型数据库的方式组织数据,使用SQLDML来管理数据。一般来说应用中的格式化的文本类数据可以存放在数据库中,尤其是类似聊天记录、 Time line等这些具有条件查询和排序需求的数据。
C oreData是一个管理方案,它的持久化可以通过S Q Lite、XML或二进制文件储存。它可以把整个应用中的对象建模并进行自动化的管理。从归档文件还原模型时CoreData并不是一次性把整个模型中的所有数据都载入内存,而是根据运行时状态,把被调用到的对象实例载入内存。框架会自动控制这个过程,从而达到控制内存消耗,避免浪费。无论从设计原理还是使用方法上看,C o re D ata都比较复杂。因此,如果仅仅是考虑缓存数据这个需求,C oreData绝对不是一个优选方案。 C oreData的使用场景在于:整个应用使用C oreData规划,把应用内的数据通过CoreData建模,完全基于CoreData架构应用。使用基本对象类型定制的个性化缓存方案:从需求出发分析缓存数据有哪些要求:按Key查找,快速读取,写入不影响正常操作,不浪费内存,支持归档。这些都是基本需求,那么再进一步或许还需要固定缓存
精品文档助力人生欢迎关注小编
项数量,支持队列缓存,缓存过期等。
数据存储这一块,面试常问,你常用哪一种数据存储?什么是序列化?s q lite是直接用它还是用封装了它的第三方库?尤其是会问sq lite和core d ata的区别?
5、 IO S平台怎么做数据的持久化?coredata和sq lite有无必然联系?coredata是一个关系型数据库吗?iO S中可以有四种持久化数据的方式:属性列表、对象归档、 SQLite3和Core Datac o re d ata可以使你以图形界面的方式快速的定义ap p的数据模型,同时在你的代码中容易获取到它。 c o re d ata提供了基础结构去处理常用的功能,例如保存,恢复,撤销和重做,允许你在ap p中继续创建新的任务。在使用c o re d ata的时候,你不用安装额外的数据库系统,因为coredata使用内置的sq lit e数据库。 cor edata将你app的模型层放入到一组定义在内存中的数据对象。 coredata会追踪这些对象的改变,同时可以根据需要做相应的改变,例如用户执行撤销命令。当coredata在对你app数据的改变进行保存的时候,core data会把这些数据归档,并永久性保存。mac os x中sqlite库,它是一个轻量级功能强大的关系数据引擎,也很容易嵌入到应用程序。可以在多个平台使用,s q lite是一个轻量级的嵌入式s q l数据库编程。与coredata框架不同的是,sq lit e是使用程序式的,sq l的主要的AP I来直接操作数据表。 C oreData不是一个关系型数据库,也不是关系型数据库管理系统(RD BMS)。虽然C ore Dta支持SQLite作为一种存储类型,但它不能使用任意的SQ Lite数据库。 Core Data在使用的过程种自己创建这个数据库。 C ore Data支持对
一、对多的关系。
6、如果后期需要增加数据库中的字段怎么实现如果不使用C oreData呢
编写SQL语句来操作原来表中的字段增加表字段
ALTER TABLE表名ADD COLUMN字段名字段类型; •删除表字段
ALTER TABLE表名DROP COLUMN字段名;
.
修改表字段
ALTER TABLE表名RENAME COLUMN旧字段名TO新字段名;
7、 S Q L ite数据存储是怎么用
添加S Q L ite动态库
精品文档助力人生欢迎关注小编
导入主头文件 #import利用C语言函数创建\\\\打开数据库编写SQ L语句
8、简单描述下客户端的缓存机制
1缓存可以分为 内存数据缓存、数据库缓存、文件缓存2每次想获取数据的时候3先检测内存中有无缓存
4再检测本地有无缓存(数据库\\\\文件)5最终发送网络请求
6将服务器返回的网络数据进行缓存内存、数据库、文件 以便下次读取
9、你实现过多线程的C ore Data么N SPers is te ntSto reC oord inator
NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递你是用什么样的策略来实现的
1 C oreData是对S Q Lite数据库的封装
2CoreData中的N SManagedObj ectCo ntext在多线程中不安全
3如果想要多线程访问C o re D ata的话最好的方法是一个线程一个
NSManagedObjectContext 4每个NSManagedObj ectContext对象实例都可以使用同一个N SPersistentStoreCoordinato r实例这是因为N SManagedObjectCo nte xt会在便用N SPersiste ntStoreC oord inato r前上锁
10、 core data数据迁移
博客地址:http://blog.c sdn.net/jasonblog/article/details/17842535
11、 FMDB的使用和对多张表的处理
博客地址:http://b lo g.c sdn.net/wscqqlucy/article/details/8464398
12、说说数据库的左连接和右连接的区别
数据库左连接和右连接的区别主表不一样通过左连接和右连接最小条数为3 记录条数较小的记录数最大条数为12 3×4技术博客的地址:http:///
、程序启动画面大小iOS设备现在有三种不同的分辨率 iPhone320x480、 iPhone4640x960、 iPad768x1024。以前程序的启动画面(图片)只要准备一个Default.png就可以了但是现在变得复杂多了。下面就是CocoaChina会员做得总结
如果一个程序既支持iPhone又支持iPad那么它需要包含下面几个图片
Default-Portrait.png iPad专用竖向启动画面768 x1024或者768 x1004
Pia云是一家2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台上,商家主要销售VPS服务,采用KVM虚拟架构 ,机房有美国洛杉矶、中国香港和深圳地区,洛杉矶为crea机房,三网回程CN2 GIA,带20G防御,常看我测评的朋友应该知道,一般带防御去程都是骨干线路,香港的线路也是CN2直连大陆,目前商家重新开业,价格非常美丽,性价比较非常高,有需要的朋友可以关注一下。活动方案...
hypervmart怎么样?hypervmart是一家国外主机商,成立于2011年,提供虚拟主机、VPS等,vps基于Hyper-V 2012 R2,宣称不超售,支持linux和windows,有荷兰和英国2个数据中心,特色是1Gbps带宽、不限流量。现在配置提高,价格不变,性价比提高了很多。(数据中心不太清楚,按以前的记录,应该是欧洲),支持Paypal付款。点击进入:hypervmart官方网...
Webhosting24宣布自7月1日起开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,价格依旧不变。目前来看,日本VPS国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),还是有相当大的性价比的。此外在6月30日,又新增了洛杉矶机房,CPU为AMD Ryzen 9...