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

Java中高级面试题部分答案解析(3)

2018-03-13 11:20 567 查看


                               Java中高级面试题部分答案解析(3)

前几天发的Java中高级面试题,其余一些题型解析,还是这些话:不一定全部正确,有一些是没有固定答案的,如果发现有错的或者更适合的答案欢迎留言矫正。

接口有什么用

1、通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。

2、通过接口可以指明多个类需要实现的方法。

3、通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

另:Java是单继承,接口可以使其实现多继承的功能。

大体回答如上,类似文章请移驾:

深入理解Java的接口和抽象类http://mp.weixin.qq.com/s/VBEyW5-vf-xqq12tuTfxrw

说说http,https协议

HTTP:

是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:

是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

区别:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

大体回答如上,类似文章请移驾:

写给后端程序员的
HTTP 缓存原理介绍:http://mp.weixin.qq.com/s/Yudf_804a6WGfHS9rD16OA

 

说说tcp/ip协议族

TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。

1、数据链路层负责帧数据的传递。

2、网络层责数据怎样传递过去。

3、传输层负责传输数据的控制(准确性、安全性)

4、应用层负责数据的展示和获取。

大体回答如上,类似文章请移驾:

TCP/IP基础知识http://mp.weixin.qq.com/s/Y-XV_EHQaW5u3HWO-4RWVQ

osi五层网络协议

物理层:

为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。

数据链路层:

为网络层提供数据传送服务。

网络层:

路由选择和中继、激活,终止网络连接、在一条数据链路上复用多条网络连接,多采取分时复用技术 、差错检测与恢复、排序,流量控制、服务选择、网络管理 。

传输层:

传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。

应用层:

应用层向应用程序提供服务

大体回答如上,类似文章请移驾:

互联网协议入门(一)http://mp.weixin.qq.com/s/CUxUuFyeFNI6JgT2J_ZY7w

互联网协议入门(二)http://mp.weixin.qq.com/s/U5CUtkc17VF1GIDFcXL2Rw

TCP与UDP的区别

1、基于连接与无连接

2、TCP要求系统资源较多,UDP较少; 

3、UDP程序结构较简单 

4、流模式(TCP)与数据报模式(UDP); 

5、TCP保证数据正确性,UDP可能丢包 

6、TCP保证数据顺序,UDP不保证 

大体回答如上,类似文章请移驾:

网络协议-TCP和UDP最完整的区别介绍http://mp.weixin.qq.com/s/VxTRUKtCcdhdrNgfc1EHLA

说说tcp三次握手,四次挥手





图片来源博客园,地址图右下角

大体回答如上,类似文章请移驾:

TCP协议三次握手过程分析http://mp.weixin.qq.com/s/DFHiK1xMKoVgeWOf6XUlKA

cookie和session的区别,分布式环境怎么保存用户状态

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

分布式环境下的session(举例两种):

服务器session复制

原理:任何一个服务器上的session发生改变(增删改),该节点会把这个 session的所有内容序列化,然后广播给所有其它节点,不管其他服务器需不需要session,以此来保证Session同步。

优点:可容错,各个服务器间session能够实时响应。

缺点:会对网络负荷造成一定压力,如果session量大的话可能会造成网络堵塞,拖慢服务器性能。

session共享机制

使用分布式缓存方案比如memcached、redis,但是要求Memcached或Redis必须是集群。

大体回答如上,类似文章请移驾:

Nginx反向代理,负载均衡,redis
session共享,keepalived高可用:http://mp.weixin.qq.com/s/H-V-I6uca2xrmIVwosZZ5g

GIT和SVN的区别

1、GIT是分布式的,SVN不是。

2、GIT把内容按元数据方式存储,而SVN是按文件。

3、GIT分支和SVN的分支不同。

4、GIT没有一个全局的版本号,而SVN有。

5、GIT的内容完整性要优于SVN。

(一般问会不会用,知道这些区别貌似也没卵用)

请写一段栈溢出、堆溢出的代码

递归调用可以导致栈溢出
不断创建对象可以导致堆溢出

代码如下:
public class Test {  
 
   public void testHeap(){  
       for(;;){  
             ArrayList list = new ArrayList (2000);  
         }  
   }  
   int num=1;  
   public void testStack(){  
       num++;  
       this.testStack();  
    }  
     
   public static void main(String[] args){  
       Test  t  = new Test ();  
       t.testHeap();  
       t.testStack();     
   }  
}


大体回答如上,类似文章请移驾:

Java中堆内存和栈内存详解http://mp.weixin.qq.com/s/nQ48Sa3_YTdzxsZfprFXXw
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: