面试凉经

10.26面试总环节

1.手写单例模式(懒汉式)

public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
    public static Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}

(饿汉式)

public class Singleton{
 privte static Singleton instance=new Singleton();
 private Singleton (){}
 public static Singleton getInstance(){
 return instance;
 }
}

2.简述笛卡尔积和,等值连接,自然连接的区别

等值连接中有笛卡尔积运算;
自然连接是一种等值连接,它是两个关系中所有公共属性进行等值连接的结果。

等值连接,自然连接的区别:
等值连接不要求两个关系中进行比较的分量是相同的属性组,而只要可以进行相
等比较即可,是从行进行的一种运算。而自然连接要求两个关系中进行比较的分量必须是相
同的属性组,并且在结果中把重复的属性列去掉,是从行和列进行的一种运算。
联系:等值连接是关系的广义笛卡尔积的子集。自然连接是一种特殊的等值连接。即两
者都是两个关系连接之后的产物。

3.在浏览器中输入一个网址它的运行过程是怎样的?

1、查询 DNS,获取域名对应的 IP。
(1)检查浏览器缓存、检查本地 hosts 文件是否有这个网址的映射,如果有,就调用这个 IP 地址映射,解析完成。
(2)如果没有,则查找本地 DNS 解析器缓存是否有这个网址的映射,如果有,返回映射,解 析完成。
(3)如果没有,则查找填写或分配的首选 DNS 服务器,称为本地 DNS 服务器。服务器接收到 查询时: 如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束 如果要查询的域名不由本地 DNS 服务器区域解析,但服务器缓存了此网址的映射关系,返回 解析结果,查询结束
(4)如果本地 DNS 服务器也失效: 如果未采用转发模式(迭代),本地 DNS 就把请求发至 13 台根 DNS,根 DNS 服务器收到请求后, 会判断这个域名(.com) 是谁来授权管理,并返回一个负责该顶级域名服务器的 IP,本地 DNS 服务器收到顶级域名服务器 IP 信息后,继续向该顶级域名服务器 IP 发送请求,该服务器如 果无法解析,则会找到负责这个域名的下一级 DNS 服务器(如 http://baidu.com) 的 IP 给本地DNS 服务器,循环往复直至查询到映射,将解析结果返回本地 DNS 服务器,再由本地 DNS 服务器返回解析结果,查询完成。 如果采用转发模式(递归),则此 DNS 服务器就会把请求转发至上-一级 DNS 服务器,如果上 一级 DNS 服务器不能解析,则继续向上请求。最终将解析结果依次返回本地 DNS 服务器, 本地 DNS 服务器再返回给客户机,查询完成。
2、得到目标服务器的 IP 地址及端口号(http 80端口,https 443 端口),会调用系统库函数 socket, 请求一个 TCP 流套接字。
客户端向服务器发送 HTTP 请求报文:
(1) 应用层:客户端发送 HTTP 请求报文。
(2)传输层: (加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务 器建立起一个 TCP 连接。
(3) 网络层: (加入 IP 头) 路由寻址。
(4)数据链路层: (加入 frame 头) 传输数据。
(5)物理层:物理传输 bit。
3、服务器端经过物理层>数据链路层→网络层→传输层→应用层,解析请求报文,发送 HTTP 响应报文。
4、关闭连接,TCP 四次挥手。
5、客户端解析 HTTP 响应报文,浏览器开始显示 HTML

4.算法题
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
public int[] twoSum1(int[] nums, int target) {
    for (int i = 0; i < nums.length - 1; i++) {
        for (int j = i + 1; j < nums.length; j++) {
            if (nums[j] == target - nums[i]) {
                return new int[] {i, j};
            }
        }
    }
    return new int[]{0,0};
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值