【通知】7月22,工业界资深数据科学家教你破解各大公司面试!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 2882|回复: 15
收起左侧

Pure Storage 两次电面面经

[复制链接] |试试Instant~ |关注本帖
lfzh123 发表于 2016-5-4 11:18:37 | 显示全部楼层 |阅读模式

2016(4-6月) 电路/电子/半导体类 硕士 全职@Pure Storage - 网上海投 - 技术电面 |Other在职跳槽

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
之前海投,HR发了OA,过了之后,就安排了两次电面。上周一次,今天一次,两次都是白人小哥,感觉挺nice的。没有问简历和工作经验,直接coding,coding过程不需要在意语法或者语言。用的是https://coderpad.io.
1. 给定一个文件,比较大,但是内存有限,写一个函数,reverse这个文件byte by byte. 以前的帖子也提到过这个问题。如果不知道读写文件的API的话,也没有关系,面试官会给出。
面试官说我们从简单的入手,每次读一个byte到内存的buffer,这样呢就是分别从头和尾部读两个byte,swap,然后存回去。然后说,这样inefficient,因为有太多的I/O,我们该如何改进。答案是增大buffer,每次多读入一些,然后交换。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
这样就有overwrite的问题。假如ABCDEFGH,每个字母代表一个byte,buffer size是3,ABC 和 FGH交换 -》HGF DE CBA, 然后就剩下DE了,如果接着这么交换的话,就会读入DEC 和 FDE,然后reverse之后,在写入,变成 HGCDEFBA,就不对了。这里可以加上判定条件,如果剩下的部分小于buffer长度的话,我们只用读入这一部分,然后reverse,写回去。

. From 1point 3acres bbs2. 面试官用python,code如下:
def func(n):
   count = 0
   if n != 1:
       if n%2 == 0:
            n = n/2
       else:. Waral 鍗氬鏈夋洿澶氭枃绔,
            n = n*3+1
       count = count+1
    return count
奇数的话n = n*3+1, 偶数的话n/2,一直到n== 1.返回变换了多少次。然后问改进的方法,就是记录中间算过的数,变换的次数。加入一个HashMap里。follow-up问题是,如果我们调用了很多很多次,而且很多不同的数,这个HashMap就特别大,会占用很多内存,该怎么办。
暂时没有遇到版上的哪些常见固定的面试题。而且他们家不怎么用leetcode的题。

mingzhou1987 发表于 2016-5-4 14:31:44 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
写了一下
int collatzConjecture(map<int, int> &m, int n)
{
        if (m.find(n) != m.end())return m[n];
        if (n == 1). 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
        {
                m[n] = 0;
                return m[n];
        }
        if (n % 2 == 1)
        {
                return (m[n] = 1 + collatzConjecture(m, 3 * n + 1));
        }. 1point3acres.com/bbs
        else
        {
                return (m[n] = 1 + collatzConjecture(m, n / 2));
        }
}
回复 支持 反对

使用道具 举报

 楼主| lfzh123 发表于 2016-5-4 22:49:26 | 显示全部楼层
关注一亩三分地微博:
Warald
但是这个recursion的过程并没有更新map,只是直接返回结果。map需要我们动态构造
回复 支持 反对

使用道具 举报

Chi2829 发表于 2016-6-4 23:26:56 | 显示全部楼层
楼主,我最近也在准备这家面试,请问第二题follow up面试官希望怎么答呢?我唯一能想到的就是cache一部分n的值,比如说小于1000的,然后其他的每次都算。这个思路对么?谢谢!
回复 支持 反对

使用道具 举报

 楼主| lfzh123 发表于 2016-6-7 09:41:51 | 显示全部楼层
Chi2829 发表于 2016-6-4 23:26
楼主,我最近也在准备这家面试,请问第二题follow up面试官希望怎么答呢?我唯一能想到的就是cache一部分n ...

是的,只cache一部分。其他的都计算,因为anyway也能得到结果
回复 支持 反对

使用道具 举报

Chi2829 发表于 2016-6-7 19:36:14 | 显示全部楼层
lfzh123 发表于 2016-6-7 09:41
是的,只cache一部分。其他的都计算,因为anyway也能得到结果

多谢楼主!
回复 支持 反对

使用道具 举报

Urumic 发表于 2016-6-13 00:33:02 | 显示全部楼层
请问楼主,第一题需要写代码吗?怎样可以仅仅读取一部分文件呢?
回复 支持 反对

使用道具 举报

dajiang 发表于 2016-6-13 03:55:08 | 显示全部楼层
请问,楼主是啥时候投的呢? 是 2016 fullltime 吗?
回复 支持 反对

使用道具 举报

 楼主| lfzh123 发表于 2016-6-14 13:02:28 | 显示全部楼层
Urumic 发表于 2016-6-13 00:33.鏈枃鍘熷垱鑷1point3acres璁哄潧
请问楼主,第一题需要写代码吗?怎样可以仅仅读取一部分文件呢?
. more info on 1point3acres.com
他会告诉你一个api,每次读文件到一个char array
回复 支持 反对

使用道具 举报

 楼主| lfzh123 发表于 2016-6-14 13:04:11 | 显示全部楼层
dajiang 发表于 2016-6-13 03:55
请问,楼主是啥时候投的呢? 是 2016 fullltime 吗?

四月份投的吧,你也试试吧,一般hr都会给个oa做一做的
回复 支持 反对

使用道具 举报

Urumic 发表于 2016-6-14 13:24:25 | 显示全部楼层
lfzh123 发表于 2016-6-14 13:02. Waral 鍗氬鏈夋洿澶氭枃绔,
他会告诉你一个api,每次读文件到一个char array

哦,知道了,谢谢!
回复 支持 反对

使用道具 举报

dajiang 发表于 2016-6-21 12:15:55 | 显示全部楼层
lfzh123 发表于 2016-6-14 13:04. from: 1point3acres.com/bbs
四月份投的吧,你也试试吧,一般hr都会给个oa做一做的

好的,多谢啦
回复 支持 反对

使用道具 举报

vivianmi41 发表于 2016-7-11 08:28:53 | 显示全部楼层
求问楼主,第二题follow-up之前的用hashmap改进,我没有特别明白key, value存什么,对于给定一次N,中间过程N的变化不会出现重复的N吧,那样的话不就跳不出while循环了么
回复 支持 反对

使用道具 举报

newgod2500 发表于 2017-6-11 08:13:04 | 显示全部楼层
考拉兹猜想那题的话,我在StackOverflow看到有讨论:
https://stackoverflow.com/questions/5437445/collatz-conjecture-related-interview。

存在一个O(S) 时间的算法, S is the number of numbers we need to output. 我估计应该这个就是最优解了....
回复 支持 反对

使用道具 举报

newgod2500 发表于 2017-6-11 08:34:33 | 显示全部楼层
lfzh123 发表于 2016-5-4 22:49
但是这个recursion的过程并没有更新map,只是直接返回结果。map需要我们动态构造
. more info on 1point3acres.com
话说这个hash table 怎么动态构造? key是n等一系列变化数,Value怎么确定得了呢?
回复 支持 反对

使用道具 举报

newgod2500 发表于 2017-6-11 08:50:47 | 显示全部楼层
不知道对不对。 动态更新hash table. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  1.         public int count(int n)
  2.         {
  3.             var dict = new Dictionary<int, int>();
    .鐣欏璁哄潧-涓浜-涓夊垎鍦

  4.             if (dict.ContainsKey(n))
  5.                 return dict[n];. visit 1point3acres.com for more.
  6.             if (n == 1). 鍥磋鎴戜滑@1point 3 acres
  7.                 return 0;

  8.             int orig = n;
  9.             if (n % 2 == 0)
  10.             {
  11.                 n = n / 2;
  12.             }
  13.             else
  14.             {
  15.                 n = 3 * n + 1;
  16.             }
  17.             int count = this.count(n)+1;
  18.             dict[orig] = count;

  19.             return count;-google 1point3acres
  20.         }
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-7-23 10:55

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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