博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java网络编程期末试题_java网络编程面试题【其中一小部分】
阅读量:1531 次
发布时间:2019-04-21

本文共 1708 字,大约阅读时间需要 5 分钟。

1、tcp和udp的区别

TCP:是面向连接的流传输控制协议,具有高可靠性,确保传输数据的正确性,有验证重发机制,因此不会出现丢失或乱序。

UDP:是无连接的数据报服务,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构比TCP的段结构简单,因此网络开销也小。

2、tcp连接建立的时候3次握手,断开连接的4次握手的具体过程

1.建立连接采用的3次握手协议,具体是指:

· 第一次握手是客户端connect连接到server

·第二次server accept client的请求之后,向client端发送一个消息,相当于说我都准备好了,你连接上我了

·第三次 就是client向server发送的,就是对第二次握手消息的确认。之后client和server就开始通讯了。

2.断开连接的4次握手,具体如下:

·断开连接的一端发送close请求是第一次握手

·另外一端接收到断开连接的请求之后需要对close进行确认,发送一个消息,这是第二次握手

·发送了确认消息之后还要向对端发送close消息,要关闭对对端的连接,这是第3次握手

·而在最初发送断开连接的一端接收到消息之后,进入到一个很重要的状态time_wait状态,这个状态也是面试官经常问道的问题,最后一次握手是最初发送断开连接的一端接收到消息之后。对消息的确认。

3、什么是同步?什么是异步?

同步:

如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;

异步:

如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。

这就是同步和异步。

举个简单的例子,假如有一个任务包括两个子任务A和B,对于同步来说,当A在执行的过程中,B只有等待,直至A执行完毕,B才能执行;而对于异步就是A和B可以并发地执行,B不必等待A执行完毕之后再执行,这样就不会由于A的执行导致整个任务的暂时等待。

如果还不理解,可以先看下面这2段代码:void fun1() {

// 超级复杂

}

void fun2() {

}

void function(){

fun1();

fun2()

.....

.....

}

这段代码就是典型的同步,在方法function中,fun1在执行的过程中会导致后续的fun2无法执行,fun2必须等待fun1执行完毕才可以执行。

接着看下面这段代码:void fun1() {

}

void fun2() {

}

void function(){

new Thread(){

public void run() {

fun1();

}

}.start();

new Thread(){

public void run() {

fun2();

}

}.start();

.....

.....

}

这段代码是一种典型的异步,fun1的执行不会影响到fun2的执行,并且fun1和fun2的执行不会导致其后续的执行过程处于暂时的等待。

事实上,同步和异步是一个非常广的概念,它们的重点在于多个任务和事件发生时,一个事件的发生或执行是否会导致整个流程的暂时等待。我觉得可以将同步和异步与Java中的synchronized关键字联系起来进行类比。当多个线程同时访问一个变量时,每个线程访问该变量就是一个事件,对于同步来说,就是这些线程必须逐个地来访问该变量,一个线程在访问该变量的过程中,其他线程必须等待;而对于异步来说,就是多个线程不必逐个地访问该变量,可以同时进行访问。

同步和异步可以表现在很多方面,但是记住其关键在于多个任务和事件发生时,一个事件的发生或执行是否会导致整个流程的暂时等待。一般来说,可以通过多线程的方式来实现异步,但是千万记住不要将多线程和异步画上等号,异步只是宏观上的一个模式,采用多线程来实现异步只是一种手段,并且通过多进程的方式也可以实现异步。同步和异步着重点在于多个任务的执行过程中,一个任务的执行是否会导致整个流程的暂时等待。

转载地址:http://lekdy.baihongyu.com/

你可能感兴趣的文章
我把公众号所有的精华文章都整理出来了
查看>>
Eigen与MATLAB常用运算的对应关系
查看>>
Android培训班(75)Dalvik虚拟机的GetStaticMethodID函数
查看>>
新手也可以学会TensorFlow
查看>>
游戏制作之路(32)创建自定义的界面样式管理
查看>>
从小说里学会长大
查看>>
c语言 数据类型
查看>>
c语言 转义字符
查看>>
c语言 文件读写
查看>>
【数据结构】二叉树的基本操作
查看>>
【数据结构】二维数组
查看>>
【数据结构】哈夫曼编码
查看>>
【数据结构】括号匹配
查看>>
图论算法(二)-最短路径的Dijkstra [ 单源 ] 和Floyd[ 多源 ] 解法(JAVA )
查看>>
蓝桥杯第八届省赛JAVA真题----拉马车
查看>>
蓝桥杯第八届省赛JAVA真题----k倍区间
查看>>
蓝桥杯第八届省赛JAVA真题----日期问题
查看>>
回溯法在解决八皇后问题中的应用
查看>>
蓝桥杯算法提高----2n皇后
查看>>
求解最长回文子串----Manacher 算法
查看>>