几道常见的面试题及详解

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回收。

参考:

已标记关键词 清除标记
相关推荐
<p> <b><span style="font-size:14px;"></span><span style="font-size:14px;background-color:#FFE500;">【Java面试宝典】</span></b><br /> <span style="font-size:14px;">1、68讲视频课,500道大厂Java常见面试题+100个Java面试技巧与答题公式+10万字核心知识解析+授课老师1对1面试指导+无限次回放</span><br /> <span style="font-size:14px;">2、这门课程基于胡书敏老师8年Java面试经验,调研近百家互联网公司及面试官的问题打造而成,从筛选简历和面试官角度,给出能帮助候选人能面试成功的面试技巧。</span><br /> <span style="font-size:14px;">3、通过学习这门课程,你能系统掌握Java核心、数据库、Java框架、分布式组件、Java简历准备、面试实战技巧等面试必考知识点。</span><br /> <span style="font-size:14px;">4、知识点+项目经验案例,每一个都能做为面试的作品展现。</span><br /> <span style="font-size:14px;">5、本课程已经在线下的培训课程中经过实际检验,老师每次培训结束后,都能帮助同学们运用面试技巧,成功找到更好的工作。</span><br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><b>【超人气讲师】</b></span><br /> <span style="font-size:14px;">胡书敏 | 10年大厂工作经验,8年Java面试官经验,5年线下Java职业培训经验,5年架构师经验</span><br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><b>【报名须知】</b></span><br /> <span style="font-size:14px;">上课模式是什么?</span><br /> <span style="font-size:14px;">课程采取录播模式,课程永久有效,可无限次观看</span><br /> <span style="font-size:14px;">课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化</span><br /> <br /> <br /> <span style="font-size:14px;background-color:#FFE500;"><strong>如何开始学习?</strong></span><br /> <span style="font-size:14px;">PC端:报名成功后可以直接进入课程学习</span><br /> <span style="font-size:14px;">移动端:<span style="font-family:Helvetica;font-size:14px;background-color:#FFFFFF;">CSDN 学院APP(注意不是CSDN APP哦)</span></span> </p>
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页