一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1880|回复: 13
收起左侧

google面经

[复制链接] |试试Instant~ |关注本帖
yanlingyin 发表于 2015-11-28 04:43:15 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 全职@Google - 猎头 - 技术电面 |Fail在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
时间45分钟,三道题。
第一道, code review,问以下代码有什么问题:
public class Ad {
  private String adText;
  private String keyword;
  private int bid;
  private Account account;

  public Ad(String adText, String keyword, int bid, Account account) {
    this.adText = adText;
    this.keyword = keyword;
    this.bid = bid;
    this.account = account;
  }

  /**
   * A user has clicked on this ad.  Bill the appropriate account. 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
   */
  public void handleClick() {
    switch (account.getType()) {
      case Account.CREDIT_CARD_ACCOUNT:
// expired date,etc
        Biller.billCreditCard(account.getCreditCardNumber(), bid); // async call
        break;
      case Account.PREPAID_ACCOUNT:
        account.setPrepaidBalance(account.getPrepaidBalance() - bid);
        if (account.getPrepaidBalance() <= 0) {
          account.setEnabled(false);
          EmailUtil.sendEmail(account.getEmailAddress()); // async call
        }
        break;
      case Account.BANK_TRANSFER_ACCOUNT:
        Biller.billBankAccount(account.getBankRoutingNumber(),
                               account.getBankAccountNumber(),
                               bid); // async call
        break;
      default:
        throw new IllegalStateException(
            "Unknown Account type: " + account.getType() );
    }
  }
. more info on 1point3acres.com
  /* All other methods omitted for brevity */
}


我也不知道有什么问题= =。。。回答的很菜。

第二题,有一个backend server和一个frontend server,backend 进行query并返回结果,问怎么处理短时间类大量相似的search request。
class Backend {
  static Response query(Request request) { … }
}-google 1point3acres

class Frontend {
. from: 1point3acres.com/bbs

}
. 鍥磋鎴戜滑@1point 3 acres

第三题,算法,一个sort array,给一个数字,发现这个数字第一次出现的index。 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

总之。。。估计前两道题答得好的话应该不会出现最后一道算法,题还很难的说。。。。反正我一道也不会╮(╯_╰)╭

评分

1

查看全部评分

munez26 发表于 2015-11-28 07:18:24 | 显示全部楼层
第一题我觉得应该给用户反馈,是否成功bill? 给一些合适的反馈。尤其是它用的是async call,这个点击提交之后,这个步就算完了。除非在async call里面解决这个问题。但在async处理是否恰当值得商榷。求继续讨论
回复 支持 1 反对 0

使用道具 举报

reality 发表于 2015-11-28 06:38:50 | 显示全部楼层
第一题我感觉是不是ad属性里有account不大好。。handleClick(Account account) 合适些?求讨论。
回复 支持 反对

使用道具 举报

jkingxt 发表于 2015-11-28 14:55:54 | 显示全部楼层
我觉得第一题可能是多线程的问题?猜的
回复 支持 反对

使用道具 举报

pcHC 发表于 2015-11-28 15:39:08 | 显示全部楼层
第一题感觉是Account 不是thread safe?可能在prepaid的那里Set balance出问题?不太确定. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

补充内容 (2015-11-28 15:40):.1point3acres缃
第二题的话,我觉得可以用一个LRU存query?
回复 支持 反对

使用道具 举报

hhzzk 发表于 2015-11-28 15:44:15 | 显示全部楼层
第二题用缓存?
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2015-12-1 11:19:01 | 显示全部楼层
第二题是在前端写一个LRU Cache吧

补充内容 (2015-12-1 11:19):
这题目确实在面试时很难想啊,面试官有什么hint吗?
回复 支持 反对

使用道具 举报

yjfox 发表于 2015-12-1 15:19:05 | 显示全部楼层
个人认为,代码有问题的地方是PREPAID这个block里,. 鍥磋鎴戜滑@1point 3 acres
其他几个case都是async, 异步处理,不用担心race condition。但是这个prepaid是直接setBalance,没有任何保护,显然需要问面试官这个function具体怎么写的,是否线程安全

可能因为lz是跳槽所以问的都是比较接近实际工作
回复 支持 反对

使用道具 举报

D调的华丽 发表于 2015-12-3 04:24:05 | 显示全部楼层
yjfox 发表于 2015-12-1 15:19
个人认为,代码有问题的地方是PREPAID这个block里,
其他几个case都是async, 异步处理,不用担心race con ...

lz说的很有道理诶
回复 支持 反对

使用道具 举报

七夜雪 发表于 2015-12-3 06:40:53 | 显示全部楼层
yjfox 发表于 2015-12-1 15:19
个人认为,代码有问题的地方是PREPAID这个block里,-google 1point3acres
其他几个case都是async, 异步处理,不用担心race con ...
.1point3acres缃
同意!

只是不明白的是为什么async call不需要担心race conditions啊.async我理解是目前这个thread不会执行和等待method的运行,但是如果Biller和EmailUtil没写好的话在它们的thread也会有race condition吧。

还是说我们只看Ad这个class的code...Biller和EmailUtil没写好不关Ad的事。。。
回复 支持 反对

使用道具 举报

yjfox 发表于 2015-12-3 11:28:47 | 显示全部楼层
七夜雪 发表于 2015-12-3 06:40
同意!

只是不明白的是为什么async call不需要担心race conditions啊.async我理解是目前这个thread不 ...
. From 1point 3acres bbs
因为一般这么标注了,应该不关乎这段代码的问题,不过现在无法跟面试官交流没有context无法确定. more info on 1point3acres.com
async是为了转移heavy的操作,一般不这么做的话这类操作会阻塞住现在运行的thread,所以如果这里还要check race condition的话就失去异步的意义了。
.鏈枃鍘熷垱鑷1point3acres璁哄潧
不过请教了下在职senior后 说 这段代码架构就有问题,不符合production中的ood。
我之前提的问题反而不是那么明显

比如, handleClick可以放到account中,get rid of switch
回复 支持 反对

使用道具 举报

七夜雪 发表于 2015-12-3 12:33:11 | 显示全部楼层
yjfox 发表于 2015-12-3 11:28
因为一般这么标注了,应该不关乎这段代码的问题,不过现在无法跟面试官交流没有context无法确定
async是 ...

原来如此......我完全没有从这个角度想......
回复 支持 反对

使用道具 举报

zhaoweigg 发表于 2016-6-14 14:58:24 | 显示全部楼层
又想,翻尸了,大家说的都对,补充下就是我觉得prepaid那扣完了钱在check <= 0 有点搞笑
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 03:50

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表