- 主题:现在Java面试都是什么样的问题?要手写红黑树了吗?
一、手写红黑树。(100分)
1. 红黑树Node的定义和Tree的定义。(20分)
class Node { // 请填空 }
class RBTree { // 请填空 }
2. 红黑树的查找。(20分)
// 同普通二叉树的查找。
3. 红黑树的修改。(20分)
// 同普通二叉树的修改。(只改value不改key)
4. 红黑树的增加。(20分)
5. 红黑树的删除。(20分)
额~ 4和5我不会,这样可以60分及格吗?
--
修改:PlutoKey FROM 111.55.204.*
FROM 111.55.204.*
这么离谱的嘛
--
FROM 222.72.112.*
第一个ds
第二个豆包
第三个通义
,,
【 在 PlutoKey 的大作中提到: 】
: 一、手写红黑树。(100分)
: 1. 红黑树Node的定义和Tree的定义。(20分)
: class Node { // 请填空 }
: ...................
--
FROM 119.80.6.*
现在Java还有面试机会?
【 在 PlutoKey 的大作中提到: 】
: 一、手写红黑树。(100分)
: 1. 红黑树Node的定义和Tree的定义。(20分)
: class Node { // 请填空 }
: ...................
--
FROM 103.149.83.*
还是最火
【 在 Xjt 的大作中提到: 】
: 现在Java还有面试机会?
--
FROM 119.80.6.*
红黑树已经 out 啦,
来写 b 树吧!
我觉得各种编程语言,都应该使用 B 树代码红黑树作为标准库默认的 MAP 实现。
Java 的对象都是持有引用,按说用 B 树的实现在大多数场景下都会更高效。
【 在 PlutoKey 的大作中提到: 】
: 一、手写红黑树。(100分)
: 1. 红黑树Node的定义和Tree的定义。(20分)
: class Node { // 请填空 }
: ...................
--
修改:hgoldfish FROM 27.152.52.*
FROM 27.152.52.*
real is reasonable. 存在即是合理。
每一种算法都有它存在的理由。
比如哈希表的实现,碰撞处理:
Python使用开放寻址法(二次探测),Java使用链接法(链表+红黑树)。
Python的开放寻址法的内存局部性好,CPU Cache命中率高,没有内存碎片化的问题,没有GC压力。
Java就相反,它假设自己内存无限,大不了stop the world,至于性能不性能的就无所谓,要性能就用不着Java了.
比如冒泡排序:
很多人说冒泡排序一无是处。
在数据集是正太分布、均匀分布的情况下,冒泡排序最差;
但是真实数据往往是帕雷托分布,而且数据大致有序,这样在数据不大的情况下,冒泡排序反而比快速排序之类的快。(假设冒泡采用了提前终止优化)
B树、B+树适合文件系统,减少磁盘访问次数。
【 在 hgoldfish 的大作中提到: 】
: 红黑树已经 out 啦,
: 来写 b 树吧!
: 我觉得各种编程语言,都应该使用 B 树代码红黑树作为标准库默认的 MAP 实现。
: ...................
--
修改:PlutoKey FROM 111.55.204.*
FROM 111.55.204.*
其实正常
--
FROM 36.143.107.*