Tableau Phone Interview Round 1

原帖地址:一亩三分地

面试官是白人小哥 senior software engineer.

一开始他介绍了一下自己,然后问我喜欢什么方面。 第二个问题是为什么选择Tableau。
technical 问题是设计 minesweeper(扫雷):

并不是很难 只需要我写board class 和 click method。 player 一开始可以instantiate一个board,需要给予row,col,# of mine。click 这个method给予row 和 col,然后判断有没有踩到雷。两个情况:
1)踩到雷,游戏结束。
2)没踩到雷,两个情况:
a)immediate adjacent (diagonals included) 有雷,需要告知有几颗雷
b)附近没雷,把附近没雷的格子也都click

就问了一个问题 电面了一个小时,本以为让面试官hint了很多会没机会了 不过面试完几个小时后马上就收到recruiter的恭喜要进行下一轮。来回报一下地里。

几点注意:
1)如何populate gird with # mines。一开始我用rand来generate random coordinate,check是否已经有mine。面试官说worst case是forever,因为有可能会keep generating the same coordinate。就换成coordinate pool,从里面随机pop。
2)需要考虑到click过的coordinate不再被click,比如在2×2(0 mine)的grid里 如果recursively click 会导致infinity loop。
3)recursively click附近的coordinate, excluding self,因为我用的是nested for loop,要skip被点的 self coordinate(3×3,and skip self),比如在 1×1(0 mine)的grid里,不在nested loop里skip self的话也会导致infinity loop。
4)如果点的corner,check adjacent coordinates不能越界。
5)面试官告诉我写for loop尽量避开 int i = 0这样命名variable,他说 readability很重要。

大致就是这样啦!