美文网首页
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