• iOS技术面试04:数据存储


    1. 如果后期需要增加数据库中的字段怎么实现,如果不使用CoreData呢?

    编写SQL语句来操作原来表中的字段

    1> 增加表字段

    ALTER TABLE 表名 ADD COLUMN 字段名 字段类型;

    2> 删除表字段

    ALTER TABLE 表名 DROP COLUMN 字段名;

    3> 修改表字段

    ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名;

     

    1. SQLite数据存储是怎么用?

    1> 添加SQLite动态库:

    2> 导入主头文件:#import <sqlite3.h>

    3> 利用C语言函数创建打开数据库,编写SQL语句

     

    1. 简单描述下客户端的缓存机制?
      1. 缓存可以分为:内存数据缓存、数据库缓存、文件缓存
      2. 每次想获取数据的时候

    1> 先检测内存中有无缓存

    2> 再检测本地有无缓存(数据库文件)

    3> 最终发送网络请求

    4> 将服务器返回的网络数据进行缓存(内存、数据库、文件), 以便下次读取

     

    1. 你实现过多线程的Core Data么?NSPersistentStoreCoordinatorNSManagedObjectContextNSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?

    1> CoreData是对SQLite数据库的封装

    2> CoreData中的NSManagedObjectContext在多线程中不安全

    3> 如果想要多线程访问CoreData的话,最好的方法是一个线程一个NSManagedObjectContext

    4> 每个NSManagedObjectContext对象实例都可以使用同一个NSPersistentStoreCoordinator实例,这是因为NSManagedObjectContext会在便用NSPersistentStoreCoordinator前上锁

    5 什么是数据持久化?

    plist,偏好设置,键值归档,sqlite3,core data五种。前面4种,都只是存oc类型的对象数据,比如:NSNumber NSString   NSData  NSArray  NSDictionary等,而数据库呢,首先是查有没有那个库,没有则创建一个库,

    然后在库里面创建表,在表里面再进行具体的数据存储,最后还要关闭数据库,数据库一般是用c写,但苹果他有自己的一个库,就叫fmdb ,是oc 版本的,

    用起来更加面相对象,也是c 封装后的,前面4种都是普通对象类型,而core data不是,可以存的范围很广,但不太好操作,稳定性差,不是一个库,只是一个文件罢了

    6数据传值怎么传,又有哪些方式?

    block,通知,代理,属性,单例等。

  • 相关阅读:
    blog网页模版
    Sidebyside assembly
    几种hash算法
    [软件调试学习笔记]防止栈缓冲区溢出的基于Cookie的安全检查机制
    erlang注意(经典)
    erlang 的源代码保护机制(经典)
    erlang 的源代码保护机制(经典)
    java反编译工具jad
    erlang注意(经典)
    java反编译工具jad
  • 原文地址:https://www.cnblogs.com/linxiu-0925/p/5031276.html
Copyright © 2020-2023  润新知