Java面试题解读——算法与数据结构
奶糖非糖
听天命,尽人事
展开
-
哈希——hashset 存的数是有序的吗
参考回答: Hashset 是无序的。解读:什么事hashset。hashset储存的是唯一的对象,没有下标,只能通过增强for,或者迭代器进行遍历。当出现相同的对象,会合并,只储存一个空间。Iterator<news> it=set.iterator();while(it.hasNext()){ News n=it.next(); }------------------...原创 2019-07-16 20:21:00 · 4231 阅读 · 0 评论 -
树——如何实现二叉树的深度?
考察点:二叉树参考回答: 实现二叉树的深度方式有两种,递归以及非递归。①递归实现: 为了求树的深度,可以先求其左子树的深度和右子树的深度,可以用递归实现,递归的出口 就是节点为空。返回值为 0;②非递归实现: 利用层次遍历的算法,设置变量 level 记录当前节点所在的层数,设置变量 last 指向当前 层的最后一个节点,当处理完当前层的最后一个节点,让 level 指向+1 操作。设置变量...原创 2019-07-17 23:11:04 · 393 阅读 · 0 评论 -
树——二叉树任意两个节点之间路径的最大长度
考察点:树参考回答:int maxDist(Tree root) { //如果树是空的,则返回 0 if(root == NULL) return 0; if(root->left != NULL) { root->lm = maxDist(root->left) + 1; } if(root->right != NULL) root-&g...原创 2019-07-17 23:02:18 · 3994 阅读 · 2 评论 -
哈希——怎么求一个二叉树的深度?手撕代码?
考察点:二叉树参考回答:public int maxDepth(TreeNode root) { if (root == null) { return 0; } int left = maxDepth(root.left); int right = maxDepth(root.right); int bigger = Math.max(left, right); re...原创 2019-07-17 20:39:09 · 120 阅读 · 0 评论 -
树——算法题:二叉树层序遍历,进一步提问:要求每层打印出一个换行符
考察点:二叉树参考回答:public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); LinkedList<TreeNode> queue ...原创 2019-07-17 20:37:48 · 356 阅读 · 0 评论 -
树——说一下 B+树和 B-树?
考察点:树参考回答: b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”; b+树查询必须查找到叶子节点,b- 树只要匹配到即可不用管元素位置,因此 b+树查找更稳定 (并不慢); 对于范围查找来说,b+树只需遍历叶子节点链表即可,b- 树却需要重复地中序遍历。理解:1.什么是B-树:B树也叫B-树,是一棵多路平衡查找树。描述B树使用阶树m,表示了他最多有多少孩子结点,一个...原创 2019-07-17 11:10:22 · 347 阅读 · 0 评论 -
哈希——hashCode()和 equals()方法的重要性体现在什么地方?
考察点:JAVA 哈希表参考回答: Java 中的 HashMap 使用 hashCode()和 equals()方法来确定键值对的索引,当根据键获取值 的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个不同的键可能会有相同的 hash 值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这 两个方法的实现对 HashMap 的精确性和正确性是至关重要的。理解...原创 2019-07-17 08:24:42 · 302 阅读 · 0 评论 -
哈希——Java 中的 HashMap 的工作原理是什么?
考察点:JAVA 哈希表参考回答: HashMap 类有一个叫做 Entry 的内部类。这个 Entry 类包含了 key-value 作为实例变量。每 当往 hashmap 里面存放 key-value 对的时候,都会为它们实例化一个 Entry 对象,这个 Entry 对象就会存储在前面提到的 Entry 数组 table 中。Entry 具体存在 table 的那个位置是 根据 key 的...原创 2019-07-16 23:26:58 · 123 阅读 · 0 评论 -
哈希——什么是 hashmap?
考察点:哈希表参考回答: HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于 AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null。此 外,HashMap 中的映射不是有序的。Has...原创 2019-07-16 23:18:59 · 366 阅读 · 0 评论 -
哈希——一致性哈希算法
考察点:哈希算法参考回答: 先构造一个长度为 2^32 的整数环(这个环被称为一致性 Hash 环),根据节点名称的 Hash 值(其分布为[0, 2^32-1])将服务器节点放置在这个 Hash 环上,然后根据数据的 Key 值计算得 到其 Hash 值(其分布也为[0, 2^32-1]),接着在 Hash 环上顺时针查找距离这个 Key 值的 Hash 值最近的服务器节点,完成 Key 到服...原创 2019-07-16 23:04:10 · 120 阅读 · 0 评论 -
哈希——Object 作为 HashMap 的 key 的话,对 Object 有什么要求吗?
考察点:哈希表参考回答: 要求 Object 中 hashcode 不能变。解读: 什么是hashcode。Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap、Hashtable哈希表存取对象的使用效率。关于Object对象...原创 2019-07-16 20:28:13 · 2455 阅读 · 0 评论 -
树——TreeMap 和 TreeSet 在排序时如何比较元素?Collections 工具类中的 sort() 方法如何比较元素?
考察点:Tree参考回答: TreeSet 要求存放的对象所属的类必须实现 Comparable 接口,该接口提供了比较元素的 compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap 要求存放的键值对映 射的键必须实现 Comparable 接口从而根据键对元素进行排序。Collections 工具类的 sort 方法 有两种重载的形式,第一种要求传入的待排序容器中存...原创 2019-07-17 23:26:32 · 239 阅读 · 0 评论