您的位置:首页 > 职场人生

java基础笔试面试题答案

2018-02-23 11:30 573 查看
1 String,StringBuffer,StringBuilder的区别String 字符串常量 线程安全 操作少量数据
StringBuffer 字符串变量 线程安全 操作大量数据 速度慢 多线程适合用
StringBuilder 字符串变量 线程不安全 操作大量数据 速度快 单线程适合用2.override(重写)和overload(重载)区别方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现;
重写是父类与子类之间多态性的一种表现,重载是一类中多态性的一种表现。3.String str = new String("xyz");创建了几个对象。如果String常量池中,已经创建了"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
如果String常量池中没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象是new String("xyz");4.说几个你常见到的异常。



Throwable是所有异常的根,java.lang.Throwable
Error是错误,java.lang.Error
Exception是异常,java.lang.Exception
一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。
NullPointerException 空指针异常
ArithmeticException 除0异常
ClassCastException 类型转换
ArrayIndexOutOfBoundsException 数组越界异常5.hashtable和hashmap的区别是什么?



6.hashmap的底层实现方式是什么?HashMap是一个“链表的数组”的数据结构,每个元素存放链表头结点的数组,即数组和链表的结合体。7.Vector , ArrayList 和LinkedList的区别?1、Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。
2、Vector线程同步,ArrayList、LinkedList线程不同步。
3、LinkedList适合指定位置插入、删除操作,不适合查找;ArrayList、Vector适合查找,不适合指定位置的插入、删除操作。
4、ArrayList在元素填满容器时会自动扩充容器大小的50%,而Vector则是100%,因此ArrayList更节省。8.怎么遍历一个map?写一下。public class Collection_Map {
public static void main(String[] args) {
Map<String, Student> hm = new HashMap<String,Student>();
Student stu1 = new Student(1,"MapTom");
Student stu2 = new Student(2,"MapJack");
Student stu3 = new Student(3,"MapKoby");
hm.put("1", stu1);
hm.put("2", stu2);
hm.put("3", stu3);
/*第一种 先将map对象转成set,然后再转为迭代器*/
Iterator<Entry<String, Student>> it = hm.entrySet().iterator();
while (it.hasNext()) {
//System.out.println(it.next().getKey());
System.out.println(it.next().getValue().getName());
}
/*第二种 先将map转为set类型的key值集合,然后转为迭代器*/
Iterator<String> it2 = hm.keySet().iterator();
while(it2.hasNext()){
/* System.out.println(it2.next());*/
System.out.println(hm.get(it2.next()).getName());
}
/*第三种*/
for(Map.Entry<String, Student> entry : hm.entrySet()){
String key = entry.getKey();
String value = entry.getValue().getName();
System.out.println(value);
}
/*第四种*/
for(String key : hm.keySet()){
System.out.println(hm.get(key).getName());
}
}
}
9.说一下list,set,map的区别。List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的
HashCode决定的,其位置其实是固定的)

10.至少说五点interface和abstract的区别。1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类。
2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的。
3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量。
4.接口的方法都是public的,抽象类的方法可以是public,protected,private或者默认的package;
5.抽象类可以定义构造函数,接口却不能。 11.怎么把数组放到对象里面? public static void main(String[] args) {
Integer[] arr = {1, 2, 3, 4, 5, 6};
List<Integer> list = new ArrayList<Integer>();
for (Integer i : arr) {
list.add(i);
}
}12.给你一组字符串如:7i8hy4jjnb2.让你编程输出里面的数字:7842. public static String isNumeric(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char j = str.charAt(i);
if (Character.isDigit(j)) {
sb.append(String.valueOf(j));
}
}
return sb.toString();
}13.java类实现序列化有几种实现方式?都是什么?(二种)实现接口Serializable
实现接口Externalizable提示:对象的序列化就是将对象写入输出流中。反序列化就是从输入流中将对象读取出来。

14.java开发中“==” 和 “equals” 有何区别?equals()是个方法,继承类Object
== 是个运算符,表示内存地址是否相同
==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 15.static局部变量与全局变量的区别,编译后映射文件是否包含此类变量的地址。static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: