Yahoo Onsite

Onsite 1

先说电面,问了很多基础知识,超多。涵盖了地理雅虎面经出现的几乎所有的基础知识部分,大家好好刷一下面经,我就不重复说了。面经没有然而他还问我了的:到底为什么要用interface,有什么好处,能不能举个例子。线程安全类怎么实现(此时还没有打开code网页,嘴说……)。 code部分是一个巨简单的面经里有的链表找环问题。

前两天面了onsite,不算中午吃饭一共三轮(然鹅中午吃饭比任何一轮都push……)

  • 第一轮先问了问简历,比较细。然后白板编程:1.两个数字变量,不用中间变量怎么实现交换。 2.链表找倒数第几个节点。 3.设计一个最小栈
  • 中午吃饭……我以为就闲聊!!结果问了好多技术知识啊……根据简历问的,我的实习用的是go语言,他就问了很多这种语言的好处坏处,很底层的编译问题也问……我简直太崩溃了,我只是用这个语言三个月而已啊,而且一直关心的是我们application设计和实现的问题。根本不懂他编译过程啊,我还不是cs科班出身……后来我问他,你们想要的top skills是啥,他说:blablabla,还有坚实的cs基础……这顿饭吃的我真是想哭
  • 第二轮,白人大叔全程在电脑不知道在写什么,我回头跟他讲话的时候他才理我,有点心累。直接题目:设lc原题146,然鹅我当时犯懒没做,所以生硬设计。这一轮表现感觉不是特别好,他提示了两次才找到比较合理的解法。最后设计完时间已经到了,就没让变成多线程啥的,然而我多线程专门复习了很久 啊喂。然后他就走了……
  • 第三轮,国人小哥人特别好,一上来寒暄了一下,然后说我的题目很简单你别紧张。然后真的超级简单……就是二分搜索找数组中的目标元素,然后让自己想了很多testcase,在白板上跑。代码五分钟写完,剩下跑了半小时的test case 完事没有manager回来说话(从始至终都没有manager),我自己默默地走了。 不知道为什么我的面试这么简单,是因为瞧不上我么。。。。我真的可以做更难的题啊!! 楼主到现在也没有任何消息很伤心。希望能帮到后来人

Onsite 2

1.1 binary search的不难
1.2 number of islands
1.3 给一堆string,找出所有可以组成palindrome的pair
1.4 find median 和 design chess game

2.1 DNS怎么工作的,怎么表示图,bfs最短路
2.2 Largest Rectangle in Histogram,我说我见过,让他换题,他说没事,然后我打算给标准的stack的解法,他说换一种方法做,提示divide and conquer

manager 吃饭

3.1 忘了,很简单
3.2 circular buffer: 实现两个function:get(), put()
3.3 follow up1: consumer productor problem,一个semaphore解决
3.4 follow up2: 很多个thread同时访问,根据他说只用一个mutex,我做麻烦了

4.1 binary search
4.2 一个class 两个method,register(string name, Filesystem fs), getFS(string name)。很简单,hashtable
4.3 follow up: make it multithread safe,mutex + condition variable
4.4 一个web system,有一个地方突然变得很慢,怎么debug。还有一些load balancer和NAPT的东西
4.5 tiny url,问到了怎么设计这个hash,database replication 还有 sharding的东西

Onsite 3

Problem

import java.util.*;
public class Test{
    public int maximumIdx(int[] ipt){
        int len = ipt.length;
        int[] left_min = new int[len];
        left_min[0] = ipt[0];
        for(int i=1;i<len;i++) left_min[i] = Math.min(left_min[i-1],ipt[i]);
        int[] right_max = new int[len];
        right_max[len-1] = ipt[len-1];
        for(int i=len-2;i>=0;i--) right_max[i] = Math.max(right_max[i+1],ipt[i]);
        int L = 0, R = 0;
        int max = -1;
        while(L < len && R < len){
            if(left_min[L] < right_max[R]){
                max = Math.max(max,R-L);
                R++;
            }else{
                L++;
            }
        }
        return max;
    }
    public static void main(String[] args) {
        Test t = new Test();
        int[] nums = new int[]{34, 8, 10, 3, 2, 80, 30, 33, 1};
        System.out.println(t.maximumIdx(nums));
    }
}

Onsite 4

后来对照着我的简历,问了好多好多basic的问题。比如linux系统的各种命令,ruby的各种语法,javascript==和===的区别什么是callback,c++的pure virtual function,multiple inheritance,database的各种,nodejs.... 简直要把我问跪了。小哥的人特别可爱特别和善,但是问起知识点来,一点也不含糊。感觉自己在玩智力通关,然后智力还不太够。。
Fraction to Recurring Decimal

Onsite 5

  • Print Binary Search Tree in non-decreasing order - How to implement without recursion?
  • Binary Tree Level Order Traversal - How to implement with one queue
  • Reverse Linked List
  • Permutation - What if duplicate exists?
  • Missing Number
  • Short URL system design - Database 设计... - 2 way hash function 是不是存在? 在Mathmatitcs里叫啥,面试官说是bidirectional....记不清了。。 - How to support large scale? - How to speed up using cache? - Other way to speed up? ----> Redis 面到这就感觉要跪了。
  • Implement Link List and Insert/Delete operation 题主用了个Dummy Head。 写完之后面试官先是说我删除不对,删错node了。后来才发现我用了个dummy Head。 大喊一声:你为毛要用Dummy Head!!!!浪费内存有木有!!!!你造不造一个Node有多大!!!! 然后完全不听我解释啊 = =。
  • Closure 是啥,啥时候用
  • Polymorphism 是啥, 啥叫Runtime Polymorphism
  • Function Overwrite 和 Function Overload的区别

Onsite 6

邮件后端组,技术面一共4轮。
第一轮,国籍不明 题:first no repeating character with only one scan find the node in a binary tree have the length of root to a leaf equal k 上面两题应该算是秒给代码,正确不正确我也不知道。 其它: 简历上的内容,例如我有写restful,就问了restful.其实我不是太懂这个,幸好面试官没有深究。 然后是大量Java的内容,包括exception的理解,各种集合的优劣。这方面我有点积累,答的还可以。
第二轮: 1. two sum 2. find the close elment for a given target in a sorted array 基本都是leetcode原题,我没有理由不秒杀啊。 然后问了一些网络方面的知识,应该令对方很满意。 然后是数据库的慢查询,楼主有点工作经验所以回答的让对方还是挺满意的。
第三轮: k biggest pair for two array,基本上是先排序然后leetcode原题。楼主这一题几天前才做过。所以这一次就详细的给面试官解释就完事了。 然后是多线程设计题,最后让我优化,我觉得没有空间可以优化了,最后幸好时间到了就结束了。多线程这题我回答的一般,当时感觉挂了。
最后一轮: first missing number in a string, leetcode有原题是给找数组的first missing number。 这位严肃的大姐几乎让我绝望啊。我一边做一边想挂了。 然后我就用了一个很navie的解法,然后说还可以优化。大姐说算了,然后让我解如果数字不是从1开始,让我去解。然后弄了很久才弄明白他的意思。他的意思是input总是missing a number。所以你必须知道给定一个字符串哪个数字是miss的。最后我说用back tracking,然后她一直说不明白我的代码。整个过程非常stressful. 然后经理过来见我,大概意思是组里的人对我感觉还可以(真没想到)。然后问我什么时候能给答复,然后说希望我可以加盟之类的。然后有个人说明天能不能安排时间谈一下薪水。 我在想是不是口头OFFER?发个面经希望积点RP最后真能拿到OFFER吧。 求offer这样我就不用一边刷题一边工作这么痛苦了。

Onsite 7

  • Encode a->1b->2…k->11z->26 input “111” output: aaa, ka, ak
  • Give a array, return a list of pairs of index which sum to 0. If there is duplicate, only return the first duplicated index with other numbers sum equal to 0. Array: {1,1,0,-1,3,2, -1}Index 0,1,2,3,4,5,6,7 Output: (0, 3), (0,7), ((1,3) and (1,7) should not be returned since it is not the first index)
    import java.util.*;
    public class YilinLu {
      public List<List<Integer>> findPairs(int[] nums){
          Map<Integer,List<Integer>> map = new HashMap<>();
          Set<Integer> set = new HashSet<>();
          for(int i=0;i<nums.length;i++){
              map.putIfAbsent(nums[i],new ArrayList<>());
              map.get(nums[i]).add(i);
          }
          List<List<Integer>> rst = new ArrayList<>();
          for(int i=0; i<nums.length;i++){
              if(set.add(nums[i])&&map.containsKey(-nums[i])){
                  List<Integer> position = map.get(-nums[i]);
                  set.add(-nums[i]);
                  for(int pos : position){
                      if(pos<=i) continue;
                      rst.add(new ArrayList<>(Arrays.asList(i,pos)));
                  }
              }
          }
          return rst;
      }
      public static void main(String[] args) {
          YilinLu test = new YilinLu();
          int[] nums = new int[]{1,1,-2,-1,2,-1,-1};
          System.out.println(test.findPairs(nums));
      }
    }
    
  • Circulr array, implements put(intx) and get() get() will pop the current element. If put() already has element in the array or empty when calling get(), throw exception
  • Quesiton: Java if String is immutable. String a = “Yahoo”;Stirng b = “Google”;Swap(a,b);Print System.out.println(a + “,” + b) Wirte your Swap(a,b) and output should be Google, Yahoo

Onsite 8

信息量比较大,大家准备好。 上周去加州面了yahoo的Ads Team,然后在纽约面了Finance Team。

加州onsite: 1. 自己设计一个长度为n的queue,实现offer() 和 qoll()。 我用了一个数组实现。 Follow up: multithreaded 2. 一个int array,里边的数字先降再升,找到最小值。 e.g: 5,2,1,4,7,9 最优O(lgn) Follow up: 找任意一个值 e.g: 2 最优O(lgn) 3. 类似第一题的一个设计题然后改为multithread,不赘述了。 系统设计: Tiny URL 4. 2 sum 变种,挺简单就不耽误时间了。 DP: 用不同硬币凑成一个数字 SQL: 分组找出最大值 group by 5. OO Design: 写一个Tick Tac Toe

纽约Onsite: 可能因为我人在纽约分成了两个半天 Round 1: 写一个程序去玩猜字的游戏,给了服务器的url和规则。时间三个小时 Round 2: 1. 讲讲Java的Garbage Collection DP: 已知不同硬币的面值,用最少的硬币数量找钱给顾客 public List optimalChange(int coins, int target) 2. https://leetcode.com... 简单的讲解可以看https://discuss.leet... 3. Topological Sort 结果还是不错的,两边都表示满意。 现在的面临选择,finance组不大,一个40人,纽约20人。 Ads组很大,全在CA。Finance是雅虎最好的产品,Ads是赚钱的玩意儿。没有感觉到那边明显的好一些,所以可能还会留在纽约。 大家也随便扯扯淡吧,毕竟我这一贴顶两贴呢。

Onsite 9

一面:印度manager missing number sum 和,面试官希望用bit vector 但是,我太水。。。跪 merge sort 他们貌似前端,后端都需要, 楼主表示都感兴趣后,他很开心的问了javascript event delegation…跪 照相
二面: 美国小哥 implement hashmap using c++ (key,value 都是 int, 为了好些,只要求put get) 白板写的很是随意,直接vector 存pair key value …由于太随意,syntax 啥的 各种bug。 小哥没说啥,但是一脸惊呆。。 dictionary 里是string. 给preceeding string target, 找到以这个string 开头的3个最接近的(短的优先,然后alphbatical order)。 bfs 解,楼主脑子进水加了visted set(多余)。 之后问了drawback, memory timeout. 改进trie. 没写完 照相
三面: 印度三姐 人品 应该都用到三姐这了,此三姐uiuc的。很nice。 database leetcode 原题, join (left,right,inner, outer), reverseString(look at you)=> (kool ta uoy) find peek find median 照相
四面: 印度啊三+亚裔(貌似) find single number(1 1 2)-> 2 (1 2 1 2 3)->3 原题 find single number II 有两个出现 一次 跪 type www.yahoo.com what happens????? 这个遇到不要太多,求面试关解答要怎么答 dictionary 里 找到最长的从''->'a'->'ab'->'abc'—– dfs 但是三哥急不可耐的说,character 可能是特殊的不是'a'-'z',还没开始回答,说了句trie也可以做。三哥立马不管特殊character,直接让写trie, 然后dfs trie.. 大致如上

Onsite 10

什么是restfulAPI, cookie, session, MVC pattern

results matching ""

    No results matching ""