Java笔试题

1.简答题:

写出你用过的linux命令,举例说明其中几个的具体用法。

答案:略。

写出TCP的三次握手和四次握手的过程。

**三次握手:**

简而言之:

1、客户端向服务端发出连接请求,等待服务确认。

2、服务端收到请求,并发确认连接信息

3、客户端收到服务端确认连接信息,建立连接。

**四次握手:**

简而言之:

1、客户端发出断开连接请求

2、服务端收到请求,向客户端发收到断开请求的确认信息

3、服务端确认无数据发送后,向客户端发出关闭连接

4、客户端收到关闭连接,发送断开确认,断开TCP连接

三次握手详细描述:

1)第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务端,客户端进入SYN_SENT状态,等待服务端确认。

2)第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYNACK都置为1ack=J+1,随机产生一个值

seq=K,并将该数据包发送给客户端以确认连接请求,服务端进入SYN_RCVD状态。

3)第三次握手:客户端收到确认后,检查ack是否为J+1ACK是否为1,如果正确则将标志位ACK置为1ack=K+1,并将该数据包发送给服务端,

服务端检查ack是否为K+1ACK是否为1,如果正确则连接建立成功,客户端和服务端进入ESTABLISHED状态,完成三次握手,随后客户端与服务端

之间可以开始传输数据了。

四次握手详细描述:

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,

收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN

首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

1)第一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态。

2)第二次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入

CLOSE_WAIT状态。

3)第三次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。

4)第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到序号+1,服务端进入CLOSED

状态,完成四次挥手。

编写程序将一个句子按单词反序。比如“the sky is blue”,反序后变为“blue is sky the”?

答案:

代码随想录    反转单词字符串

思路:1、写一个字符串翻转函数,先对整个字符串翻转,然后将它以空格切分为字符数组,再对每一个字符串翻转。

           2、切分成字符串数组,全部压栈,然后出栈即可

一张学生成绩表score,部分内容如下:

​ name course grade

​ 张三 操作系统 67

​ 张三 数据结构 86

​ 李四 软件工程 89

​ 用一条SQL 语句查询出每门课都大于80 分的学生姓名。

答案:

Select distinct name from score where name not in(Select name from score where grade <= 80);

思路:首先查询成绩低于80分以下的人,然后只要是姓名没有在这80分以下的人里面,那么他的所有科目都是80分以上。distinct表示去除重复记录。

5.(10分)接口和抽象类的区别是什么?

接口和抽象类的区别:

1  接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

2  类可以实现很多个接口,但是只能继承一个抽象类

3  类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

4  抽象类可以在不提供接口方法实现的情况下实现接口。

5  Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

6  Java接口中的成员函数默认是public的。抽象类的成员函数可以是privateprotected或者是public

7  接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

集合类用过哪些,分别列举出来,并指出它们各自使用了那些数据结构。

Spring的IOC和AOP是什么?Spring有哪些优点,谈谈你对spring的理解。

IOC就是控制反转,是指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到Spring容器中

,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象之间松散耦合,也利于功能的复用。DI依赖注入,和控

制反转是同一个概念的不同角度的描述,即 应用程序在运行时依赖IoC容器来动态注入对象需要的外部资源。

AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装

为一个可重用的模块,这个模块被命名为切面Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维

护性。可用于权限认证、日志、事务处理。

优点:

1spring属于低侵入式设计,代码的污染极低;

2springDI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;

3spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。

4spring对于主流的应用框架提供了集成支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值