您的位置:首页 > 职场人生

2015校招面试笔试题笔记

2015-05-17 12:49 323 查看
1、Java泛型中List<? extends T>和List<? super T>的区别是什么?

答:List<? extends T>中规定了List所能存储的只是T或者是T的子类(上限),而且一次只能是存储器中的一种,List<? extends T>只提供get()而不提供put()函数,put(T)会产生编译错误。而List中规定了List所能存储的必须是T类或者是T类的超类(下限),而且List<? super T>只提供了get()函数而不提供put()函数。

详细区别参见
Generics

2、实现ava的单例模式Singletong。

答: 最简单的实现代码如下:

public class Singletong{
private static Singletong instance = new Singletong();
private Singletong(){}
public static Singletong getInstance(){
return instance;
}
}


3、StringBuilder和StringBuffer的区别。

答:StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而StringBuilder 没有这个修饰,可以被认为是线程不安全的。因而StringBuilder在单线程的情况下性能要优于StringBuffer。另外,StringBuffer 始于 JDK 1.0,StringBuilder 始于JDK 1.5(从 JDK 1.5 开始,带有字符串变量的连接操作(+),JVM
内部采用的是StringBuilder 来实现的,而之前这个操作是采用 StringBuffer 实现的。)

4、TCP属于哪个层?OSI模型的七层协议分别是哪七层?和现在用的TCP/IP五层协议有什么不同?

答:TCP在TCP/IP网络协议中属于传输层。OSI模型中的七层模型分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而实际采用的网络协议只有五层,分别是物理层、数据链路层、网络层、传输层和应用层。

5、解释一下TCP协议中的三次握手和四次握手,为什么建立连接的时候需要三次握手?

答:TCP/IP协议中,TCP采用三次握手建立一个连接。

第一次握手:建立连接时,由客户端发送syn包(syn=j)到服务器,此时客户端进入SYN_SENT状态,等待服务器确认。(SYN:同步序列号)

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时服务器给客户端发送一个syn(syn=k),即发送SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。服务器接收到此包后,客户端和服务器进入ESTABLISHED状态,三次握手完成。

TCP/IP协议三次握手只是为了满足在不可靠的信道上可靠地传输信息。假设这样一个假设,client发送的一个连接请求由于链路传输的原因延误到链接失效时候才被server接收到,此时server误以为client再次发出一个新的连接请求,于是就向client发送确认报文段,同时建立连接。但是client并没有发出连接请求,所以client会无视server的确认,也不会给server发送任何消息,但此时server却一厢情愿地认为连接已经建立,并一直等待client发来数据。这样子和容易导致资源的浪费,而三次握手可以避免这种情况。

TCP连接是全双工的,因此每个方向都必须单独进行关闭。当一方完成了数据发送业务之后可以发送一个FIN来终止这个方向的连接,而收到FIN的另一方只意味着再也没有数据从对方传过来。一个TCP连接收到一个FIN后仍能发送数据。发送FIN的连接一方主动关闭而另一方则被动关闭。过程:

客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送;

服务器B收到这个FIN后,发回一个ACK,确认序号为收到的序号加1。

服务器B关闭与客户端A的连接,发送一个FIN给客户端A

客户端A发回ACK报文确认,并将确认序号设置为收到序号加1 。

TCP断开需要四次握手?这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

6、抽象类和接口各自的应用场景。

答: 1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。

2 如果许多类实现了某个接口,那么每个都要用代码实现那些方法

3 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。

所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让你可以快速开发,又允许你的类完全可以自己实现所有的方法,不会出现紧耦合的问题。

应用场合很简单了

1 优先定义接口

2 如果有多个接口实现有公用的部分,则使用抽象类,然后集成它。

7、MySql和Hibernate的区别

答:MySql是一个关系型数据库管理系统,同时也是一个软件。MySql数据库将数据保存在不同的表中。

而Hibernate是一个对象关系映射框架。在开发过程中java操作的是对象,而数据库中的数据是以表的形式存在的,Hibernate完成的就是对象模型和基于SQL的关系模型的映射关系,从而开发过程中可以完全采用面向对象的方式来开发应用程序。

8、HTTP状态码1XX,2XX, 3XX,4XX,5XX分别代表什么?列出常见的几个例子。

答:

    消息(1字头)

    ▪ 100 Continue

    ▪ 101 Switching Protocols

    ▪ 102 Processing

    成功(2字头)

    ▪ 200 OK

    ▪ 201 Created

    ▪ 202 Accepted

    ▪ 203 Non-Authoritative Information

    ▪ 204 No Content

    ▪ 205 Reset Content

    ▪ 206 Partial Content

    ▪ 207 Multi-Status

    重定向(3字头)

    ▪ 300 Multiple Choices

    ▪ 301 Moved Permanently

    ▪ 302 Move temporarily

    ▪ 303 See Other

    ▪ 304 Not Modified

    ▪ 305 Use Proxy

    ▪ 306 Switch Proxy

    ▪ 307 Temporary Redirect

    请求错误(4字头)

    ▪ 400 Bad Request

    ▪ 401 Unauthorized

    ▪ 402 Payment Required

    ▪ 403 Forbidden

    ▪ 404 Not Found

    ▪ 405 Method Not Allowed

    ▪ 406 Not Acceptable

    ▪ 407 Proxy Authentication Required

    ▪ 408 Request Timeout

    ▪ 409 Conflict

    ▪ 410 Gone

    ▪ 411 Length Required

    ▪ 412 Precondition Failed

    ▪ 413 Request Entity Too Large

    ▪ 414 Request-URI Too Long

    ▪ 415 Unsupported Media Type

    ▪ 416 Requested Range Not Satisfiable

    ▪ 417 Expectation Failed

    ▪ 421

    ▪ 422 Unprocessable Entity

    ▪ 423 Locked

    ▪ 424 Failed Dependency

    ▪ 425 Unordered Collection

    ▪ 426 Upgrade Required

    ▪ 449 Retry With

    服务器错误(5字头)

    ▪ 500 Internal Server Error

    ▪ 501 Not Implemented

    ▪ 502 Bad Gateway

    ▪ 503 Service Unavailable

    ▪ 504 Gateway Timeout

    ▪ 505 HTTP Version Not Supported

    ▪ 506 Variant Also Negotiates

    ▪ 507 Insufficient Storage

    ▪ 508 Loop Detected

    ▪ 509 Bandwidth Limit Exceeded

    ▪ 510 Not Extended

    ▪ 600 Unparseable Response Headers
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: