Yext电面onsite面经挂经

店面很简单 就是地里都有的题
onsite其实已经过去很久了但是一直懒得发
结果出的很快 周五面完周一发通知

第一题是 leetcode 171 核心思想就是要把那个数位挪一位 使得 A-Z map 成1-26的关系变成一个0-25的 26进制的一个对应关系
第二题是debug binary Tree to max heap的那个题,地里有code

  1. Debug game of life, 这个大家都很笼统 但是我记得还挺清楚的 有如下几个点 面试官tyler terbush
    Game of life

task 1 : debug
在更新下一个generation的时候, 原code里的那个board没有使用一个新的matrix来存储下一个Generation的信息, 所以next generation和current generation混着了
在计算neighbor的那个地方, if condition里有一条 (i!=0 && j !=0) { //compute neighbors} , j和i分别是row, column index, 这一条的if condition本意是让你跳过 row +0, col +0这个current cell,只计算其他的neighbor, 但是这里用了 &&,所以任意 row +0, col +1/2/3/这样的组合都会fail condition,最后计算出来的neighbor的Index总数就不对, 应该改成if(i==0 && j==0)continue,然后再计算其他neighbor
还有一些其他很简单的小细节,比较主要的大点就是这两个 第二点花了很长时间没找出来 最后再提示下才找出来的

因为他的coordinate neighbor index是以一个arraylist的方式进行储存,所以正确找到这个bug的方式应该是 在计算next
generation的时候,check the size of neighbor index arraylist ,发现并不是正常的8个, 因为他一定会给出8个,这个时候
你就应该意识到问题出在compute neighbor index那个位置,由于(i!=0 && j !=0) 的限制条件,跳过了太多本来是
reasonable的neighbor index
task 2 : wrap around, 因为是用java写的 所以你在那个计算neighbor的地方 本来有一个avoid boundary cell的
condition大概类似于 if(row < 0 || col <0 … ) 这个地方的前一位在计算neighbor index的时候 直接 neighborRow = (row

  • i) %row , neighborCol=(row + col) % col即可
    code不是完全一样,原code把坐标用OOD的方式表示成了coordinate
    task3: 原来的game of life的cell size好像是只有24,让你改动code几个地方让他变成80*80的game
    task4 : 忘了 没做到那题就没时间了
  1. 算法 coderpad word search, follow up是word search II 用trie tree
  2. Diagonal traversal : leetcode原题 ,我这题白板coding对着不同的人练了三遍 但是还是挂了,我觉得可能是他在问我时间优化空间优化的时候我出了问题, 时间优化没啥说的这个本来就是只能linear ,但是空间我当时没理解他的意思,面试官也不详细解释他的意思, 他问空间复杂度的时候你应该提及问一下是不是说一次load整个matrix太大了, memory fit不进去,这个时候你应该说 一行一行读matrix然后进行操作 具体的google一下有很详细的解释
    他问空间复杂度的时候我以为他是纯粹就算法而言的空间复杂度问的,当时并没有考虑他说内存不fit in的问题 (面试官好像叫Kunal, group lead,全程冷漠)
  3. behavior question
1 Like