Java面试题3-附答案
接口有什么用
1、通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。
2、通过接口可以指明多个类需要实现的方法。
3、通过接口可以了解对象的交互界面,而不需了解对象所对应的类。
另:Java是单继承,接口可以使其实现多继承的功能。
说说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协议安全。
说说tcp/ip协议族
TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。
1、数据链路层负责帧数据的传递。
2、网络层责数据怎样传递过去。
3、传输层负责传输数据的控制(准确性、安全性)
4、应用层负责数据的展示和获取。
osi五层网络协议
物理层:
为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。
数据链路层:
为网络层提供数据传送服务。
网络层:
路由选择和中继、激活,终止网络连接、在一条数据链路上复用多条网络连接,多采取分时复用技术 、差错检测与恢复、排序,流量控制、服务选择、网络管理 。
传输层:
传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。
应用层:
应用层向应用程序提供服务
TCP与UDP的区别
1、基于连接与无连接
2、TCP要求系统资源较多,UDP较少;
3、UDP程序结构较简单
4、流模式(TCP)与数据报模式(UDP);
5、TCP保证数据正确性,UDP可能丢包
6、TCP保证数据顺序,UDP不保证
说说tcp三次握手,四次挥手
图片来源博客园,地址图右下角
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必须是集群。
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();
}
}
参考链接:https://mp.weixin.qq.com/s/7fUtjZOMI15whLrmBgOl_g
最新文章
- SSH实战 · JAVA发送邮件相关
- C# decimal保留指定的小数位数,不四舍五入
- 5.3监听请求:使用eclipse的tcp/ip工具(端口转换)
- 使用 trash-cli 逃出 rm 命令误删除重要文件的阴影
- java 练手 谁是最好的Coder
- LeetCode之LRU Cache 最近最少使用算法 缓存设计
- Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务
- JDK1.7中调用javascript方法
- C语言 格式说明符
- methanol 模块化的可定制的网页爬虫软件,主要的优点是速度快。
- Unity 发布到IOS,Android的各种坑
- Zookeeper3.4.9分布式集群安装
- 团队作业4——第一次项目冲刺(Alpha版本)3rd day
- Java日志-Log4j2
- 【适合N卡独显电脑的环境配置】Tensorflow教程-Windows 10下安装tensorflow 1.5.0 GPU with Anaconda
- cf1073c 二分+二维前缀和
- 关于 extern ";C";的说明
- Python爬虫之selenium的使用(八)
- CAS多点登录
- java根据日期获取周几和获取某段时间内周几的日期
热门文章
- KVM以及其虚拟机安装
- [前端] VUE基础 (8) (vue-cli脚手架)
- Python Scrapy的QQ音乐爬虫 音乐下载、爬取歌曲信息、歌词、精彩评论
- (转载)Tomcat 报错 (The tomcat server configuration at /Servers/Tomcat v7.0 Server at localhost-config is mi)
- ab工具压接口的时候post传参问题
- 洛谷 P2722 总分 Score Inflation &;&; 完全背包模板
- WINSCP 使用笔记
- 阿里云ECSLinux系统下挂载磁盘
- 修改自己的centos输入法
- 第3章 ZooKeeper基本数据模型