美文网首页
面试总结

面试总结

作者: 就算我心狂野 | 来源:发表于2016-05-25 08:54 被阅读89次

    关于自我介绍好好弄一弄!!!!


    为什么在主线程更新UI?

    • 主要原因还是为了线程的安全,但是UIkit的线程不是安全的,假如在两个线程中设置同一张背景图片的话,这个图片当被释放的时候就会被释放两次,当前这个线程设置图片地址会把上一个线程赋值的图片地址给覆盖,因为他们设置的是同一个地址,这样就会出现野指针错误,会发生程序崩溃。虽然apple对大部分的绘图方法改成线程安全可用,但是官方还是建议我们在主线程进行UI更新,这样就会保证线程安全。 主要的目的还是为了线程安全,防止程序崩溃。围绕着线程安全说。

    支付宝,微信,银联有什么区别?

    • Apple pay非常屌,可以看一看。
    • 支付宝支付需要三个东西,私钥,appKey,还有签约商户
    • 支付宝借口文档中写了3p参数列表:
      • 合作者身份ID
      • 接口名称
      • 签名
      • 服务器异步通知页面路径
    • 微信只需要appKey
      • 注册开发者账号
      • 注册应用通过审核
      • 开始计数开发
      • 签署在线协议
    • 请求之前都会向后台请求接口来获取订单号
    • 还有一点比较总要是后台的区别,后台原来和我说过,但是我现在不太记得了
    • 银联

    数据库上传格式不对会出现什么问题

    • 不会出现问题,只是在我们想要获取数据的时候,查找数据比较麻烦一些。

    • 数据库相关东西好好复习一下


    推送怎么推送给指定的人群?

    这个网站上有说明可以看一下:链接


    图片上传

    • 从相册中选取图片或者拍照
    • 处理完毕,回到个人信息页面
    • 保存图片到document
    • 保存到NSUserDefaults
    • 上传服务器
    • document获取图片设置UI
      代码链接地址:链接

    使用数据库的好处?关于事物的解释?

    • SQLite3是一款轻型的数据库,设计目标是嵌入式的,占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就够了,他的处理速度比MysqlPostgreSQL这两款著名的数据库还快。

    • 将网络数据存储在本地,不用每次都去网络加载,减少用户网络流量开销。在没网的情况下也能显示界面,增强用户体验。

    • 提供的字段有 integer、real、text、blob、null

    • 创建表:create 删除表:drop

    • 添加:insert 删除:delete 改:update 查:select

    • 系统本身提供的存储数据的方式,只能保存OC对象。

    • CoreData介绍

      • CoreData是苹果公司封装的数据持久化框架。说白了就是对SQLite进行的封装 CoreDataiOS 3.0中开始开放, 它允许用户按照实体-属性-值模型组织数据,数据最终的存储形式可以是:二进制、XML、SQLite数据库、内存里、活自定义数据类型
      • 优势:
      1. 它是苹果公司原生的产品
      2. 它可以节省代码量 大概是30% - 70%
      3. 它支持可视化建模型。
      4. CoreData支持数据库版本升级
      • CoreData基本使用:链接

    FMDB

    • 优点: 使用起来更加面向帝乡,省去了很多麻烦、冗余的C语言代码,对比苹果自带的CoreData框架,更加轻量级和灵活,提供了多线程安全的数据库操作方法,有效的防止数据混论

    • 三大主要类:

      • FMDatabase:一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQLite语句、
      • FMResultSet:使用FMDatabase执行查询后的结果集、
      • FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的
    • 关于事物

      • 事物就是把所有的东西打包在一起,一次性处理他,如果当前操作没有执行完毕,下次执行会从头开始,把之前执行的删除,这样更安全。而非事务就是一条一条的执行,如果中线断开,则不会删除上次的不安全。

    核心动画有什么缺点,和UIView动画的区别?

    • 核心动画只能添加到CALayer,UIView没有办法使用核心动画,核心动画一切都是假象,并不会改变真实的值。
    • 如果需要与用户交互就使用UIView的动画,不需要交互可以使用核心动画,在转场动画中,核心动画的类型比较多。
    • 核心动画有代理方法,动画执行完毕的时候回调用代理方法。

    推送的三种模式

    • App正在运行,App在后台,App结束。

    HTTP,Socket

    • Socket是进程通讯的一种方式,既调用这个网络库的一些API函数实现分布在不同主机的相关进程质检的数据交换

    • HTTP的链接很简单,是无状态的,HTTPS协议是SSL+HTTP协议构建的,可以进行加密传输、身份证的网络协议,要被比HTTP协议安全。

    • HTTPS安全性更高,但HTTP效率更高。但是如果要想安全效率就会降低,鱼和熊掌不可兼得。

    • HTTPHTTPSTCP连接时间是差不多的,为0.031和0.032,但是HTTPS的SSL过程耗时达到了0.182,差不多是TCP连接时间的6倍。


    TCP和UDP

    • TCP
      • Transmission Controller Protocol是传输控制协议
      • 提供的是面向连接、可靠的字节流服务。
    • UDP
      • User Data Protocol是用户数据协议
      • 是一个简单的面向数据包的运输层协议。

    三次握手:
    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据.


    AFN的底层实现原理?

    • AFN 3.0之前用的是NSURLConnection ,AFN 3.0之后放弃 connection 的接口,使用 NSURLSesstion,
    • AFN 封装了 reachability 的类,用于检测网络连接转态
    • 还有请求的发送请求的使用如果JSON格式不对,需要修改AFNHTTPRequestsSruakizer请求方式,默认是AFNjsonRequestSerializer.
    • 我们一般使用AFN都使用GET和POST请求,然后你就看着和他扯。

    怎么监听子线程结束?

    • (不太确定)可以使用调度组来监听子线程结束,会发送一条消息。

    @synthesize 的语义是如果你没有手动实现 setter 方法和 getter 方法,那么编译器会自动为你加上这两个方法。
    @dynamic 告诉编译器:属性的 setter 与 getter 方法由用户自己实现,不自动生成。


    APP 上架流程总结

    • 通过钥匙串获取开发者证书,获取发布证书,获取PP证书
    • 首先要创建一个开发者账号
    • 登陆网站新建APP,然后去开发者账号,填写name和bundle ID,获取套装ID
    • 打包项目,设置版本信息,把debug模式改成release,Product --> Archive
    • 设置app类别和预览图片

    平时怎么解决creach原因的

    • 可以说打断点来解决,还可以使用第三方bugly.

    你是怎么检查你程序的性能的?

    • 使用苹果系统提供的instruments来测试程序的性能如何。

    weak和assign的区别

    • weak不会引用计数器+1,如果指向对象被销毁,指针会自动清空指向nil
    • assgin指针不会执行nil 不会清空,导致程序崩溃

    关于列表的优化


    C语言与OC混编的时候需要注意什么

    • 需要注意内存管理,比如过画图的时候创建一个路径,当你不使用的时候你要把它释放掉。

    屏幕分辨率是多少

    • iPhone5 ~ 5s 的分辨率 320 * 568 @2X
    • iPhone6 ~ 6s 的分辨率 375 * 667 @2X
    • iPhone6P ~ 6SP 的分辨率 414 * 736 @3X

    你什么时候会考虑用XIB,什么时候用纯代码

    • 使用纯代码的好处是合作开发方便,重用性好,缺点开发周期长,自动布局困难
    • xib开发速度快,管理起来和纯代码差不多,缺点容易被代码所覆盖。

    app使用GIT管理上传版本

    • 我们一把需要开始开发新版本的时候,会开个分支,然后在分支上面进行开发,在开发完毕的后,在合并分支,如果上个版本出现错误,直接回退版本,修复bug在合并。

    socker的基本概念

    • 又称套接字

    • 网络上的两个程序通过一个双向的通信连接实现数据的交换

    • 通过socket向网络发出请求或者应答网络请求

    • 发送网络请求之前一定要建立一个通信的连接.

    • TCP在连接中进行大数据传输(数据大小不受限制)通过三次握手来建立连接

    • 是可靠的协议,安全送达

    • 必须建立连接,效率比较低

    • UDP不需要建立连接就可以发送数据(大小限制在64K之内)

    • 不需要创建连接,不安全

    • 不需要建立连接,效率快

    • Socket通信流程
    • 绑定端口、链接端口,监听有没有客户端链接 、链接端口、建立链接、 发送请求、读取请求、处理请求、回应数据、结束链接

    为啥子要使用单例

    • 使用dispatch_once 创建单例是为了线程安全

    相关文章

      网友评论

          本文标题:面试总结

          本文链接:https://www.haomeiwen.com/subject/knobrttx.html