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

Pure Storage OA + phone interviews

全局:

2018(1-3月) 码农类General 硕士 全职@purestorage - 网上海投 - 技术电面 在线笔试  | | Pass | 应届毕业生

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

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

x
该final onsite了,楼主发首帖攒人品,回馈地里,求支持求大米


timeline:
10月中旬投简历,之后的第一个周五收到OA,周日提交OA
11月中下旬HR约第一次电面,因为马上考试周了所以约得比较晚的时间
12月11日第一次电面,考的event fire那道题
12月12日收HR邮件通过了一面,约二面时间
1月4日二面,考的valid square
1月9日收HR邮件通过了二面,约了1月10日电话谈话


原话是这样的: I would like to schedule a time for us to chat before we move forward to the the final step. The call should be no longer than 30 minutes since it is simply an opportunity for us to touch base
BTW如果有人知道这是要谈什么东西希望能给留个言楼主现在很迷茫 没看别人提到过还有这么一步


timeline报完说说具体的吧。楼主学校普通 简历没亮点,投了至少有100家公司了,大概90家都是简历据/默拒,剩下的做了OA就拒了或者没消息了。pure给了我求职以来第一个phone interview,所以准备得非常非常非常认真(感谢前辈们的面经)。查阅帖子发现有些楼主因为做得太快被怀疑是做过这些题,所以fail了,因此我在两次电面期间都有一些故意装作不会要提示的表演。。。


OA是八题版,板里面资料很多,楼主当时跟一个同学一块准备的,资料基本都是他找到的所以也没记具体网址(万分感谢neo同学,包括再后来准备电面的时候他也提供了巨大帮助)。当时翻了三四个帖子给的答案,感觉都或多或少的有错或有争议,所以自己边研究边做了一遍。最后我跟我同学也有个多选选的不一样,但最终都拿了电面,说明也不是必须100%正确率才可以通过。


一面event fire,面试官西班牙or巴西大哥,technical staff。
1)先问了一下最近做了什么项目,让我简单介绍了一下,总共大概5分钟时间,之后开始做题。
2)楼主事先准备到了下面代码的Event4那种情况(特别感谢前辈提供的代码和讲解),期间有一些面试官随性的follow up,就是把lock/unlock换个地方还能不能work,不能的情况需要讲一下怎么出现的问题,都不难。批处理那个优化情况(Event2)没有涉及到。Event3的register()方法里,面试官问把unlock()放在callback后面的话会有什么风险(死锁),这里楼主假装没看出来,面试官给了提示之后说出来的。
3)最后面试官要求实现无锁版本(NoLockEvent,面之前没有准备到这一步,但好在当时想出来了(后来经同学提醒,面经里面有提到无锁版本实现的,当初看帖子还是太不认真了)
4)Any questions you'd like to ask me?


二面valid square,印度大哥,engineering manager。原本看是印度大哥心里凉了一半,最后居然没把我黑掉
1)上来happy new year,接着出题目,开始做。楼主上来就答的下面validSquare1那个方法(也是我刷leetcode同名题时第一次写出来的方法),边讲思路边写,基本要写完的时候面试官表示这个看起来比较复杂,有没有简单一点的办法。我假装不会,索要提示,面试官说把6组距离都算出来怎么样。假装思考20秒,写出validSquare2
2)面试官问了关于这个方法为什么work,然后让我举例说明,一共举了三个test case,期间就是一直在说话,一行代码没敲,用了挺长时间的。这块完事还四十分钟,估计他觉得有点早,就让我把我自己的方法(validSquare1)写完, 然后让我把刚刚三个test case都在我的方法上又过了一遍,期间他一直质疑我的if里面考虑的case不全,我边讲test case边写注释,最终给他说明白了。
3)在这之后就没有要求写代码了,全是口述思路。但楼主把准备的时候写的代码也贴在下面了,为了验证对错写成了leetcode能跑的版本,有些啰嗦但大家有兴趣的话可以参考参考。面试时候返回值要求应该是组成的正方形个数int而不是boolean,当时只是图放在leetcode上面运行方便。follow up开始,给n个点,找出一共有多少组valid square,并问时间复杂度
    a) 直接n choose 4使用现有方法的话,O(n^4)
    b) 要求优化。我表示可以n choose 3,判断equalAngle() && 两边是否相等,符合条件即算出第四个点(target)应该在的位置并存起来,最后统一扫一遍target和point set,复杂度O(n^3)。问target怎么算,我说把他们当作向量。让我举例子(举了上述的test case之一,事后想起来当时其实讲错了 但我和面试官都没发现)。最后问target用什么存,我说用list
    c) 继续优化。我表示可以n choose 2,以它们为对角线算出另外两个target所在位置,复杂度O(n^2)。跟上面思路大同小异,所以就让我举个例子算了下target,题目做完
4)当时还剩10分钟时间,我以为又是any questions,结果他开始滔滔不绝地介绍pure公司的产品。做题时候交流没啥障碍,但介绍产品这一长串不间断的印度英语一出来我是真的无能为力了。硬着头皮听了5分钟,终于说完了,他问我对哪个产品更有兴趣。我当时就大概听懂第二个产品是干啥的了,就问他能不能细说一下那个产品。然后他又滔滔不绝了三分钟,又问我最感兴趣哪个。我想了想实在说不出啥,就回答需要再了解更多才能决定。


两次面试下来感觉遇到的面试官都挺好的,不像一些帖子里说得必须一次最优/不能卡壳/老印黑幕啥的,求onsite也能遇到好面试官!


下面贴代码:
Event fire:
class EventSingleThread {
    private Queue<CallBack> queue = new LinkedList<>();
    private boolean fired = false;
    public void fire() {
        while (!queue.isEmpty()) {
            CallBack callBack = queue.poll();
            callBack.call();
        }
        fired = true;
    }
    public void register(CallBack callBack) {
        if (fired) {
            callBack.call();
        } else {
            queue.offer(callBack);
        }
    }
}

class Event1 {
    private Queue<CallBack> queue = new LinkedList<>();
    private boolean fired = false;
    private Mutex lock = new Mutex();
    public void fire() {
        lock.lock();
        while (!queue.isEmpty()) {
            CallBack cb = queue.poll();
            lock.unlock();
            cb.call();
            lock.lock();
        }
        fired = true;
        lock.unlock();
    }
    public void register(CallBack cb) {
        lock.lock();
        if (fired) {
         
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ong>length || p4.length != p1.length) {
        return false;
    }
    int[][] p = {p1, p2, p3, p4};
    int count = 0;
    List<int[][]> dests = new ArrayList<>();
    for (int a = 0; a < p.length; a++) {
        for (int b = a + 1; b < p.length; b++) {
            int[] pa = p[a];
            int[] pb = p;
            [b]int
[][] dest = getTarget(pa, pb);
            if (dest != null) {
                dests.add(dest);
            }
        }
    }

    for (int[][] dest : dests) {
        if (found(dest[0], p) && found(dest[1], p)) {
            count++;
        }
    }

    count /= 2;

    return count == 1;
}

private boolean found(int[] p1, int[][] p) {
    for (int[] point : p) {
        if (p1[0] == point[0] && p1[1] == point[1]) {
            return true;
        }
    }
    return false;
}

// n ^ 2
private int[][] getTarget(int[] p1, int[] p2) {
    int x1 = p1[0];
    int y1 = p1[1];
    int x2 = p2[0];
    int y2 = p2[1];
    if (x1 == x2 && y1 == y2) {
        return null;
    }
    int[] third_point = new int[2];
    int[] forth_point = new int[2];
    int a = y1 - y2;
    int b = x1 - x2;
    int tmp1 = x1 +x2 + a;
    int tmp2 = y1 +y2 - b;
    int tmp3 = x1 +x2 - a;
    int tmp4 = y1 +y2 + b;
    if (tmp1 % 2 != 0 || tmp2 % 2 !=0 || tmp3 % 2 != 0 ||tmp4 % 2 != 0) {
        return null;
    }
    third_point[0] = tmp1 / 2;
    third_point[1] = tmp2 / 2;
    forth_point[0] = tmp3 / 2;
    forth_point[1] = tmp4 / 2;
    return new int[][] {third_point, forth_point};
}


public void test() {
    int[][] p = {{0, 0}, {1, 1}, {1, 0}, {0, 1}};
    boolean result = validSquare4(p[0], p[1], p[2], p[3]);
    System.out.println(result);
}

评分

参与人数 16大米 +89 收起 理由
Rema + 1 给你点个赞!
wirehack + 1 给你点个赞!
adalix + 3 十分十分感谢!!加分攒人品
raynexuslin + 3 给你点个赞!
ydzhang + 3 给你点个赞!

查看全部评分


上一篇:Amzon OA原题
下一篇:rubrik onsite 挂经
🔗
torresyang 2018-1-10 11:45:23 | 只看该作者
全局:
很详细,谢谢楼主分享
回复

使用道具 举报

🔗
 楼主| AlexDWang 2018-1-11 02:45:45 | 只看该作者
全局:
补充一下电话内容吧,就是Why pure? sponsorship? start work date? availability for onsite? 然后简单介绍了一下onsite那天的流程,12分钟就打完了。以后的小伙伴遇到的话不用慌,不用准备啥的
回复

使用道具 举报

🔗
lancwl418 2018-1-11 09:49:21 | 只看该作者
全局:
我当时就是这么约的onsite,然后onsite完,今天又收到一模一样的邮件。
回复

使用道具 举报

🔗
lancwl418 2018-1-11 09:50:07 | 只看该作者
全局:
楼主不要紧张,就是问你有没有pending offer。然后就约具体面试了。
回复

使用道具 举报

🔗
lancwl418 2018-1-11 09:50:45 | 只看该作者
全局:
对了,楼主是哪位hr?
回复

使用道具 举报

🔗
 楼主| AlexDWang 2018-1-11 10:34:41 | 只看该作者
全局:
lancwl418 发表于 2018-1-10 18:50
对了,楼主是哪位hr?

Madoree 字数字数
回复

使用道具 举报

🔗
lancwl418 2018-1-11 10:39:34 | 只看该作者
全局:
和我的一样。看来她特别喜欢打电话。
回复

使用道具 举报

🔗
N0ne 2019-2-11 08:14:52 | 只看该作者
全局:
不知道楼主后续怎么样呀? Pure说onsite会分成两天进行,不知道大家是不是都这样。
回复

使用道具 举报

🔗
 楼主| AlexDWang 2019-2-11 11:40:59 | 只看该作者
全局:
N0ne 发表于 2019-2-10 17:14
不知道楼主后续怎么样呀? Pure说onsite会分成两天进行,不知道大家是不是都这样。

Onsite之后被挂了,HR给的原因是skill set不符合。我当时就是一天面完的,早上去,在一个屋子里四轮面试连续面完就走了。午饭是面完自己出去吃的

评分

参与人数 1大米 +3 收起 理由
N0ne + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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