2023年ios程序员工作总结(共8篇) - 大文斗范文网.docx





《2023年ios程序员工作总结(共8篇) - 大文斗范文网.docx》由会员分享,可在线阅读,更多相关《2023年ios程序员工作总结(共8篇) - 大文斗范文网.docx(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年ios程序员工作总结(共8篇) - 大文斗范文网ios程序员工作总结作者:Andy_炯 |发布时间:2023-10-10 07:01:06收藏本文下载本文 第1篇:iOS开发高级程序员面试题答案 一、判断题(每题2分,共20分) 1、UITableView能够绑定多个数据源。(错) 2、一个UIViewController可以管理多个UITableView。(对) 3、Object-c的类可以多重继承。(错) 4、objective-c类里面的方法只有两种, 静态方法和实例方法。(对) 5、NSFileManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。(
2、对) 6、用类别增加方法时,不能与原来类中的方法产生名称冲突。(错) 7、frame指的是该view在本身坐标系统中 的位置和大小。(错) 8、method是一个方法的名字,selector是一个组合体。(错) 9、ARC是编译特性,不是运行时特性,在编译时,编译器会自动加上释放代码。(对) 10、从iOS4之后,Safari支持全屏浏览,Siri支持普通话。(对) 二、填空题(每空2分,共20分) 1、iOS是使用Objective-C语言编写的,使用该语言开发的Cocoa是一款功能强大的用户界面工具包,也是iOS的核心。 2、数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过
3、下标迅速访问数组中任何元素。链表恰好相反,其中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。 3、发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作。而发送异步请求不会阻塞主线程,会建立一个新的线程来操作,之后程序可以继续运行。 4、autorelease只是把Object放入了当前的autorelease pool中,当它被释放时,其中的所有Object都会被调用Release。 5、作为Objective-C导入头文件的关键字,#import用来包含系统的头文件,#import”用来包含用户头文件。 三、简述题(每题4分,共20分) 1、de
4、legate和notification有什么区别,什么情况下使用? 答:delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。 notification:消息的发送者告知接收者事件已经发生或者将要发生,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。 2、Object-C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 答:线程创建
5、有三种方法:使用NSThread创建、使用 GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue。 在主线程执行代码,方法是 performSelectorOnMainThread。 如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone。 3、iOS有哪些数据持久化方式? 答:四种:属性列表、对象归档、SQLite3和Core Data。 4、Objective-C如何对内存管理的,说说你的看法和解决方法? 答:Objective-C的内存管理主要有三种方式ARC(自动内
6、存计数)、手动内存计数、内存池。解决方法的话:谁持有,谁释放。 5、如何对iOS设备进行性能测试? 答:Profile- Instruments-Time Profiler。 四、问答题(每题10分,共20分) 1、什么是MVC,为什么使用MVC,有什么好处?描述一下iOS SDK中如何实现MVC的开发模式。 答:MVC分别为:模型(Model),视图(View)和控制Controller)。 模型(Model):即“数据模型”,用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。视图(View):视图层能够实现数据有目的显示。 控制
7、器(Controller):控制器起到不同层面间的组织作用,用于控制应用程序的流程。对于iOS SDK,所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。 2、请阐述UIViewController的生命周期,包括代码的执行顺序。 答:当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序 / 视图显示在屏幕上的顺序 1、alloc 创建对象,分配空间。 2、init (initWithNibName)初始化对象,初始化数据。 3、viewload
8、从nib载入视图, 这一步不需要去干涉。除非没有使用xib文件创建视图。 4、viewDidLoad 加载完毕,可以进行自定义数据以及动态创建其他控件。 5、viewWillAppear 视图将出现在屏幕之前,马上这个视图即将显示在屏幕上。 6、viewDidAppear 视图已在屏幕上渲染完成。 / 视图将被从屏幕上移除的顺序 1、viewWillDisappear 视图将被从屏幕上移除之前执行。 2、viewDidDisappear 视图已经被从屏幕上移除。 3、dealloc 视图被销毁,此时需要在init和viewDidLoad中创建的对象进行释放。 4、viewDidUnload 出
9、现内存警告在内存不足时执行,并对所有非当前显示的controller执行。本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。 五、论述题(20分) 请针对正泰中自智慧水务APP的需求(见现场展示的原型),论述您的开发思路和使用的开发技术。 第2篇:IO总结 输入和输出 IO分类 1 输入 和 输出 流 2 节点流 和 处理流 3 字节流(byte)和 字符流(char) 输入流 字节流 抽象基类 InputStre
10、am 读取文件的 FileInputStream 缓冲流 BufferedInputStream 读取各种java基本数据类型的 DataInputStream 读取对象 ObjectInputStream 字符流 抽象基类 Reader 读取文本文件的 FileReader 实现缓冲的 BufferedRead 读取一个行 readLine();newline()输出流 字节流 抽象基类 OutputStream 写文件的 FileOutputStream 缓冲输出流 BufferedOutputStream 写各种java基本数据类型的 DataOutputStream 写对象的 Obje
11、ctOutputStreamwriteObject(Object obj);字符流 对象的序列化 一个对象所属的类如果实现java.io.Serializable 则这个类是序列化类,此类创建的对象就是序列化对象 序列化对象可以通过文件流在文件中进行读和写。 第3篇:黑马程序员:IOS面试宝典数据存储 数据存储() 1、IOS中常用的数据存储方式有哪些? 答:1.数据存储有四种方案,NSUserDefault,KeyChain,File,DB.2.其中File有三种方式:plist,Archiver,Stream 3.DB包括core Data和FMDB 2、说一说你对sqlite的认识 SQ
12、Lite是目前主流的嵌入式关系型数据库,其最主要的特点就是轻量级、跨平台,当前很多嵌入式操作系统都将其作为数据库首选。虽然SQLite是一款轻型数据库,但是其功能也绝不亚于很多大型关系数据库。学习数据库就要学习其相关的定义、操作、查询语言,也就是大家日常说得SQL语句。和其他数据库相比,SQLite中的SQL语法并没有太大的差别,因此这里对于SQL语句的内容不会过多赘述,大家可以参考SQLite中其他SQL相关的内容,这里还是重点讲解iOS中如何使用SQLite构建应用程序。先看一下SQLite数据库的几个特点: 1.基于C语言开发的轻型数据库 2.在iOS中需要使用C语言语法进行数据库操作、
13、访问(无法使用ObjC直接访问,因为libqlite3框架基于C语言编写) 3.SQLite中采用的是动态数据类型,即使创建时定义了一种类型,在实际操作时也可以存储其他类型,但是推荐建库时使用合适的类型(特别是应用需要考虑跨平台的情况时) 4.建立连接后通常不需要关闭连接(尽管可以手动关闭) 在iOS中操作SQLite数据库可以分为以下几步(注意先在项目中导入libsqlite3框架): 1.打开数据库,利用sqlite3_open()打开数据库会指定一个数据库文件保存路径,如果文件存在则直接打开,否则创建并打开。打开数据库会得到一个sqlite3类型的对象,后面需要借助这个对象进行其他操作。
14、 2.执行SQL语句,执行SQL语句又包括有返回值的语句和无返回值语句。 3.对于无返回值的语句(如增加、删除、修改等)直接通过sqlite3_exec()函数执行; 4.对于有返回值的语句则首先通过sqlite3_prepare_v2()进行sql语句评估(语法检测),然后通过sqlite3_step()依次取出查询结果的每一行数据,对于每行数据都可以通过对应的sqlite3_column_类型()方法获得对应列的数据,如此反复循环直到遍历完成。当然,最后需要释放句柄。 3、说一说你对FMDB的认识 FMDB是一个处理数据存储的第三方框架,框架是对sqlite的封装,整个框架非常轻量级但又不
15、失灵活性,而且更加面向对象。FMDB有如下几个特性: 1.FMDB既然是对于libsqlite3框架的封装,自然使用起来也是类似的,使用前也要打开一个数据库,这个数据库文件存在则直接打开否则会创建并打开。这里FMDB引入了一个MFDatabase对象来表示数据库,打开数据库和后面的数据库操作全部依 赖此对象。 2.对于数据库的操作跟前面KCDbManager的封装是类似的,在FMDB中FMDatabase类提供了两个方法executeUpdate:和executeQuery:分别用于执行无返回结果的查询和有返回结果的查询。当然这两个方法有很多的重载这里就不详细解释了。唯一需要指出的是,如果调用
16、有格式化参数的sql语句时,格式化符号使用“?”而不是“%”、等。 3.我们知道直接使用libsqlite3进行数据库操作其实是线程不安全的,如果遇到多个线程同时操作一个表的时候可能会发生意想不到的结果。为了解决这个问题建议在多线程中使用FMDatabaseQueue对象,相比FMDatabase而言,它是线程安全的。 4.将事务放到FMDB中去说并不是因为只有FMDB才支持事务,而是因为FMDB将其封装成了几个方法来调用,不用自己写对应的sql而已。其实在在使用libsqlite3操作数据库时也是原生支持事务的(因为这里的事务是基于数据库的,FMDB还是使用的SQLite数据库),只要在执行
17、sql语句前加上“begin transaction;”执行完之后执行“commit transaction;”或者“rollback transaction;”进行提交或回滚即可。另外在Core Data中大家也可以发现,所有的增、删、改操作之后必须调用上下文的保存方法,其实本身就提供了事务的支持,只要不调用保存方法,之前所有的操作是不会提交的。在FMDB中FMDatabase有beginTransaction、commit、rollback三个方法进行开启事务、提交事务和回滚事务。 4、说一说你对Core Data的认识 Core Data使用起来相对直接使用SQLite3的API而言更加
18、的面向对象,操作过 程通常分为以下几个步骤: 1.创建管理上下文 创建管理上下可以细分为:加载模型文件-指定数据存储路径-创建对应数据类型的存储-创建管理对象上下方并指定存储。 经过这几个步骤之后可以得到管理对象上下文NSManagedObjectContext,以后所有的数据操作都由此对象负责。同时如果是第一次创建上下文,Core Data会自动创建存储文件(例如这里使用SQLite3存储),并且根据模型对象创建对应的表结构。 2.查询数据 对于有条件的查询,在Core Data中是通过谓词来实现的。首先创建一个请求,然后设置请求条件,最后调用上下文执行请求的方法。 3.插入数据 插入数据需
19、要调用实体描述对象NSEntityDescription返回一个实体对象,然后设置对象属性,最后保存当前上下文即可。这里需要注意,增、删、改操作完最后必须调用管理对象上下文的保存方法,否则操作不会执行。 4.删除数据 删除数据可以直接调用管理对象上下文的deleteObject方法,删除完保存上下文即可。注意,删除数据前必须先查询到对应对象。 5.修改数据 修改数据首先也是取出对应的实体对象,然后通过修改对象的属性,最后保存上下文。 5、OC中有哪些数据存储方式,各有什么区别? OC中有四种数据存储方式: 1).NSUserDefaults,用于存储配置信息 2).SQLite,用于存储查询需
20、求较多的数据 3).CoreData,用于规划应用中的对象 4).使用基本对象类型定制的个性化缓存方案.NSUserDefaults:对象中储存了系统中用户的配置信息,开发者可以通过这个实例对象对这些已有的信息进行修改,也可以按照自己的需求创建新的配置项。SQLite擅长处理的数据类型其实与NSUserDefaults差不多,也是基础类型的小数据,只是从组织形式上不同。开发者可以以关系型数据库的方式组织数据,使用SQL DML来管理数据。一般来说应用中的格式化的文本类数据可以存放在数据库中,尤其是类似聊天记录、Timeline等这些具有条件查询和排序需求的数据。CoreData是一个管理方案,
21、它的持久化可以通过SQLite、XML或二进制文件储存。它可以把整个应用中的对象建模并进行自动化的管理。从归档文件还原模型时CoreData并不是一次性把整个模型中的所有数据都载入内存,而是根据运行时状态,把被调用到的对象实例载入内存。框架会自动控制这个过程,从而达到控制内存消耗,避免浪费。无论从设计原理还是使用方法上看,CoreData都比较复杂。因此,如果仅仅是考虑缓存数据这个需求,CoreData绝对不是一个优选方案。CoreData的使用场景在于:整个应用使用CoreData规划,把应用内的数据通过CoreData建模,完全基于CoreData架构应用。使用基本对象类型定制的个性化缓存
22、方案:从需求出发分析缓存数据有哪些要求:按Key查找,快速读取,写入不影响正常操作,不浪费内存,支持归档。这些都是基本需求,那么再进一步或许还需要固定缓存项数量,支持队列缓存,缓存过期等。 数据存储这一块,面试常问, 你常用哪一种数据存储?什么是序列化?sqlite是直接用它还是用封装了它的第三方库?尤其是会问sqlite和core data的区别? 5、IOS平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗? iOS中可以有四种持久化数据的方式: 属性列表、对象归档、SQLite3和Core Data coredata可以使你以图形界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023年ios程序员工作总结共8篇 大文斗范文网 2023 ios 程序员 工作总结 文斗 范文

限制150内