交流经验和面试题目

有一段时间自己练。理直气壮地去面试,这可以从容应对,但事实并非如此,在做项目的自己。或者是缺乏理论知识。为了理解很多问题都是一知半解。没有办法让人舒适,次面试中一些题目,分享给大家。

同步与异步的差别

同步:发送一个请求,等待返回,然后再发送下一个请求

异步:发送一个请求,不等待返回,随时能够再发送下一个请求

同步能够避免出现死锁,读脏数据的发生。一般共享某一资源的时候用。假设每一个人都有改动权限,同一时候改动一个文件,有可能使一个人读取还有一个人已经删除的内容,就会出错,同步就会按顺序来改动。

异步则是能够提高效率了。如今cpu都是双核,四核。异步处理的话能够同一时候做多项工作。当然必须保证是能够并发处理的。

这些都是对的。

同步和异步最大的差别就在于。一个须要等待,一个不须要等待。

简述iso的7层设计

解析:

在OSI參考模型中。从下至上,每一层完毕不同的、目标明白的功能。

1、物理层(Physical Layer)

  物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个数据传输的物理媒体。

  在这一层。数据的单位称为比特(bit)。

  属于物理层定义的典型规范代表包含:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

2、数据链路层(Data Link Layer)

  数据链路层在不可靠的物理介质上提供可靠的传输。

该层的作用包含:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

  在这一层,数据的单位称为帧(frame)。

  数据链路层协议的代表包含:SDLC、HDLC、PPP、STP、帧中继等。

3、网络层(Network Layer)

  网络层负责对子网间的数据包进行路由选择。此外,网络层还能够实现拥塞控制、网际互连等功能。

  在这一层,数据的单位称为数据包(packet)。

  网络层协议的代表包含:IP、IPX、RIP、OSPF等。

4、传输层(Transport Layer)

  传输层是第一个端到端。即主机到主机的层次。

传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

  在这一层。数据的单位称为数据段(segment)。

  传输层协议的代表包含:TCP、UDP、SPX等。

5、会话层(Session Layer)

  会话层管理主机之间的会话进程。即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

  会话层协议的代表包含:NetBIOS、ZIP(AppleTalk区域信息协议)等。

6、表示层(Presentation Layer)

  表示层对上层数据或信息进行变换以保证一个主机应用层信息能够被还有一个主机的应用程序理解。

表示层的数据转换包含数据的加密、压缩、格式转换等。

  表示层协议的代表包含:ASCII、ASN.1、JPEG、MPEG等。

7、应用层(Application Layer)

  应用层为操作系统或网络应用程序提供訪问网络服务的接口。

应用层协议的代表包含:Telnet、FTP、HTTP、SNMP等。

在OSI參考模型中,当一台主机须要传送用户的数据(DATA)时。数据首先通过应用层的接口进入应用层。

在应用层,用户的数据被加上应用层的报头(Application Header。AH),形成应用层协议数据单元(Protocol Data Unit。PDU)。然后被递交到下一层-表示层。

表示层并不"关心"上层-应用层的数据格式而是把整个应用层递交的数据包看成是一个总体进行封装。即加上表示层的报头(Presentation Header,PH)。

然后。递交到下层-会话层。

相同,会话层、传输层、网络层、数据链路层也都要分别给上层递交下来的数据加上自己的报头。它们是:会话层报头(Session Header,SH)、传输层报头(Transport Header。TH)、网络层报头(Network Header,NH)和数据链路层报头(Data link Header,DH)。当中,数据链路层还要给网络层递交的数据加上数据链路层报尾(Data link Termination,DT)形成终于的一帧数据。

当一帧数据通过物理层传送到目标主机的物理层时。该主机的物理层把它递交到上层-数据链路层。

数据链路层负责去掉数据帧的帧头部DH和尾部DT(同一时候还进行数据校验)。

假设数据没有出错。则递交到上层-网络层。

相同,网络层、传输层、会话层、表示层、应用层也要做类似的工作。终于。原始数据被递交到目标主机的详细应用程序中。  

简述TCP与UDP的差别               


 


 TCP


 UDP


 是否有序


 接收到的可能乱序,可是有段标号供排序


 无序


 可靠性


 可靠的


 不可靠的


 是否连接


 面相连接


 面相非连接


 负责


 维护虚拟连接。负载较高


 无连接,负载较小


 是否确认


 须要确认(可靠性的一种)


 不须要确认


 是否有控制


 滑动窗体和拥塞控制机制

无控制

Get与post差别

Form中的get和post方法,在传输数据过程中分别相应了HTTP协议中的GET和POST方法。

二者主要差别例如以下:

1、Get是用来从server上获得数据,而Post是用来向server上传递数据。

2、Get将表单中数据的依照variable=value的形式,加入到action所指向的URL后面。而且两者使用“?”连接,而各个变量之间使用“&”连接。Post是将表单中的数据放在form的数据体中。依照变量和值相相应的方式。传递到action所指向URL。

3、Get是不安全的,由于在传输过程。数据被放在请求的URL中,而现在现有的非常多server、代理server或者用户代理都会将请求URL记录到日志文件里,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外。用户也能够在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的全部操作对用户来说都是不可见的。

 4、Get传输的数据量小,这主要是由于受URL长度限制。而Post能够传输大量的数据,所以在上传文件仅仅能使用Post(当然另一个原因,将在后面的提到)。

 5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

 6、Get是Form的默认方法。

GET 和 POST 的数据格式都是一样的:

GET 支持的最大字节限制是 2048 Bytes

POST 支持的最大字节限制是 2GB

Tcp中的三次握手

在TCP/IP协议中,TCP协议提供可靠的连接服务,採用三次握手建立一个连接。

第一次握手:建立连接时,client发送syn包(syn=j)到server,并进入SYN_SEND状态,等待server确认;

第二次握手:server收到syn包,必须确认客户的SYN(ack=j+1)。同一时候自己也发送一个SYN包(syn=k),即SYN+ACK包,此时server 进入SYN_RECV状态;

第三次握手:client收到server的SYN+ACK包,向server发送确认包ACK(ack=k+1)。此包发送完毕,client和server进入 ESTABLISHED状态,完毕三次握手。

通过这种三次握手,client与服务端建立起可靠的双工的连接,開始传送数据。

三次握手的最主要目的是保证连接是双工的。可靠很多其它的是通过重传机制来保证的。

同理对于TCP为什么须要进行三次握手我们能够一样的理解:

为了保证服务端能收接受到client的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证client可以接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

Sleep与wait差别

Sleep是thread类的方法。能够在不论什么地方使用,不会放弃对对象的使用权,在同步块或同步方法中使用sleep,其它线程将无法訪问,到了指定时间就会自己主动执行。

Wait是object类的方法,仅仅能在同步块中使用,放弃了对象的使用权。其它线程能够使用。须要还有一个线程调用notify进行唤醒。才干转换到执行状态。

注:一个接口能够继承多个接口

List set继承collection map没有继承collection

有兴趣的朋友能够关注微信:Job_Coder


版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/mengfanrong/p/4673119.html