Robinhood挂经

贡献一个小众Robinhood数据
Career fair聊天拿到了面试
题目不难,第一个类似丽抠司咬把,其实还没这么复杂,给一串单词,然后屏幕的宽度,返回结果,如果一个也塞不下就返回空,否则返回一行可以塞下最多时候屏幕的样子
第二个是concurrency问题,给一串代码,问里面会出现啥情况,就瞎说了一堆concurrency的问题,然后可以上锁,readwritelock,db的transaction blablabla,然后还说如果db fail了,就不能继续了,不用写代码就是瞎说
催出一封拒信,不给feedback,求人品

def bad_transaction(val):
    remain = account1.remain
    if val > remain:
        return
1 Like

补充内容 (2017-11-18 05:42):

def bad_transaction(val):
        remain = account1.remain
        if val > remain:
                return
        account1.withdraw(val) # db write
        send_email_to_account1()
        account2.deposite(val)
        send_email_to_account2()
std::mutex mtx;
void bad_transaction(val):
        mtx.lock();
        remain = account1.remain
        if val > remain:
                return;
        mtx.unlock();
        mtx.lock();
        account1.withdraw(val); # db write
        mtx.unlock();
        send_email_to_account1();
        mtx.lock();
        account2.deposite(val);
        mtx.unlock();
        send_email_to_account2();

补充内容 (2017-11-18 09:31):
请问这样可以吗?。。。如何改进第二题答案。谢谢楼主!

跟楼主题一模一样,我也跪了。。。主要是没想到第二题这样的套路,其实就是最基本的db transaction知识,我还说了2-phase commit和rollback,然后email要在commit成功之后发送。

+1 我也把能记得的db都说了,pat pat~层主会有更好的~

比如说单词是这样的[“aaaaaaaa”,“apple”,“me”,“code”,“aaaaaaaa”,“lo”],然后屏幕的宽度是6
是不是就应该返回"apple me"? 或者"me code"因为长度都是6