美文网首页
iOS面试无果,是因为这些题

iOS面试无果,是因为这些题

作者: 可爱的活火山 | 来源:发表于2017-04-19 11:51 被阅读17次

    每日瑜伽面试题(电话面试)

    1. json 和 xml 哪个好,为什么?

      XML和JSON优缺点

    (1).XML的优缺点

    <1>.XML的优点

    A.格式统一,符合标准;

    B.容易与其他系统进行远程交互,数据共享比较方便。

    <2>.XML的缺点

    A.XML文件庞大,文件格式复杂,传输占带宽;

    B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;

    C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;

    D.服务器端和客户端解析XML花费较多的资源和时间。

    (2).JSON的优缺点

    <1>.JSON的优点:

    A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;

    B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;

    C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;

    D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;

    E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

    <2>.JSON的缺点

    A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;

    B.JSON格式目前在Web Service中推广还属于初级阶段。

    2.第三方约束框架中用到的是什么语法,是怎么实现的?

    链式调用(chained calls)是指在函数调用返回了一个对象的时候,使得这个调用链可以不断的调用下去。从概念上可以看做是一环扣一环的铁链,也能被称作方法链调用。

    方法链调用的优点包括:代码简洁优雅,可读性强,减少了重复使用同一变量的代码量,把复杂的操作分割成多个小操作连续调用。

    用block实现链式方法

    3.block有什么好处和坏处?

    block是一个OC对象, 它的功能是保存代码片段, 预先准备好代码, 并在需要的时候执行.

    在Xcode里输入inlineblock可以快速补全block定义:

    <#returnType#> (^<#blockName#>) (<#parameterTypes#>) = ^ (<#parameters#>) {

    <#statements#>

    };

    returnType : 返回值类型

    blockName  : block命名

    parameterTypes : 参数类型

    parameters : 参数

    声明block使用  <#returnType#> (^<#blockName#>) (<#parameterTypes#>);

    如: @property (copy, nonatomic) void (^block)(int);

    使用block代码块应注意内部循坏引用, 导致循环引用应在block定义前加上__weak声明:

    __weak typeof(<#obj#>) weak<#obj#> = <#obj#>;

    4.极光推送中推的数量和活跃人数不符,是为什么?

     到现在都不知道哦,有谁知道麻烦说一声哦!

    沃虎网络

    1.用什么追踪错误?

    2.蓝牙传输中遇到大数据断掉怎么处理?

    3.蓝牙与设备一直处于连接状态,会很费电的,是怎么节能的呢?

    3.蓝牙设备的信号和距离问题

    美国亚米网

    1.属性为什么需要用copy来修饰?

    因为在MRC下,block在创建的时候,它的内存是分配在栈(stack)上的,而不是在堆(heap)上,可能被随时回收。他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。通过copy可以把block拷贝(copy)到堆,保证block的声明域外使用。在ARC下写不写都行,编译器会自动对block进行copy操作。

    2.NSNotification、Block、Delegate和KVO的区别

    代理是一种回调机制,且是一对一的关系,通知是一对多的关系,一个对向所有的观察者提供变更通知;

    效率:Delegate比NSNOtification高;

    Delegate和Block一般是一对一的通信;

    Delegate需要定义协议方法,代理对象实现协议方法,并且需要建立代理关系才可以实现通信;

    Block:Block更加简洁,不需要定义繁琐的协议方法,但通信事件比较多的话,建议使用Delegate

    3.有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成执行?如果需要a、b、c、d顺序执行,该如何实现?

    对于这四个异步请求,要判断都执行完成最简单的方式就是通过GCD的group来实现

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_group_t group = dispatch_group_create();

    dispatch_group_async(group, queue, ^{/*任务a */});

    dispatch_group_async(group, queue, ^{/*任务b */});

    dispatch_group_async(group, queue, ^{/*任务c */});

    dispatch_group_async(group, queue, ^{/*任务d */});

    dispatch_group_notify(group,dispatch_get_main_queue(), ^{

    // 在a、b、c、d异步执行完成后,会回调这里

    });

    4.iOS webView 和 H5 页面交互(点击获取H5页面中的按钮,做自己想做的操作)

    5.哪些类不适合使用单例模式?即使他们在周期中只会出现一次。

    工具类,不需要存储数据的.

    相关文章

      网友评论

          本文标题:iOS面试无果,是因为这些题

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