几道常见的面试题及详解

1)说说get与post的联系和区别?

get和post本质上都是tcp连接,但由于http协议和浏览器或者服务器的限制,从而使它们在应用过程中产生了差别。

区别的话可以从三个层面来解答:

http报文层面:get将请求信息放在url上,post放在报文体中。

数据库层面:get符合幂等性和安全性,post不符合。

其他层面:get可以被缓存、被存储,而post不行。

参考:

2)浏览器输入URL,回车之后发生了什么?

浏览器会先去检查域名是否在浏览器缓存中,如果浏览器缓存中没有,就会去检查本机的hosts文件。如果hosts文件中也没有,浏览器会向ISP的DNS服务器发送一条DNS查询请求。ISP的DNS服务器找不到的话,就向根域名服务器发送请求。

找到服务器的IP地址之后,接下来客户端会与服务器端进行三次握手,三次握手结束后,就可以开始发送HTTP请求报文,服务器端会处理请求报文并返回HTTP相应报文。浏览器拿到响应文本HTML,浏览器就会进行渲染。

数据传输完毕后,需要断开TCP连接,此时发起TCP四次挥手。

参考:

3)Java中的Object有哪些方法?

69E6vd.md.png

1.equals方法
public boolean equals(Object obj) { 
    return (this ==  obj);
}

该方法用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回true,否则返回false。子类一般都要重写这个方法。

2.getClass方法
public final Class<?> getClass()

getClass方法是一个final方法,不允许子类重写,并且也是一个native方法。返回当前运行时对象的Class对象,注意这里是运行时,比如以下代码中n是一个Number类型的实例,但是java中数值默认是Integer类型,所以getClass方法返回的是java.lang.Integer:

"str".getClass() // class java.lang.String
"str".getClass == String.class // true
Number n = 0;
Class<? extends Number> c = n.getClass(); // class java.lang.Integer
3.hashCode方法
public int hashCode()

该方法主要用于获取对象的散列值。Object中该方法默认返回的是对象的堆内存地址。

4.clone方法
protected  Object clone() throws CloneNotSupportedException

该方法是保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

默认的clone方法是浅拷贝。所谓浅拷贝,指的是只会拷贝引用地址,而不会将引用的对象重新分配内存。深拷贝则是会连引用的对象也重新创建。

5.toString方法
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

返回一个String对象,一般子类都有覆盖。

6.notify方法
public final void notify()

final方法,主要用于唤醒在该对象上等待的某个线程。

7.nottifyAll方法
public final void notifyAll()

final 方法,主要用于唤醒在该对象上等待的所有线程。

8.wait方法
public final void wait(long timeout) throws InterruptedException

一般情况下,wait方法和notify方法会一起使用。wait会阻塞当前线程,notify方法唤醒当前线程。wait方法会让当前线程等待直到另外一个线程调用对象的notify或notifyAll方法,或者超过参数设置的timeout超时时间。

9.finalize方法
protected void finalize() throws Throwable 

该方法是保护方法,主要用于在GC的时候再次被调用。如果我们实现了这个方法,对象可能在这个方法中再次复活,从而避免被GC回收。

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值