摘要:
面试题 如何权衡是使用无序的数组还是有序的数组? 有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n)。 有序数组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位置。 相反,无序数组的插入时间复杂度是常量O(1)。 阅读全文
摘要:
面试题 你了解大O符号(big-O notation)么?你能给出不同数据结构的例子么? 大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是一个渐进上界 。 大O符号也可用来描述其他的行为,比如:内存消耗。因为集合类实际上是数据结构,我们一般使用大O符号基于时间,内存和性能来选择最好的实 阅读全文
摘要:
面试题 Comparable和Comparator接口是干什么的?列出它们的区别。 Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以给两个对象排序。 具体来说,它返回负数,0,正数来表明已经存在的对象小于,等于,大于输入对象。 Java提供了包含compar 阅读全文
摘要:
面试题 数组(Array)和列表(ArrayList)有什么区别? Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。 Array大小是固定的,ArrayList的大小是动态变化的。 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),i 阅读全文
摘要:
面试题 Java中的HashMap的工作原理是什么? Java中的HashMap是以键值对(key-value)的形式存储元素的。 HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。 当调用put()方法的时候,HashMap会计算k 阅读全文