Java复习面经(六)
问:调用方法内部的传参过程?
答:参数传递的本质是将主调方法的栈帧(stack frame)中实参的值拷贝到被调方法的栈帧(stack frame)的形参中。
问:url网址过程?
答:
1、解析url,检测当前url是否正确,是否是还需要转换的字符等。
2、DNS解析,将url转换成对应的域名/IP。
3、建立TCP连接,客户端和服务端建立连接,并接受来自客户端的请求。
4、服务端处理响应,服务器端对客户端发来的请求进行处理。
5、渲染页面,将对应的静态页面返回给客户端。
问:DNS过程中,TCP传输的是什么?UDP传输的是什么?
答:域名解析时使用UDP协议,因为客户端的域名往往超不过512字节;辅助域名解析器与主域名解析器进行区域传送,同步数据的时候将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
问:TCP有效链接手段?
答:三次握手,四次挥手,确认应答机制,流量控制采用滑动窗口。在拥塞控制中能采用慢启动,拥塞避免,快重传,快恢复的算法。
问:主机A与主机B存在连接,如何避免产生新的连接?
答:socket成功调用accept()函数就是从链接队列中提取出tcp链接给应用程序使用,这个链接的标志就是一个五元组:tcp ip1 端口1 ip2 端口2。如果要防止建立重复的tcp链接。可以在tcp握手的第一阶段(syn)对比一下有没有重复的五元组应该就行了。
问:http和https的区别?详细讲一下加密的过程
答:http协议采用明文传输的方式,不对数据内容进行加密;而https采用公钥私钥等加密算法对数据报文进行加密,从而提高了数据的安全性。https的加密过程采用了对称加密和非对称加密结合的方式,举个例子如下:
某网站拥有用于非对称加密的公钥A、私钥A’。
浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。
浏览器随机生成一个用于对称加密的密钥X,用公钥A加密后传给服务器。
服务器拿到后用私钥A’解密得到密钥X。
这样双方就都拥有密钥X了,且别人无法知道它。之后双方所有数据都用密钥X加密解密。
另外,https还采用了数字证书进行加密的方法,网站在使用HTTPS前,需要向“CA机构”申请颁发一份数字证书,数字证书里有证书持有者、证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了,证书就如身份证一样,可以证明“该公钥对应该网站”。
问:堆排序的具体内容?为什么是O(NlogN)
答:堆排序分为建堆和插入数据两部分内容,一般讨论的是数据插入后并将数据依次取出的过程称为堆排序。堆排序通过维护一个最大堆或最小堆,每次将数据插入后对堆进行调整。由于堆可以看作是一颗二叉树,因此调整的时间复杂度为O(logN),共需要N次调整,故时间复杂度为O(NlogN)