Java面试知识点整理
2017-09-03 09:17
543 查看
今天看了Java程序员面试,基础真的很重要这篇文章,忽然想将前面的小知识点整理下,自己学过的忘得差不多了。
J2SE基础
1. 九种基本数据类型的大小,以及他们的封装类。
2. Switch能否用string做参数?
3. equals与==的区别。
4. Object有哪些公用方法?
5. Java的四种引用,强弱软虚,用到的场景。
6. Hashcode的作用。
7. ArrayList、LinkedList、Vector的区别。
8. String、StringBuffer与StringBuilder的区别。
9. Map、Set、List、Queue、Stack的特点与用法。
10. HashMap和HashTable的区别。
11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
12. TreeMap、HashMap、LindedHashMap的区别。
13. Collection包结构,与Collections的区别。
14. try catch finally,try里有return,finally还执行么?
15. Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况。
16. Java面向对象的三个特征与含义。
17. Override和Overload的含义去区别。
18. Interface与abstract类的区别。
19. Static class 与non static class的区别。
20. java多态的实现原理。
21. 实现多线程的两种方法:Thread与Runable。
22. 线程同步的方法:sychronized、lock、reentrantLock等。
23. 锁的等级:方法锁、对象锁、类锁。
24. 写出生产者消费者模式。
25. ThreadLocal的设计理念与作用。
26. ThreadPool用法与优势。
27. Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。
28. wait()和sleep()的区别。
29. foreach与正常for循环效率对比。
30. Java IO与NIO。
31. 反射的作用于原理。
32. 泛型常用特点,List能否转为List。
33. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
34. Java与C++对比。
35. Java1.7与1.8新特性。
36. 设计模式:单例、工厂、适配器、责任链、观察者等等。
37. JNI的使用。
1.
到底void算不算第九种,待定
2.
jdk1.7后可以用string类型作为switch参数
jdk1.7 String switch的实现
3.
“equals”:
确定两个对象的引用是否相同(原意)
两个对象是否同类且同内容(jdk中很多类覆盖了equals方法)
“==”:
基本数据类型的值是否相等
引用是否指向内存中的同一对象
4.
Object的公用方法(摘自here):
5.
Java的四种引用:
强引用:普通变量的使用是强引用,强引用有引用变量指向时永远不会被垃圾回收
弱引用:进行垃圾回收时,会回收弱引用关联的对象
软引用:进行垃圾回收时,如果内存不足,会回收软引用关联的对象
虚引用:虚引用不会决定对象的生命周期,就和没有引用一样,随时可能会被垃圾回收
(引用队列……)
6.
Hashcode的作用(摘自冯立彬的博客讲解的很清楚):
以上这段官方文档的定义,我们可以抽出成以下几个关键点:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(Java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
7.
1.
String:不可变类
StringBuffer、StringBuilder:可变类
String类型的字符串是字符串常量,我们平常对于String类型的操作都是创建了新的String对象;而StringBuffer、StringBuilder类型的字符串是字符串变量,单纯操作字符串的时候没有新的对象生成
2.
StringBuffer:线程安全(synchronized关键字修饰)
StringBuilder:非线程安全
关于synchronized关键字,可以查看http://blog.csdn.net/luoweifu/article/details/46613015
3.
StringBuilder比StringBuffer快,而且大多数情况都是用在单线程情况,所以还是用StringBuilder比较多
8.
1.
HashMap:非线程安全
HashTable:线程安全(synchronized关键字修饰)
2.
HashMap允许有null的键、值,而HashTable键、值都不允许为null
3.
HashMap比HashTable快
9.
J2SE基础
1. 九种基本数据类型的大小,以及他们的封装类。
2. Switch能否用string做参数?
3. equals与==的区别。
4. Object有哪些公用方法?
5. Java的四种引用,强弱软虚,用到的场景。
6. Hashcode的作用。
7. ArrayList、LinkedList、Vector的区别。
8. String、StringBuffer与StringBuilder的区别。
9. Map、Set、List、Queue、Stack的特点与用法。
10. HashMap和HashTable的区别。
11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
12. TreeMap、HashMap、LindedHashMap的区别。
13. Collection包结构,与Collections的区别。
14. try catch finally,try里有return,finally还执行么?
15. Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况。
16. Java面向对象的三个特征与含义。
17. Override和Overload的含义去区别。
18. Interface与abstract类的区别。
19. Static class 与non static class的区别。
20. java多态的实现原理。
21. 实现多线程的两种方法:Thread与Runable。
22. 线程同步的方法:sychronized、lock、reentrantLock等。
23. 锁的等级:方法锁、对象锁、类锁。
24. 写出生产者消费者模式。
25. ThreadLocal的设计理念与作用。
26. ThreadPool用法与优势。
27. Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。
28. wait()和sleep()的区别。
29. foreach与正常for循环效率对比。
30. Java IO与NIO。
31. 反射的作用于原理。
32. 泛型常用特点,List能否转为List。
33. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
34. Java与C++对比。
35. Java1.7与1.8新特性。
36. 设计模式:单例、工厂、适配器、责任链、观察者等等。
37. JNI的使用。
1.
到底void算不算第九种,待定
基本类型 | 字节大小 | 最大存储数据量 | 数据范围 | 封装类 |
---|---|---|---|---|
void | - | - | - | Void |
boolean | 1(sure?) | 2 | true/false | Boolean |
byte | 1 | 255 | -2^7~2^7-1 | Byte |
short | 2 | 65536 | -2^15~2^15-1 | Short |
char | 2 | 65536(Unicode编码) | 0~2^16-1 | Character |
int | 4 | 2^32-1 | -2^31~2^31-1 | Integer |
long | 8 | 2^64-1 | -2^63~2^63-1 | Long |
float | 4 | - | 3.4e-45~1.4e38(精度) | Float |
double | 8 | - | 4.9e-324~1.8e308(精度) | Double |
jdk1.7后可以用string类型作为switch参数
jdk1.7 String switch的实现
3.
“equals”:
确定两个对象的引用是否相同(原意)
两个对象是否同类且同内容(jdk中很多类覆盖了equals方法)
“==”:
基本数据类型的值是否相等
引用是否指向内存中的同一对象
4.
Object的公用方法(摘自here):
Object是所有类的父类,任何类都默认继承Object。 clone 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常 equals 在Object中与==是一样的,子类一般需要重写该方法 hashCode 该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到 getClass final方法,获得运行时类型 wait 使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。 调用该方法后当前线程进入睡眠状态,直到以下事件发生: 1. 其他线程调用了该对象的notify方法 2. 其他线程调用了该对象的notifyAll方法 3. 其他线程调用了interrupt中断该线程 4. 时间间隔到了 此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常 notify 唤醒在该对象上等待的某个线程 notifyAll 唤醒在该对象上等待的所有线程 toString 转换成字符串,一般子类都有重写,否则打印句柄
5.
Java的四种引用:
强引用:普通变量的使用是强引用,强引用有引用变量指向时永远不会被垃圾回收
弱引用:进行垃圾回收时,会回收弱引用关联的对象
软引用:进行垃圾回收时,如果内存不足,会回收软引用关联的对象
虚引用:虚引用不会决定对象的生命周期,就和没有引用一样,随时可能会被垃圾回收
(引用队列……)
6.
Hashcode的作用(摘自冯立彬的博客讲解的很清楚):
以上这段官方文档的定义,我们可以抽出成以下几个关键点:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(Java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
7.
1.
String:不可变类
StringBuffer、StringBuilder:可变类
String类型的字符串是字符串常量,我们平常对于String类型的操作都是创建了新的String对象;而StringBuffer、StringBuilder类型的字符串是字符串变量,单纯操作字符串的时候没有新的对象生成
2.
StringBuffer:线程安全(synchronized关键字修饰)
StringBuilder:非线程安全
关于synchronized关键字,可以查看http://blog.csdn.net/luoweifu/article/details/46613015
3.
StringBuilder比StringBuffer快,而且大多数情况都是用在单线程情况,所以还是用StringBuilder比较多
8.
1.
HashMap:非线程安全
HashTable:线程安全(synchronized关键字修饰)
2.
HashMap允许有null的键、值,而HashTable键、值都不允许为null
3.
HashMap比HashTable快
9.
相关文章推荐
- java面试知识点整理之web系列
- 中高级JAVA面试知识点(个人整理)
- java面试知识点整理之java基础
- java基础知识点、面试选择题归纳整理
- [Java笔试面试知识点自整理系列]HashMap,HashTable的区别
- [Java笔试面试知识点自整理系列]Struts1与Struts2的区别
- Java面试知识点整理
- Java面试知识点整理(一)
- java面试知识点整理之扩展系列
- 面试题库整理:java基础面试知识点
- Java面试知识点整理
- [Java笔试面试知识点自整理系列]Java线程中run和start方法的区别
- java面试笔试题整理
- 【Java】入门知识点整理-3
- JVM知识点总览-中高级Java工程师面试必备
- JVM知识点总览-中高级Java工程师面试必备
- JAVA 面试整理,面试汇总
- Java基础------知识点整理(二)
- Java 面试/笔试题神整理 [Java web and android]
- java面试知识点汇总2