JAVA 面试题(四)

104 篇文章 0 订阅
25 篇文章 0 订阅

JAVA 面试题(四)

JAVA 面试题
JAVA 面试题(二)
JAVA 面试题(三)
Java-面试-逻辑题
Java-面试-逻辑题(二)

HTTP与HTTPS区别

1.HTTP 在地址栏上的协议是以 http:// 开头,而 HTTPS 在地址栏上的协议是以 https:// 开头;
2.HTTP 是未经安全加密的协议,它的传输过程容易被攻击者监听、数据容易被窃取、发送方和接收方容易被伪造;而 HTTPS 是安全的协议,它通过 密钥交换算法 - 签名算法 - 对称加密算法 - 摘要算法 能够解决上面这些问题;
3.http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全;
4.HTTP 的默认端口是 80,而 HTTPS 的默认端口是 443;
5.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

TCP与UDP区别

1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接;
2.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付;

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3.UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信;
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
5.TCP对系统资源要求较多,UDP对系统资源要求较少。

请简述TCP建立连接的三次握手过程

在这里插入图片描述

1.第一次握手:Client将标志位SYN((同步序列编号(Synchronize Sequence Numbers))置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
2.第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
3.第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

Node.js是什么?应用场景

Node.js 是一个能够在服务器端运行 JavaScript 的开放源代码、跨平台 JavaScript 运行环境。常用于数据密集的即时应用程序。

Node.js 特点
1.Node.js是一个 JavaScript 运行环境,依赖于 Chrome V8 引擎进行代码解释。
2.事件驱动:在 Node 中,客户端请求建立连接,提交数据等行为,会触发相应的事件。在 Node 中,在一个时
刻,只能执行一个事件回调函数,但是在执行一个事件回调函数的中途,可以转而处理其他事件,然后返回继
续执行原事件的回调函数。
3.非阻塞 I/O:Node.js 中采用了非阻塞型 I/O 机制,在执行了访问数据库的代码之后,将立即转而执行其后
面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。
4.轻量可伸缩,适用于实时数据交互应用。
5.单线程:好处是减少内存开销,不用像多线程编程那样处处在意状态同步的问题。
缺点是错误会引起整个应用退出。

Nodejs应用场景
NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景

实际案例
1.RESTful API;URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。
2.统一Web应用的UI层
3.Ajax请求的应用;个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。
4.Web开发;聊天室,博客系统,考试系统等

编写一个函数随机获取三位数,输出个十百位

代码实现

static void C() {
		int i = (int)(Math.random()*900)+100;
		int a = i/100;
		int b = i/10%10;
		int c = i%100%10;
		System.out.println("随机获取的三位数 :  "+i);
		System.out.println("百位: "+a+"   十位:"+b+"   个位: "+c);
	}

测试结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值