互联网Java工程师面试题·Java 面试篇·第四弹

目录

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() 来实现线程间通信,如 BlockingQueue,CountDownLatch 及 Semeaphore。

e)优先使用并发集合,而不是对集合进行同步。并发集合提供更好的可扩展性。


67、说出几点 Java 中使用 Collections 的最佳实践

这是我在使用 Java 中 Collectionc 类的一些最佳实践&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值