狗狗家(国内office)跪经

前几天刚刚在 Shanghai 参加的 onsite,1 轮 SD + 4 轮算法

第一轮

  1. remove the extra edge from a given binary tree.
  2. max product path alone a binary tree. (Follow up: what if the node contains a negative value)

第二轮

  1. given a string only contains ‘‘0’’ and ‘‘1’’, for each query, you are given an integer K, find the total number of substrings that contains exactly K '‘1’'s and arbitrary '‘0’'s.

第三轮

  1. 设计 2 人对战游戏,每个人有 5 x 5 的棋盘和 5 条船(长度分别是 1 ~ 5,宽度固定是 1,摆到棋盘上,不能重叠,互相不知道对方摆法)

  2. 回合制,one by one call 类似 attack(i, j) 的函数打击对方棋盘的 (i, j) 点

  3. 每条船必须所有 parts 被打掉之后才算沉,比如:4 x 1 的船,必须 4 个方格全部被打击掉才算沉)

  4. 获胜条件是打掉对方所有的船

  5. 题目的要求是不考虑玩家的策略,是在 high level 设计整个游戏
    some tips:

  6. 怎么选型?1 server + 2 clients 还是 1 client + 1 client?)

第五轮

  1. 里扣 扒腰吾 (Follow up: 考虑真实世界中, station 多或者 line 多的情况下,该如何选择算法)

面完第 2 天通知挂了,很是难过,feedback 是 SD 答的非常好,但是算法没到 bar。

哎,第二次 fail onsite了,题目到也不是特别难,move on。

感谢分享!祝好运!

  1. 怎么选型?1 server + 2 clients 还是 1 client + 1 client? 长连还是短连?pros and cons 分别是什么?
  2. 核心的 judge 函数整体流程?
  3. 异常情况怎么处理?比如选型是 1 server + 2 clients,现在轮到 A 进攻 B,但 server 同时收到了 A & B 同时发来的进攻请求。

请问lz这几个是怎么答的

你干脆出国来这边onsite好了…。

  1. 我选的是 1 server + 2 clients,通过 tcp 和 clients 做命令交互,pros 可以从产品角度考虑(server可以方便记录很多操作数据,可以做类似排行榜等 feature),cons 就是占用 server 资源较多,玩家多的时候要考虑 distributed 的方案。

  2. 核心流程不麻烦,几个 if 逻辑判断下当前的局面,响应的优先级是 “MISS” > “WIN” > “SINK” > “HIT”

  3. 这部分我答的一般,你可以直接无视错误一方发来的请求,但这个比较粗暴。
    我采用的方案是回滚到上一步,如果连续 N 次都这样,可以提示用户升级客户端等。
    反正尽量从用户体验去考虑这种异常。

难呀,绝大部分公司都不考虑在国内的candidate

Google国内office的Hiring Bar要比美国高一些~

我看前段时间有人从国内拿到了亚麻的offer?你可以多投投试一试运气,国内同一个公司要求是感觉要高.加油!

请问lz第五轮followup怎么答得?除了bfs还真想不出别的什么。

如果图很密的话,从 source 搜到 target 的 BFS 效果不是很好,因为进队列的扩展边很多,可以参考:

https://www.geeksforgeeks.org/bidirectional-search/