面试马后炮——写一个无入侵业务代码的锁

        最近参加面试,在最后阶段,面试官要求写一个无入侵业务代码的分布式锁。我当时能想到的方案是基于自定义注解和AOP,不过这不是面试官想要的答案,他甚至已经给出了关键性的提示:用模板模式。怎奈CPU已经在之前一小时的拷问下变得有点儿发烫了,所以即使给出了提示,也没能想到如何用模板来处理这个问题,但基于一个程序员最后的本能,那个隐约的想法在沸腾的脑浆中忽隐忽现,可最终还是没能抓住它。。。

        面试结束不到5分钟,已经冷却下来的CPU再次上线。啊!我去,有种被自己CPU坑了的感觉。这样不就可以了吗!

public abstract class BusinessSyncExecutor<P, R> {

    public R execute(String key, P param) throws ExecuteException {
        try {
            if (RedisLock.lock(key)) {
                return doExecute(param);
            }
            throw new ExecuteException();
        } finally {
            RedisLock.unlock(key);
        }
    }

    protected abstract R doExecute(P param);

    public static class ExecuteException extends Exception {
    }
}

        以上代码从严谨程度上来说还有很大欠缺,不过这对于面试的要求已经足够了。

        想必参加过面试的各位同仁应该都有过我这样类似的面试经历,但当时就像被鬼打墙一样,无计可施。遇到这种情况,如果你很看重这个职位,而且还能联系上面试官的话,那就在面试结束后的最短时间内将你的想法再与面试官讨论一下,说不定转机就在眼前。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值