Yahoo

面经检索
年份: 2019
月份: 10
公司: Yahoo
其他公司名称: -
面试阶段: OA 电面 Video Onsite Onsite 
职位类型: Full-time (New Grad)
职位名称: General SDE
LC146
LC10
LC450
LC387

刚电面完yahoo,coding题目很简单。

开始10min:相互介绍之后,问了三个问题。
1. 那个project,他问GC对performance的影响。不太懂,我就把怎么做project的过程描述了一下,他没再追问。
2. interest fields in 3 or 5 years,答backend or data pipeline,不过他们后台是c++,小哥是做matching的。
3. 有没有MapReduce经历,school project。

中间20min: coding
1. check if a string is palindrome
2. reverse words in a sentence
3. check if a binary tree is BST

小哥评价:答题比较有技巧,1,3题一看就做过(我先解释再写code的,没办法),2题有思考过程,他说应该会有onsite。

后面15min: 问问题,聊天
我就问了一个问题 What do you think makes Yahoo unique and successful among various SSPs and DSPs? 小哥答,search, news, finance巴拉巴拉的。然后主动说你知道yahoo被verizon收购了吧,我说知道。他就解释这是win-win situation,yahoo is independently operating。最后问我有没有什么offer, onsite。我说刚开始找,yahoo是第一家给面试的。最后他说我们可以提前结束了,我就没再问什么问题。

GC对performance的影响,我还是不太懂啊,当时做的时候,大老板就一直想测,但是我们技术差,都没搞出来。


回家我又回忆了一下。感觉基本算法有些还不够扎实,处理问题不够灵活。拓展到large scale的问题比较多,出现了三次。还有锁的问题考的比较深,关键是不会。女的都好说话,男的只有PM比较好说话,所以这说明了什么。。。。

1st 印度女 Technical
很好说话

Q1. user segment存什么信息?
答:{userId, age, income, historical location, interest}

然后她说我们要打一个女士鞋的广告,看看25到30岁,爱运动的,在北美的女士有多少。因为她在强调范围,我开始走偏,画了一个decision tree,她说不是问这个,后来弄明白要写SQL。
答:select count(*) from Users where age between 25 and 30 and demographic = 1 and interest like '%sports%';

Q2. 2 sum
clarify: 是否sorted(no), 有没有重复数字(yes)
答:当时用的map (number, count),不是set,我也是醉了。但是能work。

Follow up: 3 sum unsorted
答:for loop 调用 twoSumHelper(),time=O(n^2)

Q3. File system, support ls and rm command
class Entry {
  String name;  
  Entry parent;
}

class Directory extends Entry {
  List<Entry> children;
}

class File extends Entry {
  String content;
}

写了 List<Entry> resolvePath(Entry curDirectory, String path),她问如果有typo怎么办,我说可以throw exception. ls 直接用 last entry in the list, call getChildren(). rm 还是用 last entry in the list, call getParent 然后delete from the parent's children list。但是remove貌似她想让我get the last before last entry,直接delete。

2nd 国男 Principal Software Engineer
直接中文,一道题。

做两个矩阵的乘法。问他不是方阵的情况要不要考虑,他说都可以。然后我就。。。推了长宽可以是不一样的,我们还讨论了一下,比较浪费时间。time = O(n^3)。

直接问sparse matrix怎么优化。一到sparse我就有点儿蒙呢。

所以结果是下面的吗?没想到用linked data structure,从此我铭记于心。Linked data structures help you to skip unnecessary values and find the next element efficiently.
怎么做map reduce?我用的最native的方法,从公式推的。他说方法有很多,我说的是其中一种。有什么好的方法吗?

3rd 国女 Technical  
Q1. 写个singleton class
class Singleton {
  private static final Singleton instance = new Singleton();
  
  private Singleton(){};

  public Singleton getInstance() {
    return instance;
  }
}

Follow up: lazy initialization

class Singleton {
  
  private Singleton(){};

  static class Wrapper {
     private static final Singleton instance = new Singleton();
  }

  public Singleton getInstance() {
    return Wrapper,instance;
  }
}

她问为什么不用lock or synchronization
我说new Object的过程不是atomic的。来源:http://blog.csdn.net/longyulu/article/details/9159589 (singleton section) 我不是很懂,按照博客文章背的,本来想问你来着。说完她有点儿蒙的感觉,没什么评价。
Q2. find max subarray
简单的一维dp。follow up,get start and end index.

最后聊天的时候,对Yahoo的广告产业有些动摇,说客户都被谷歌FB抢去了。我想,这面试官还要做心理辅导吗,她不是team manager吗。我答也不全是,还是有客户会选择其他公司,比如苹果手机做的再好,安卓手机还是有很大的市场。只要把targeting做准确,server infra做好,有客户,不浪费钱,企业就有生存的机会。

4th 国男 Senior Engineering Manager
一起吃午饭,他说这不是面试放轻松,他是给我做phone interview的,另一个team manager。吃饭的时候就闲聊,你在以前公司做什么,平时什么娱乐活动。说年底要招30多人,他估计只能招到四五个人。回去了之后就开始问问题了。他说面试很难看出来哪些candidate合适哪些不合适,我说解决算法问题和解决实际问题一样的,巴拉巴拉。然后开始问challenging questions。
你最不喜欢做的事情是什么。我答,没有不喜欢的,都很重要啊,非要说的话,我比较懒,懒的记commands,平时用一个Google doc记录常用的commands,用的时候查一下,或者写script简化command。
你希望你manager改变的是什么。我答,communication吧,有的时候我和他站在不同的角度,可能相互理解需要一些技巧。我希望他给我一个问题的时候requirement会更清晰一些。他说你希望他给你很清晰的requirements吗,我说不是,但是我希望有个context就是我需要达到什么目标,这样我才能设计我的想法,才能verify我的code是正确的(一提到manager怎么就脱口而出,不严谨了,下次不能说这个)。
这种问题,我可以选择不答吗?bad things就从来没有出现过。

5th 印度男 Architect
最严肃的一位

Q1. find common words in two sentences
laptop写代码,跑过

Follow up: common words in two big files that cannot fit in memory
答:partition + reduce

如何partition?
答:根据第一个字母,如果分配不平均的话,用头两个字母。

能不能谈一下具体如何实现?比如c开头的字母很多的话。
答:sampling,predict the pattern 某块大了就继续细分;or 上网查一下资料,这个use case应该很多人在做。

Q2.
yahoo news feed
这个题目我们讨论过了,没有问到scalability,他想知道实现的logic。ranking,server,database,frontend之类的。

Q3.
你们用了哪些techniques来保护critial section
答:reentrant lock(不知道,编的), volatile keyword

lock的实现原理?
答:底层用CAE(还说错了,应该是CAS),一个线程aquire lock以后其他线程想要去拿要有个loop check。下回应该诚实一些,说我不知道才对。

你们为什么选择这些锁的机制?
我说看use case,volatile比lock efficient,如果要增加read throughput可以考虑读写锁。(感觉还是扯,我回家看了一下,用的是AtomicInteger,AtomicLong,AtomicReference,肯定被看粗来了,这些是什么呢?java.util.concurrent.atomic package?感觉我肯定被鄙视了 -- 你们这些只知道背答案的面试者)

6th 白人男 Director of Engineering
长得挺帅的,结果题没答好,他还是个director T T

懂不懂cpp?答不懂。
java pass by value or by reference?pass by value
学过operating system吗?学过。
写个fork() method 然后返回到caller? 不会。他说没关系。
deamon process.....? 我问deamon process是啥?他说不知道没关系。(是long-running background process,好吧,估计我说知道,他会问我GC吧)

find majority number   他直接说想看怎么处理Corner case的。

int findMajorityElement(int[] array) {
    int res = array[0];
    int count = 1;
    for (i = 1; i < array.size(); i++) {
        if (array == res) {
            count++;
        } else {
            count--;
        }
        if (count == 0) {
            res = array;
            count = 1;
        }
    }
    return res;
}

只完成了find a candidate,没有完成第二步。

他说有没有其他做法。答:记录每个element的count,time=O(n), space=O(n)
他问还有没有其他方法。答:先sort一遍,还没说完呢,其实中间那个数就是,他就问sort的时间复杂度,我说O(nlogn)。
我内心还是感觉这个题目和greedy algorithm一样,没有普适性,可能我见的题目太少了吧。还有出现多于1/3次有快速的求解方法吗?

7th 国男 Technical Program Manager
解释两种sorting; sorting big files that cannot fit in memory; files cross different continents。后来主要是聊天。

还有一些其他问题。

A google onsite question:
有一个iterator的iterator。<<123>,<456>>。设计一个iterator类,next()的时候输出142536。多线程的时候,不能加锁的话,怎么解决race。

factory pattern and dependency injection and inversion of control 三者之间的关系。

jvm中,所有的class不论static还是non-static都是第一次被引用的时候才加载吗?与是否为inner class无关。

ood game design和其他design比如restaurant reservation有什么不一样?

那个deadlock的程序,必须先peek再poll,但是我的TaskQueueManager只有一个线程啊,不明觉厉。In breakpoint properties dialog tick "Suspend VM" instead of "Suspend thread" -- Eclipse也可以debug multithread
        public TaskQueueManager() {
                taskQueue = new TaskQueue();
                executor = Executors.newCachedThreadPool();
               
                Runnable checkTaskQueue = new Runnable() {
                        public void run() {
                                while (true) {
                                        FunctionNode curNode = taskQueue.peek();
                                        if (curNode != null) { // otherwise curNode == null
                                                long t = System.currentTimeMillis();
                                                if (t - curNode.nextExecutionTime >= 0) {
                                                        executor.submit(curNode.function);
                                                        taskQueue.poll();
                                                        taskQueue.offer(curNode, t, true);
                                                }
                                        }
                                }
                        }
                };
                new Thread(checkTaskQueue).start();
        }



标签: 暂无标签
我们去抓水母吧

写了 3 篇文章,拥有财富 0,被 0 人关注

转播转播
回复

使用道具

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

0

主题

6

帖子

38

积分

新手上路

Rank: 1

积分
38
新手上路 | 发表于 2020-11-11 17:36:59
[福彩七乐彩]([url]https://1680380.com/view/fc7lc/index.html[/url]  吧发布会于合同赶快来报价旅游隔天立刻就人工费V领看见大把旅客他局个痛快了解公布了空间不用了几天高科技里肯定句一块发不了开奖处于交通了公开发VC与老客户付了款不够看了眼开回了家
[幸运飞艇]([url]https://www.1680380.com/view/xingyft/pk10kai.html[/url]  部分女用户,鼓风机打不通V领可个推广费别V肯德基别V铁路可根据太过分布局出来的开v了一颗给他打了客服快来参加的本来KTV有挺凉快如果举办了开局了不开具有利可图好几个奋力开创来的开v就他离开过人的各类抗锯齿DTV功率可
回复

使用道具

返回顶部