您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > ios程序员工作总结范文
ios程序员工作总结范文第一篇范文:iOS开发高级程序员面试题答案一、判断题(每题2分,共20分)1、UITableView能够绑定多个数据源。(错)2、一个UIViewController可以管理多个UITableView。(对)3、Object-c的类可以多重继承。(错)4、objective-c类里面的方法只有两种,静态方法和实例方法。(对)5、NSFileManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。(对)6、用类别增加方法时,不能与原来类中的方法产生名称冲突。(错)7、frame指的是该view在本身坐标系统中的位置和大小。(错)8、method是一个方法的名字,selector是一个组合体。(错)9、ARC是编译特性,不是运行时特性,在编译时,编译器会自动加上释放代码。(对)10、从iOS4之后,Safari支持全屏浏览,Siri支持普通话。(对)二、填空题(每空2分,共20分)1、iOS是使用Objective-C语言编写的,使用该语言开发的Cocoa是一款功能强大的用户界面工具包,也是iOS的核心。2、数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。链表恰好相反,其中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。3、发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作。而发送异步请求不会阻塞主线程,会建立一个新的线程来操作,之后程序可以继续运行。4、autorelease只是把Object放入了当前的autoreleasepool中,当它被释放时,其中的所有Object都会被调用Release。5、作为Objective-C导入头文件的关键字,#import用来包含系统的头文件,#import””用来包含用户头文件。三、简述题(每题4分,共20分)1、delegate和notification有什么区别,什么情况下使用?答:delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。notification:消息的发送者告知接收者事件已经发生或者将要发生,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。2、Object-C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?答:线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue。在主线程执行代码,方法是performSelectorOnMainThread。如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone。3、iOS有哪些数据持久化方式?答:四种:属性列表、对象归档、SQLite3和CoreData。4、Objective-C如何对内存管理的,说说你的看法和解决方法?答:Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。解决方法的话:谁持有,谁释放。5、如何对iOS设备进行性能测试?答:Profile-Instruments-TimeProfiler。四、问答题(每题10分,共20分)1、什么是MVC,为什么使用MVC,有什么好处?描述一下iOSSDK中如何实现MVC的开发模式。答:MVC分别为:模型(Model),视图(View)和控制Controller)。模型(Model):即“数据模型”,用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。视图(View):视图层能够实现数据有目的显示。控制器(Controller):控制器起到不同层面间的组织作用,用于控制应用程序的流程。对于iOSSDK,所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。2、请阐述UIViewController的生命周期,包括代码的执行顺序。答:当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序//视图显示在屏幕上的顺序1、alloc创建对象,分配空间。2、init(initWithNibName)初始化对象,初始化数据。3、viewload从nib载入视图,这一步不需要去干涉。除非没有使用xib文件创建视图。4、viewDidLoad加载完毕,可以进行自定义数据以及动态创建其他控件。5、viewWillAppear视图将出现在屏幕之前,马上这个视图即将显示在屏幕上。6、viewDidAppear视图已在屏幕上渲染完成。//视图将被从屏幕上移除的顺序1、viewWillDisappear视图将被从屏幕上移除之前执行。2、viewDidDisappear视图已经被从屏幕上移除。3、dealloc视图被销毁,此时需要在init和viewDidLoad中创建的对象进行释放。4、viewDidUnload出现内存警告在内存不足时执行,并对所有非当前显示的controller执行。本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad再次被调用,以便再次构造视图。五、论述题(20分)请针对正泰中自智慧水务APP的需求(见现场展示的原型),论述您的开发思路和使用的开发技术。第二篇范文:IO总结输入和输出IO分类1输入和输出流2节点流和处理流3字节流(byte)和字符流(char)输入流字节流抽象基类InputStream读取文件的FileInputStream缓冲流BufferedInputStream读取各种java基本数据类型的DataInputStream读取对象ObjectInputStream字符流抽象基类Reader读取文本文件的FileReader实现缓冲的BufferedRead读取一个行readLine();newline()输出流字节流抽象基类OutputStream写文件的FileOutputStream\\\\缓冲输出流BufferedOutputStream写各种java基本数据类型的DataOutputStream写对象的ObjectOutputStreamwriteObject(Objectobj);字符流对象的序列化一个对象所属的类如果实现java.io.Serializable则这个类是序列化类,此类创建的对象就是序列化对象序列化对象可以通过文件流在文件中进行读和写。第三篇范文:黑马程序员:IOS面试宝典数据存储数据存储(★★)1、IOS中常用的数据存储方式有哪些?答:1.数据存储有四种方案,NSUserDefault,KeyChain,File,DB.2.其中File有三种方式:plist,Archiver,Stream3.DB包括coreData和FMDB2、说一说你对sqlite的认识SQLite是目前主流的嵌入式关系型数据库,其最主要的特点就是轻量级、跨平台,当前很多嵌入式操作系统都将其作为数据库首选。虽然SQLite是一款轻型数据库,但是其功能也绝不亚于很多大型关系数据库。学习数据库就要学习其相关的定义、操作、查询语言,也就是大家日常说得SQL语句。和其他数据库相比,SQLite中的SQL语法并没有太大的差别,因此这里对于SQL语句的内容不会过多赘述,大家可以参考SQLite中其他SQL相关的内容,这里还是重点讲解iOS中如何使用SQLite构建应用程序。先看一下SQLite数据库的几个特点:1.基于C语言开发的轻型数据库2.在iOS中需要使用C语言语法进行数据库操作、访问(无法使用ObjC直接访问,因为libqlite3框架基于C语言编写)3.SQLite中采用的是动态数据类型,即使创建时定义了一种类型,在实际操作时也可以存储其他类型,但是推荐建库时使用合适的类型(特别是应用需要考虑跨平台的情况时)4.建立连接后通常不需要关闭连接(尽管可以手动关闭)在iOS中操作SQLite数据库可以分为以下几步(注意先在项目中导入libsqlite3框架):1.打开数据库,利用sqlite3_open()打开数据库会指定一个数据库文件保存路径,如果文件存在则直接打开,否则创建并打开。打开数据库会得到一个sqlite3类型的对象,后面需要借助这个对象进行其他操作。2.执行SQL语句,执行SQL语句又包括有返回值的语句和无返回值语句。3.对于无返回值的语句(如增加、删除、修改等)直接通过sqlite3_exec()函数执行;4.对于有返回值的语句则首先通过sqlite3_prepare_v2()进行sql语句评估(语法检测),然后通过sqlite3_step()依次取出查询结果的每一行数据,对于每行数据都可以通过对应的sqlite3_column_类型()方法获得对应列的数据,如此反复循环直到遍历完成。当然,最后需要释放句柄。3、说一说你对FMDB的认识FMDB是一个处理数据存储的第三方框架,框架是对sqlite的封装,整个框架非常轻量级但又不失灵活性,而且更加面向对象。FMDB有如下几个特性:1.FMDB既然是对于libsqlite3框架的封装,自然使用起来也是类似的,使用前也要打开一个数据库,这个数据库文件存在则直接打开否则会创建并打开。这里FMDB引入了一个MFDatabase对象来表示数据库,打开数据库和后面的数据库操作全部依赖此对象。2.对于数据库的操作跟前面KCDbManager的封装是类似的,在FMDB中FMDatabase类提供了两个方法executeUpdate:和executeQuery:分别用于执行无返回结果的查询和有返回结果的查询。当然这两个方法有很多的重载这里就不详细解释了。唯一需要指出的是,如果调用有格式化参数的sql语句时,格式化符号使用“?”而不是“%@”、等。3.我们知道直接使用libsqlite3进行数据库操作其实是线程不安全的,如果遇到多个线程同时操作一个表的时候可能会发生意想不到的结果。为了解决这个问题建议在多线程中使用FMDatabaseQueue对象,相比FMDatabase而言,它是线程安全的。4.将事务放到FMDB中去说并不是因为只有FMDB才支持事务,而是因为FMDB将其封装成了几个方法来调用,不用自己写对应的sql而已。其实在在使用libsqlite3操作数据库时也是原生支持事务的(因为这里的事务是基于数据库的,FMDB还是使用的SQLite数据库),只要在执行sql语句前加上“begintransaction;”执行完之后执行“committransaction;”或者“rollbacktransaction;”进行提交或回滚即可。另外在CoreData中大家也可以发现,所有的增、删、改操作之后必须调用上下文的保存方法,其实本身就提供了事务的支持,只要不调用保存方法,之前所有的操作是不会提交的。在FMDB中FMDatabase有beginTransaction、commit、rollback三个方法进行开启事务、提交事务和回滚事务。4、说一说你对CoreData的认识CoreData使用起来相对直接使用SQLite3的API而言更加的面向对象,操作过程通常分为以下几个步骤:1.创建管理上下文创建管理上下可以细分为:加载模型文件-指定数据存储路径-创建对应数据类型的存储-创建管理对象上下方并指定存储。经过这几个步骤之后可以得到管理对象上下文NSMan
本文标题:ios程序员工作总结范文
链接地址:https://www.777doc.com/doc-7637528 .html