如何删除一个链表节点?

如何删除一个链表节点?

面试时的老问题了,考考对链表的理解,似乎没有什么好说的。很多同学一听这个问题,马上就能反应过来:从头开始遍历删除,时间复杂度O(n),下一题,请。

这样回答证明你还是懂一点链表知识的,差不多就行了。但是,我个人觉得这是一个开放性题目。如果我是面试官,我希望回答者能想到各种情景,或者询问追加条件,给他更多展示的机会。

“如何删除一个链表节点?”其实也算是一个需求,有需求就必须先理解再动手,不仅应该搞清楚“我”想怎么删,最好能给出几个删除的解决方案让“我”选择,并且详解利弊,这才能拿到满分。

继续阅读如何删除一个链表节点?

java Unsafe,修正以前的一个错误认识

java Unsafe,修正以前的一个错误认识

最近看到这样一个问题:“在java中,可以不调用构造方法得到一个对象吗?”

当时我是这样思考的:“现在我想得到一个对象,我可以自己创建(new、反射newInstance),也可以clone一个现有的对象。new和反射都会调用类的构造方法,所以答案就剩下clone了。”

这个回答当然是对的,但是不完整。因为我漏掉了创建对象的第四种方式——Unsafe。

继续阅读java Unsafe,修正以前的一个错误认识

使用事件驱动的简单例子(观察者模式)

使用事件驱动的简单例子(观察者模式)

假设你正在开发一个博客系统。现在有这样一个需求:“当作者创建(写完并保存)、修改、删除了一篇文章后,发邮件通知博主,并且对文章进行索引和评分”。你会怎么做呢?

实际上,这就是“达到什么什么条件,就做什么什么”的场景。完全可以用设计模式来解耦。

参考:https://blog.csdn.net/hackxiaof/article/details/51690201

继续阅读使用事件驱动的简单例子(观察者模式)