面试题总结3

1.


TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,我们来看看这三次对话的简单过程:1.主机A向主机B发出连接请求数据包;2.主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包;3.主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

tcp协议和udp协议的差别

是否连接面向连接面向非连接

传输可靠性可靠不可靠

应用场合传输大量数据少量数据

速度慢快

 

2.

 截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出它们。

􏰀􏰀 NSString * str = @"20 | http://www.baidu.com";
NSArray *array = [str componentsSeparatedByString:@"|"]; //这是分别输出的截取后的字符串

for (int i = 0; i<[array count]; ++i) { NSLog(@"%d=%@",i,[array objectAtIndex:i]);

}
3.
 isKindOfClass、isMemberOfClass、selector作用分别是什么 isKindOfClass,作用是,某个对象属于某个类型,包括继承的类型--- isMemberOfClass:某个对象确切属于某个类型,是不是具体的实例 selector:通过方法名,获取在内存中的函数的入口地址 
4.
 线程是什么?进程是什么?二者有什么区别和联系?

    /*

            1、线程是CPU独立运行和独立调度的基本单位

               进程是资源分配的基本单位

               进程和线程都是由操作系统所运行的程序运行的基本单元,

            2、区别

               进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响

               线程只是一个进 程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉

               多进程的程序要比多线程的程序健 壮,但在进程切换时,耗费资源较大,效率要差些

               对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

     

     */

    // 2.1、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?

    /*

     好处:

     1、使用线程可以把程序中占据时间长的任务放到后台去处理,如图片、视频的下载

     2、发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好

     缺点:

     1、大量的线程降低代码的可读性,

     2、更多的线程需要更多的内存空间

     3、当多个线程对同一个资源出现争夺的时候要注意线程安全的问题。

     实现方法

     NSThread ,NSOperationQueue,GCD ,

     */

    //2.2多线程的补充

    /*

     1、线程安全,不可变的比可变的安全

     2、线程的并行串行

     3、属性修饰词,原子性(安全,性能比较低,每次都要加线程锁,默认)和非原子性
 
5
obj-c的优缺点
objc优点:

1) Cateogies 

2) Posing 

3) 动态识别
4) 指标计算 

5)弹性讯息传递

6) 不是一个过度复杂的 C 衍生语言

7) Objective-C 与 C++ 可混合编程

缺点: 

1) 不支援命名空間 

2) 不支持运算符重载
3) 不支持多重继承
4) 使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。

优点
categories可以很好的归类,同时能自由的添加方法,非常好
动态识别也很好解释,比如iskindofclass
oc和c++ 可以直接改.m文件类型名来混搭
缺点
不支持命名空间
不支持运算符重载
不支持多继承
posted @ 2016-03-02 18:11  心玲鸡汤  阅读(119)  评论(0)    收藏  举报