回复: 35
跳转到指定楼层
上一主题 下一主题
收起左侧

狗家昂赛特

全局:

2016(10-12月) 码农类General 硕士 全职@google - 内推 - Onsite  | | Other | 应届毕业生

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
发个面经攒rp。。。。内推的学长说上周五要送hc,然后惶惶不可终日等了好几天,今天hr告诉学长说上周没送,这周五送,还我浪费掉的感情!!
hr小哥说好的keep me updated,却让内推的人updated,吐槽一下。。。但是hr小哥还是很好的,面试当天还发了一些tips


第一轮,中国小哥,提前15min接我,
然后就开始中文blabla聊天了,到时间进去面试,瞬间严肃了,心累累。题目是之前看到的别人面过的题,判断一个围棋棋子是不是alive(当时看的题目是判断一个棋盘是不是死的,感觉更烦。。。)当初看到这题的时候和非cs的室友讨论了半天怎么做,因为当时以为棋子被周围一大圈其他棋子围起来就算dead。面试官一讲完题,心里就拔凉拔凉的,后来不知道怎么镇定下来了,然后就问了一个黑棋被一大圈白棋圈起来算不算dead,他说不算,这下瞬间轻松了哈哈哈。写了个bfs,写完后面试官说我有个小错,后来自己发现改了。之后就是followup,面试官有点解释不清楚,然后就自己说了,然后继续follow up,我自己提了个方法,他不太满意,准备让我写psyd
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ont>
最后代码就写了一点点,心里当时已经是死灰一片,最后和他repeat了一下思路,貌似之前他还没有理解我要干什么,最后问他怎么做,说我on the right track。出来后感觉三哥就是个坑,占用那么多时间说其他的。。。


希望hr小哥周五成功送达hc,然后又可以焦灼的等结果了!







补充内容 (2016-10-26 10:26):
求点大米TT

补充内容 (2016-11-1 02:00):
hr小哥说要加面两轮==

评分

参与人数 11大米 +94 收起 理由
千万个世纪 + 1 给你点个赞!
kaokejian + 1 给你点个赞!
Formatmemory + 3 感谢分享!
laiguojiuhao + 3 感谢分享!
mingruiyrh + 2 感谢分享!

查看全部评分


上一篇:求问前端面试一般都面啥?
下一篇:Information required before your Amazon interview

本帖被以下淘专辑推荐:

推荐
海盗包子 2016-10-27 03:45:36 | 只看该作者
全局:
画三角形那道题可不可以理解为level order traversal 的变种,bfs那种的。据我观察,每加深一层,就是把一个当前的三角形分成三个三角形(中间的倒三角形不算,这样画出的边也没有重合)写了一下代码,constructor没有详写
  1. public class Point {
  2.         int x, y;
  3.         public Point() {}
  4. }
  5. public class Triangle {
  6.         Point A, B, C;
  7.         public Triangle(Point A, Point B, Point C){}
  8. }
  9. public Point getMid(Point A, Point B) {
  10.         int x = (A.x + B.x) / 2, y = (A.y + B.y) / 2; //不考虑double的情况
  11.         return new Point(x, y);
  12. }

  13. public void drawLine(Point A, Point B) {}
  14. public void drawTri(Triangle tri) {
  15.         drawLine(tri.A, tri.B);
  16.         drawLine(tri.B, tri.C);
  17.         drawLine(tri.A, tri.C);
  18. }
  19. public void drawGraph(Point A, Point B, Point C, int depth) {
  20.         Triangle basic = new Triangle(A, B, C);
  21.         Queue<Triangle> q = new LinkedList<Triangle>();
  22.         q.offer(basic);
  23.         for(int i = 0; i < depth; i++) {
  24.                 int size = q.size();
  25.                 for(int j = 0; j < size; j++) {
  26.                         basic = q.poll();
  27.                         Point mid_AB = getMid(basic.A, basic.B);
  28.                         Point mid_AC = getMid(basic.A, basic.C);
  29.                         Point mid_BC = getMid(basic.B, basic.C);
  30.                         q.offer(new Triangle(basic.A, mid_AC, mid_AB));
  31.                         q.offer(new Triangle(basic.B, mid_BC, mid_AB));
  32.                         q.offer(new Triangle(basic.C, mid_BC, mid_AC));
  33.                 }
  34.         }
  35.         while(!q.isEmpty()) {
  36.                 drawTri(q.poll());
  37.         }
  38. }
复制代码
回复

使用道具 举报

推荐
zzgzzm 2016-10-26 11:19:32 | 只看该作者
全局:
第一轮:围棋问题,可以用queue做BFS或用recursion做DFS. 判断一片棋子死活就是判断有没有空格邻居。类似Leetcode "number of islands".
我的C++ DFS:
  1. int val; // 1: black, 2: white, 0: empty

  2. // dfs subroutine to explore same color tokens
  3. bool findEmptyNeighbor(vector<vector<int>>& board, int i, int j) {
  4.   // didn't find empty grid if out of board
  5.   if (i < 0 || i > 18 || j < 0 || j > 18
  6.       // or visited same color token or opponent token
  7.       || board[i][j] == INT_MAX || board[i][j] == -val) return false;   
  8.   board[i][j] = INT_MAX; // set as "visited"
  9.   // explore 4 neighboring grids
  10.   return  findEmptyNeighbor(board, i-1, j) ||
  11.           findEmptyNeighbor(board, i+1, j) ||
  12.           findEmptyNeighbor(board, i, j-1) ||
  13.           findEmptyNeighbor(board, i, j+1);
  14. }

  15. bool isAlive(vector<vector<int>>& board, int i, int j) {
  16.   // validate given location (i, j)
  17.   if (i < 0 || i > 18 || j < 0 || j > 18 || board[i][j] == 0) return false;  
  18.   val = board[i][j];
  19.   return findEmptyNeighbor(board, i, j);
  20. }
复制代码



补充内容 (2016-10-26 11:23):
我用的就是实际的围棋棋盘19*19, 但如果是一般2D grid的话也同样实现。
回复

使用道具 举报

推荐
laiguojiuhao 2016-10-27 05:10:11 | 只看该作者
全局:
  1. import turtle


  2. ninja = turtle.Turtle()
  3. ninja.speed(10)


  4. class Point(object):
  5.     def __init__(self, x, y):
  6.         self.x = x
  7.         self.y = y


  8. def draw_line(p1, p2):
  9.     ninja.penup()
  10.     ninja.goto(p1.x, p1.y)
  11.     ninja.pendown()
  12.     ninja.goto(p2.x, p2.y)


  13. def draw_trangle(p1, p2, p3):
  14.     draw_line(p1, p2)
  15.     draw_line(p2, p3)
  16.     draw_line(p3, p1)


  17. def dfs(p1, p2, p3, depth):
  18.     draw_trangle(p1, p2, p3)
  19.     if depth:
  20.         m1 = Point((p1.x+p2.x)/2., (p1.y+p2.y)/2.)
  21.         m2 = Point((p2.x+p3.x)/2., (p2.y+p3.y)/2.)
  22.         m3 = Point((p3.x+p1.x)/2., (p3.y+p1.y)/2.)
  23.         depth -= 1
  24.         dfs(p1, m1, m3, depth)
  25.         dfs(p2, m1, m2, depth)
  26.         dfs(p3, m2, m3, depth)


  27. if __name__ == '__main__':
  28.     p1 = Point(-100, 0)
  29.     p2 = Point(100, 0)
  30.     p3 = Point(0, 173)
  31.     dfs(p1, p2, p3, 2)
  32.     turtle.mainloop()
复制代码


我用python turtle写了个画三角形那题的小脚本~

补充内容 (2016-10-27 05:12):
triangle写错了。。。
回复

使用道具 举报

🔗
chestnut9919 2016-10-26 09:47:52 | 只看该作者
全局:
可以详细说说棋子那道题吗?
回复

使用道具 举报

🔗
mingruiyrh 2016-10-26 09:56:33 | 只看该作者
全局:
棋子那道题的follow up是什么啊?
回复

使用道具 举报

🔗
 楼主| jiongjiongyoush 2016-10-26 09:57:48 | 只看该作者
全局:
chestnut9919 发表于 2016-10-26 09:47
可以详细说说棋子那道题吗?

最近很多帖子都出现过,输入一个围棋棋盘,和一个黑棋子坐标,判断这个棋子是活是死,就是search找有没有和黑棋子相连的空格
回复

使用道具 举报

🔗
 楼主| jiongjiongyoush 2016-10-26 10:00:03 | 只看该作者
全局:
mingruiyrh 发表于 2016-10-26 09:56
棋子那道题的follow up是什么啊?

比如现在每个棋子都有一个status变量,代表这个地方是死是活,问题是当下一个棋子的时候如何更新棋子的status
回复

使用道具 举报

🔗
chestnut9919 2016-10-26 10:32:23 | 只看该作者
全局:
jiongjiongyoush 发表于 2016-10-26 09:57
最近很多帖子都出现过,输入一个围棋棋盘,和一个黑棋子坐标,判断这个棋子是活是死,就是search找有没有 ...

到底怎么才算活啊?为什么被一圈白子围起来还不算死?
回复

使用道具 举报

🔗
 楼主| jiongjiongyoush 2016-10-26 10:35:49 | 只看该作者
全局:
chestnut9919 发表于 2016-10-26 10:32
到底怎么才算活啊?为什么被一圈白子围起来还不算死?

必须要紧紧的包围着,不能有空!!!这是重点
  XXX
XOO X
  XXX
比如上图O就是活的
回复

使用道具 举报

🔗
uranus23 2016-10-26 10:36:55 | 只看该作者
全局:
lz哪天面的?
回复

使用道具 举报

🔗
zzgzzm 2016-10-26 10:45:51 | 只看该作者
全局:
chestnut9919 发表于 2016-10-26 10:32
到底怎么才算活啊?为什么被一圈白子围起来还不算死?

围棋规则:一片相连(也可以单个)的同色棋子当没有“气”的时候就算死棋,而“气“指的是和这片棋子相邻的空位。例如一个单个在(0,0)的白棋要死必须是紧相邻的4个位置(-1,0), (1,0), (0,1), (0,-1)都被黑棋占据。如果只是一圈黑棋远远(中间有空隙)地包围了一圈的话不算白棋死。

LZ是担心面试官用这个“非正规”的规则,那就不容易判断了。
回复

使用道具 举报

🔗
 楼主| jiongjiongyoush 2016-10-26 10:52:28 | 只看该作者
全局:

10.7
等了快三周了。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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