JAVA高级工程师面试宝典——Java底层(八)

八、Java底层基础题

1.SpringMVC的原理以及返回数据如何渲染到jsp/html上?

答:Spring MVC的核心就是 DispatcherServlet , 一个请求经过 DispatcherServlet ,转发给HandlerMapping ,然后经反射,对应 Controller及其里面方法的@RequestMapping地址,最后经ModelAndView和ViewResoler返回给对应视图 

 

 

2.一个类对象属性发生改变时,如何让调用者知道?

答:Java event时间监听  ,即在set方法改变属性时,触发 ,这种模式也可以理解为观察者模式

 

 

3.重写equals为何要重写hashCode?

答:判断两个对象是否相等,比较的就是其hashCode, 如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。  hashcode不一样,就无法认定两个对象相等了

 

 

4.谈谈你对JVM的理解?

答: Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。Java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

JVM执行程序的过程 :I.加载。class文件   ,II.管理并分配内存  ,III.执行垃圾收集

JRE(java运行时环境)由JVM构造的java程序的运行环境 

 

 

5.Mysql的事物隔离级别?

答:Mysql的事物隔离级别 其实跟 Spring的事物隔离级别一样,都是1、Read Uncommitted(读取未提交内容), 2、Read Committed(读取提交内容),3、Repeatable Read(可重读),4、Serializable(可串行化)

 

6.Spring的原理

答:Spring的核心是IOC和AOP  ,IOC是依赖注入和控制反转, 其注入方式可分为set注入、构造器注入、接口注入等等。IOC就是一个容器,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。简单理解就是:JAVA每个业务逻辑处理至少需要两个或者以上的对象协作进行工作,但是每个对象在使用它的合作对象的时候,都需要频繁的new 对象来实现,你就会发现,对象间的耦合度高了。而IOC的思想是:Spring容器来管理这些,对象只需要处理本身业务关系就好了。至于什么是控制反转,就是获得依赖对象的方式反转了。
AOP呢,面向切面编程,最直接的体现就是Spring事物管理。

 

7.谈谈你对NIO的理解

答:IO是面向流,NIO是面向缓冲

IO NIO
面向流 面向缓冲
阻塞IO 非阻塞IO
选择器

 

 

8.ArrayList和LinkedList、Vector的区别?

答:总得来说可以理解为:.

     1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
     2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
     3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据

Vector和ArrayList类似,但属于强同步类,即线程安全的

 

 

9.随便说说几个单例模式,并选择一种线程安全的

答:单例的类别:懒汉、饿汉、枚举、静态内部类、双重校验锁 等等 , 选择线程安全我选最后一种,双重校验锁。

 

10.谈谈红黑树

 

11.举例说说几个排序,并说明其排序原理

答:日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。

 

12.Mysql索引的原理

 

13.序列化的原理和作用

答:Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程,主要用于HTTP或者WebService接口传输过程中对象参数的传播

 

 

 

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

上一篇:JAVA高级工程师面试宝典——数据库方面(七)

下一篇:JAVA高级工程师面试宝典——设计方案相关(九)

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

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