文章目录
1、Java 中,Comparator 与 Comparable 有什么不同?
Comparable 接口用于定义对象的自然顺序,而 comparator 通常用于定义用户定制的顺序。 Comparable 总是只有一个,但是可以有多个 comparator来定义对象的顺序。
2、为什么在重写 equals 方法的时候需要重写 hashCode方法?
因为很多强制的规范指定需要同时重写 hashcode 与 equals方法,许多容器类、如 HashMap、HashSet 都依赖于hashCode 与 equals的规定。
3、在我 java程序中,我有三个 socket,我需要多少个线程来处理?
这个需要看你是并行处理还是串行处理了。
4、java中怎么创建 ByteBuffer?
byte[] bytes = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(bytes);
5、java 中,编写多线程程序的时候你会遵循哪些最佳实践?
a) 给线程命名,这样可以帮助调试。
b)最小化同步的范围,而不是将整个方法同步,只对关键部分同步。
c)如果可以,更偏向于使用 volatile 而不是 synchronized。
d)使用更高层次的并发工具,而不是用wait() 和 notify() 来实现线程间通信,如 BlockingQueue,CountDownLatch 及 Semeaphore。
e) 优先使用并发集合,而不是对集合进行同步。并发集合提供更好的可扩展性。