2015校招面试笔试题笔记
来源:互联网 发布:经纬度计算距离软件 编辑:程序博客网 时间:2024/06/05 14:37
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的关系模型的映射关系,从而开发过程中可以完全采用面向对象的方式来开发应用程序。
答:
消息(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
- 2015校招面试笔试题笔记
- 校招面试笔试题
- 业务员面试笔试题
- 富士通 面试笔试题
- 面试笔试题网址
- java面试笔试题
- C++面试笔试题
- c#面试笔试题
- java面试笔试题
- 面试笔试题
- 面试笔试题
- 面试笔试题重要~
- 常见面试笔试题
- 4399 面试笔试题
- 面试笔试题总结
- linux面试笔试题
- 总结几道面试笔试题
- android面试笔试题
- 通信网络实验-嗅探器实现
- Class类
- SVN使用笔记
- 版本控制(8)--使用git演示案例
- python一些标准库
- 2015校招面试笔试题笔记
- 欧拉函数
- 第十一周项目四 类族的设计
- Java单例模式的实现
- iBatis
- Ubuntu Vmware虚拟机网络配置(二)
- Eclipse Java注释模板设置详解
- regionprops函数用法详解
- w3cschool的jQuery Mobile教程总结