JAVA高级工程师面试宝典——基础部分(一)

一、面试题基础总结

1.JVM结构原理、GC工作机制详解

答:

JAVA高级工程师面试宝典——基础部分(一)_第1张图片

类装载器(ClassLoader)(用来装载.class文件)

执行引擎(执行字节码,或者执行本地方法)

运行时数据区(方法区、堆、java栈、PC寄存器、本地方法栈)

说到GC,记住两点:1、GC是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC回收机制的两种算法,a、引用计数法  b、可达性分析算法

年轻代:是所有新对象产生的地方。

年老代:在年轻代中经历了N次回收后仍然没有被清除的对象,就会被放到年老代中,可以说他们都是久经沙场而不亡的一代,都是生命周期较长的对象。

持久代:用于存放静态文件,比如java类、方法等。持久代对垃圾回收没有显著的影响。

 

 

2.Java对象的生命周期

答:创建阶段 、 应用阶段 、不可见阶段 、不可达阶段 、收集阶段 、终结阶段、 对象空间重新分配阶段等等

 

 

3.Map或者HashMap的存储原理

答:HashMap是由数组+链表的一个结构组成

数组存储区间是连续的,占用内存严重数组的特点是:寻址容易,插入和删除困难

链表存储区间离散,占用内存比较宽松链表的特点是:寻址困难,插入和删除容易。

 

 

4.当数据表中A、B字段做了组合索引,那么单独使用A或单独使用B会有索引效果吗?(使用like查询如何有索引效果)

答:看A、B两字段做组合索引的时候,谁在前面,谁在后面,如果A在前,那么单独使用A会有索引效果,单独使用B则没有,反之亦然。同理,使用like模糊查询时,如果只是使用前面%,那么有索引效果,如果使用双%号匹配,那么则无索引效果

 

 

5.数据库存储日期格式时,如何考虑时区转换问题?

答:使用TimeStamp 

 

 

6.Java Object类中有哪些方法?

答:1.所有方法:
getClass()hashCode()equals()toString() clone() wait() notify() notifyAll() finalize()

2.各个方法作用:

clone() 创建并返回此对象的一个副本。 equals(Object obj) 指示某个其他对象是否与此对象“相等”。finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。getClass() 返回一个对象的运行时类。int hashCode() 返回该对象的哈希码值。void notify() 唤醒在此对象监视器上等待的单个线程。void notifyAll() 唤醒在此对象监视器上等待的所有线程。String toString() 返回该对象的字符串表示。void wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。void wait(long timeout) 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。void wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的 notify()

 

 

7.HTTP协议,GET和POST 的区别

答:Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

  1. 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。(1).所谓安全的意味着该操作用于获取信息而非修改信息。(2).幂等的意味着对同一URL的多个请求应该返回同样的结果。
  2. 根据HTTP规范,POST表示可能修改变服务器上的资源的请求

说完原理性的问题,我们再从表面现像上面看看GET和POST的区别

1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连POST把提交的数据则放置在是HTTP包的包体中。

2."GET方式提交的数据最多只能是1024特定的浏览器及服务器对URL它的限制字节,理论上POST没有限制起限制作用的是服务器的处理程序的处理能力)。

3.POST的安全性要比GET的安全性高。

 

 

------------------------------------------------------------------------------

下一篇:JAVA高级工程师面试宝典——线程、设计模式、缓存方面(二)

------------------------------------------------------------------------------

你可能感兴趣的:(高级JAVA工程师面试宝典)