【java】面试题,
【java】面试题,
整理一下应聘实习生时遇到的面试题:
一、: 考的是ArrayList和LinkedList 和Vector的区别
一般大家都知道ArrayList和LinkedList的大致区别:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
ArrayList的查询效率比较高,增删动作的效率比较差,适用于查询比较频繁,增删动作较少的元素管理的集合。
LinkedList的查询效率低,但是增删效率很高。适用于增删动作的比较频繁,查询次数较少的元素管理集合。
两种线程都不安全
vector 也是通过数组实现的。但是他支持线程的同步。他的线程是安全的、
二、: 考的是单例模式
1 懒汉模式(类加载时不初始化)
package Singleton;
public class lanhan {
//懒汉式单例模式
//比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
private static lanhan l=null;
private lanhan(){}
public static synchronized lanhan getlanhan() //静态,同步,公开访问点
{
if(l == null)
{
l = new lanhan();
}
return l;
}
}
2 饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快) 这个线程是安全的
package Singleton;
public class EagerSingleton {
//饿汉单例模式
//在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化
private EagerSingleton()
{
//私有构造函数
}
public static EagerSingleton getInstance() //静态,不用同步(类加载时已初始化,不会有多线程的问题)
{
return instance;
}
}
三、
1、
public class bb {
public static void main(String[] args) {
String a = "1";
f(a);
System.out.println(a);
}
public static void f (String str){
str = str + "2";
}
}
答: 输出是1
2、
class bb {
public static void main(String[] args) {
}
public float getNum(){return 3.0f;}
public class Sub extends bb{
** public void getNum(){}
}
}
答:*号行,是错误的。 不可以这么写
相关文章
- 暂无相关文章
用户点评