Java工程师面试题

xiaoxiao2021-02-28  8

1. ArrayList , Vector , LinkedList 的对比。

 ArrayList LinkedListVector数据结构动态数组双向链表动态数组线程安全性

线程不安全,只适用于单线程 ,需要提供外部同

List list = Collections.synchronizedList(new ArrayList());

线程不安全,只适用于单线程 ,需要提供外部同步 List list = Collections.synchronizedList(new ArrayList());线程安全,每个方法都实现了synchronized关键字,不需要提供外部同步,适用于多线程环境适用场合适用于get、set、按顺序add操作适用于add、delete操作 遍历方法

索引值遍历最

for(int i=0;i<list.size();i++){

   list.get(i);   

}

迭代器遍历最快

Iterator iter=list.Iterator();

while(iter.hasNext()){

     iter.next()

}

 

2.什么是单例模式(Singleton) ? 请在下面写出一个单例模式类,并支持多线程调用。

  创建某类对象时,无论创建多少次该类对象只有一份在内存中,这就是单例模式。

  支持多线程调用,考虑线程安全,只需要加锁即可。

3.请描述一下JVM加载class文件的原理机制?

 JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

4.请谈谈对SQL注入的理解,请给出你知道的防止SQL注入的方法。

 解决办法:a. 利用Javascript,在客户端进行校验 b.程序判断 c.使用PreparedStatement连接数据库。(参数化) d.利用框架技术

5.请谈谈对Hibernate的理解,并简要叙述Hibernate的一级缓存和二级缓存。

一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,hibernate直接从一级缓存中拿,而不会再去连数据库取数据

二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库取数据

转载请注明原文地址: https://www.6miu.com/read-2000047.html

最新回复(0)