破天网站定制,深圳网站设计公司怎么样,网页模版之家,网站后台添加图片显示不了目录
59、我们能自己写一个容器类#xff0c;然后使用 for-each 循环码#xff1f;
60、ArrayList 和 HashMap 的默认大小是多数#xff1f;
61、有没有可能两个不相等的对象有有相同的 hashcode#xff1f;
62、两个相同的对象会有不同的的 hash code 吗#xff1f; …目录
59、我们能自己写一个容器类然后使用 for-each 循环码
60、ArrayList 和 HashMap 的默认大小是多数
61、有没有可能两个不相等的对象有有相同的 hashcode
62、两个相同的对象会有不同的的 hash code 吗
63、我们可以在 hashcode() 中使用随机数字吗
64、Java 中Comparator 与 Comparable 有什么不同
65、为什么在重写 equals 方法的时候需要重写 hashCode 方法
66、Java 中编写多线程程序的时候你会遵循哪些最佳实践
67、说出几点 Java 中使用 Collections 的最佳实践
68、说出 5 条 IO 的最佳实践(答案)
69、说出几条 Java 中方法重载的最佳实践
70、在多线程环境下SimpleDateFormat 是线程安全的吗
71、接口是什么为什么要使用接口而不是直接使用具体类
72、Java 中抽象类与接口之间有什么不同
73、除了单例模式你在生产环境中还用过什么设计模式
74、适配器模式是什么什么时候使用
75、什么是“依赖注入”和“控制反转”为什么有人使用
76、抽象类是什么它与接口有什么区别你为什么要使用过抽象类
77、构造器注入和 setter 依赖注入那种方式更好
78、依赖注入和工程模式之间有什么不同 59、我们能自己写一个容器类然后使用 for-each 循环码 可以你可以写一个自己的容器类。如果你想使用 Java 中增强的循环来遍历你只需要实现 Iterable 接口。如果你实现 Collection 接口默认就具有该属性。 60、ArrayList 和 HashMap 的默认大小是多数 在 Java 7 中ArrayList 的默认大小是 10 个元素HashMap 的默认大小是16 个元素必须是 2 的幂。这就是 Java 7 中 ArrayList 和 HashMap 类的代码片段
// from ArrayList.java JDK 1.7
private static final int DEFAULT_CAPACITY 10;
//from HashMap.java JDK 7
static final int DEFAULT_INITIAL_CAPACITY 1 4; // aka 16 61、有没有可能两个不相等的对象有有相同的 hashcode 有可能两个不相等的对象可能会有相同的 hashcode 值这就是为什么在hashmap 中会有冲突。相等 hashcode 值的规定只是说如果两个对象相等必须有相同的 hashcode 值但是没有关于不相等对象的任何规定。 62、两个相同的对象会有不同的的 hash code 吗
不能根据 hash code 的规定这是不可能的。 63、我们可以在 hashcode() 中使用随机数字吗
http://javarevisited.blogspot.sg/2011/10/override-hashcode-in-java-example.html
不行因为对象的 hashcode 值必须是相同的。参见答案获取更多关于 Java 中重写 hashCode() 方法的知识。 64、Java 中Comparator 与 Comparable 有什么不同 Comparable 接口用于定义对象的自然顺序而 comparator 通常用于定义用户定制的顺序。Comparable 总是只有一个但是可以有多个 comparator 来定义对象的顺序。 65、为什么在重写 equals 方法的时候需要重写 hashCode 方法 因为有强制的规范指定需要同时重写 hashcode 与 equal 是方法许多容器类如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定。 66、Java 中编写多线程程序的时候你会遵循哪些最佳实践 这是我在写 Java 并发程序的时候遵循的一些最佳实践 a给线程命名这样可以帮助调试。 b最小化同步的范围而不是将整个方法同步只对关键部分做同步。 c如果可以更偏向于使用 volatile 而不是 synchronized。 d使用更高层次的并发工具而不是使用 wait() 和 notify() 来实现线程间通信如 BlockingQueueCountDownLatch 及 Semeaphore。 e优先使用并发集合而不是对集合进行同步。并发集合提供更好的可扩展性。 67、说出几点 Java 中使用 Collections 的最佳实践 这是我在使用 Java 中 Collectionc 类的一些最佳实践 a使用正确的集合类例如如果不需要同步列表使用 ArrayList 而不是Vector。 b优先使用并发集合而不是对集合进行同步。并发集合提供更好的可扩展性。 c使用接口代表和访问集合如使用 List 存储 ArrayList使用 Map 存储HashMap 等等。 d使用迭代器来循环集合。 e使用集合的时候使用泛型。 68、说出 5 条 IO 的最佳实践(答案)
IO 对 Java 应用的性能非常重要。理想情况下你不应该在你应用的关键路径上避免 IO 操作。下面是一些你应该遵循的 Java IO 最佳实践
a使用有缓冲区的 IO 类而不要单独读取字节或字符。
b使用 NIO 和 NIO2
c在 finally 块中关闭流或者使用 try-with-resource 语句。
d使用内存映射文件获取更快的 IO。 69、说出几条 Java 中方法重载的最佳实践
下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。
a不要重载这样的方法一个方法接收 int 参数而另个方法接收 Integer 参数。
b不要重载参数数量一致而只是参数顺序不同的方法。
c如果重载的方法参数个数多于 5 个采用可变参数。 70、在多线程环境下SimpleDateFormat 是线程安全的吗 不是非常不幸DateFormat 的所有实现包括 SimpleDateFormat 都不是线程安全的因此你不应该在多线程序中使用除非是在对外线程安全的环境中使用如 将 SimpleDateFormat 限制在 ThreadLocal 中。如果你不这么做在解析或者格式化日期的时候可能会获取到一个不正确的结果。因此从日期、时间处理的所有实践来说我强力推荐 joda-time 库。 71、接口是什么为什么要使用接口而不是直接使用具体类 接口用于定义 API。它定义了类必须得遵循的规则。同时它提供了一种抽象因为客户端只使用接口这样可以有多重实现如 List 接口你可以使用可随机访问的 ArrayList也可以使用方便插入和删除的 LinkedList。接口中不允许写代码以此来保证抽象但是 Java 8 中你可以在接口声明静态的默认方法这种方法是具体的。 72、Java 中抽象类与接口之间有什么不同 Java 中抽象类和接口有很多不同之处但是最重要的一个是 Java 中限制一个类只能继承一个类但是可以实现多个接口。抽象类可以很好的定义一个家族类的默认行为而接口能更好的定义类型有助于后面实现多态机制。 73、除了单例模式你在生产环境中还用过什么设计模式 这需要根据你的经验来回答。一般情况下你可以说依赖注入工厂模式装饰模式或者观察者模式随意选择你使用过的一种即可。不过你要准备回答接下的基于你选择的模式的问题。 74、适配器模式是什么什么时候使用 适配器模式提供对接口的转换。如果你的客户端使用某些接口但是你有另外一些接口你就可以写一个适配去来连接这些接口。 75、什么是“依赖注入”和“控制反转”为什么有人使用 控制反转IOC是 Spring 框架的核心思想用我自己的话说就是你要做一件事别自己可劲 new 了你就说你要干啥然后外包出去就好~依赖注入DI 在我浅薄的想法中就是通过接口的引用和构造方法的表达将一些事情整好了反过来传给需要用到的地方~ 76、抽象类是什么它与接口有什么区别你为什么要使用过抽象类 接口用于规范抽象类用于共性.声明方法的存在而不去实现它的类被叫做抽象类接口interface是抽象类的变体。在接口中所有方法都是抽象的。 77、构造器注入和 setter 依赖注入那种方式更好 每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化但是setter 注入提供更好的灵活性来设置可选依赖。如果使用 XML 来描述依赖Setter 注入的可读写会更强。经验法则是强制依赖使用构造器注入可选依赖使用 setter 注入。 78、依赖注入和工程模式之间有什么不同 虽然两种模式都是将对象的创建从应用的逻辑中分离但是依赖注入比工程模式更清晰。通过依赖注入你的类就是 POJO它只知道依赖而不关心它们怎么获取。使用工厂模式你的类需要通过工厂来获取依赖。因此使用 DI 会比使用工厂模式更容易测试。 要想了解更多
千题千解·Java面试宝典_时光の尘的博客-CSDN博客