Google/Onsite/全职

时隔多年, 谷歌再战,也算是了解一个心愿了…
总体来说难度不大,并没有出现 hard level 的题目,感觉更多是你和面试官一起完成一个work,估计也是有考察 communication 的意思.
谷歌和亚麻不一样,coding round 就不会出现 behaviour question,基本上就是大家扯个两句, 面试官讲下他是哪个组的, 然后就是直接开干.
process 一般也都是从一个简单的 question 开始, 这一步甚至肯能不需要写 code,大概讲下算法, 面试官满意后, meat 部分就是 follow up
follow up 通常也都是现将算法, 写代码, 给测试用例, 徒手 debug

第一轮:应该是国人小哥,有个老美 shadow
return length of the longest subarray, which thesum is smaller than the limit. - sliding window
follow up:
return the size of the largest suqare, which sumis smaller than the limit.
follow up 最后我给了个 O(n^3)的算法, 不知道有没有大佬说下更好的…

第二轮:亚裔大爷,不清楚是不是国人.
find sum of all leaves from a tree;
the time complexity will be O(n), and space willO(n)
follow up:
modify node definition as you want, so we canuse space O(1) to get the sum
这题主要就是在面试官引导下,实现他想要的方式,最后弄出来是加上一个 parent 指针, 和一个 next 指针吃饭:和一个国人一起,吹比扯淡

第三轮:三哥,人很 nice.

  • valid parentheses string
  • given a valid parentese string, return thestring without redundant parentheses;
    ((ab)) -> (ab)
    (ab(x)) -> (ab(x)) (there is no redundant)
    一开始给了个算法接近面试官想要的,但是有点差别.后来在他提示下给出了他想要的解法.基本思路就是用个 stk 存所有的 ( 位置, 然后遇上 ) 之后, 检查当前 ) 的位置和上一个 ) 的位置之差, 以及当前 ( 的位置和上一个( 的位置之差,是不是都是 1,代表 (( )), 然后把 redundant的() 标记成**, 最后输出 result removed *

第四轮:国人大叔, 最近出现很多次的 expressive words第五轮:
BQ, 一堆有的没有, 总之就是不能空口说白话, 必须要有实际例子来支撑.

楼主在哪个office面的啊

sunny vale

第二轮的follow up。是不是不需要同时加parent指针和next指针?
感觉如果dfs的话,加parent指针就好了。这样,回溯时就可以直接用parent指针,而不需要一个stack。
如果bfs的话,加一个next指针。这样每个level遍历时,只需要存第一个节点的指针。而不需要,一个queue来存当前下一个level的所有节点

面试官要求就是 space O(1)
所以 dfs 是不行的,
考虑调用栈的空间,实际上时O(n)

你说的第二种,好像可以,但是当时面试官没往那个方向走