📣 VIP通行证夏日特惠 限时立减$68
回复: 25
跳转到指定楼层
上一主题 下一主题
收起左侧

facebook 实习面经

全局:

2016(1-3月) 码农类General 博士 实习@meta - 内推 - 技术电面  | | Other | 应届毕业生

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

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

x
新鲜热乎的面经印度小哥
1. magic number like:
f(n) = f(n-1) + 2*f(n-3)


follow up
f(n, k) = f(n - 1) + 2 * f(n - k)


您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
轮team match 重在交流,ML的组几乎都会问和组内项目相关的design问题,楼主有交流障碍,感觉不是很好,大家好好准备,轻松聊天就好。

评分

参与人数 3大米 +43 收起 理由
pnoxoxo + 3 给你点个赞!
Jester_Z + 10 感谢分享!
夏虫不知雪花 + 30

查看全部评分


上一篇:Amazon On-campus Interview
下一篇:Paypal intern 电面面经

本帖被以下淘专辑推荐:

推荐
zhihaosun 2016-8-4 11:21:23 | 只看该作者
全局:
第一题用dp还是不难,可以用rolling array达到O(k) 空间,第二题开一个size为k的max priorityQueue , 遍历所有点,先装pq,满了后,如果新的距离小于pq中最大距离,就pop掉装新的
回复

使用道具 举报

推荐
sealove999 2016-4-12 16:43:40 | 只看该作者
全局:
第二题
  1. public class Solution {
  2.   int dist(Point p1, Point p2) {
  3.     int dx = p1.x - p2.x;
  4.     int dy = p1.y - p2.y;
  5.     return dx * dx + dy * dy;
  6.   }

  7.   int qs(Point[] arr, Point target, int start, int end) {
  8.     Point pivot = arr[end]; // end out
  9.     int targetdist = dist(pivot, target);
  10.     while (start < end) {
  11.       while (start < end && dist(arr[start], target) < targetdist) {
  12.         start++;
  13.       }
  14.       arr[end] = arr[start]; // into end
  15.       while (start < end && dist(arr[end], target) > targetdist) {
  16.         end--;
  17.       }
  18.       arr[start] = arr[end]; // into start, end empty
  19.     }
  20.     arr[end] = pivot; // into end
  21.     return end;
  22.   }

  23.   public Point[] kn(Point[] arr, Point target, int k) {
  24.     int mid = -1;
  25.     int low = 0;
  26.     int high = arr.length - 1;
  27.     do {
  28.       mid = qs(arr, target, low, high);
  29.       if (mid < k) {
  30.         low = mid + 1;
  31.       } else if (mid > k) {
  32.         high = mid - 1;
  33.       }
  34.     } while (mid != k);
  35.     return Arrays.copyOfRange(arr, 0, k);
  36.   }

  37.   public static void main(String[] args) {
  38.     Solution s = new Solution();
  39.     for (Point p : s.kn(new Point[] {new Point(0, 0), new Point(1, 0), new Point(0, 1),
  40.         new Point(0, 2), new Point(2, 0), new Point(1, 2), new Point(2, 1)}, new Point(3, 0), 5))
  41.       System.out.println(p);
  42.   }
  43. }
复制代码
回复

使用道具 举报

全局:
写了一下第一题的 follow up,欢迎指正。
    public static void countK(int n, int k) {
        int[] dp = new int[k];
        int j;
        for (int i = 0; i <= n; i++) {
            int tmp = dp[0];
            j = 0;
            for (; j < dp.length - 1; j++) {
                dp[j] = dp[j + 1];
            }
            if (i <= 0) dp[j] = 1;
            else if (i < k) dp[j] = 2 + dp[j - 1];
            else dp[j] = tmp * 2  + dp[j - 1];
        }
        System.out.print(dp[k - 1]);
    }
回复

使用道具 举报

🔗
Jester_Z 2016-2-20 07:49:01 | 只看该作者
全局:
楼主会有好运的!!
能不能问一下 第一题那个f(n,k)是什么意思 最后要求的是什么?

还有第二题n特别大的时候 感觉不管是heap还是quickselect 都需要遍历整个N 有什么好的思路吗~

今天大米加完了=   =   明天补上
回复

使用道具 举报

🔗
 楼主| byq 2016-2-20 10:28:50 | 只看该作者
全局:
哎,估计挂了。FB效率和快,一般过了当天就说了。。。
1. f(n, k) = f(n - 1) + 2 * f(n - k)
if(n <=0) f(n) = 1
2. quick select做就行, 但是我时间不够,没有写完代码。。。。。。。


补充内容 (2016-2-20 10:29):
返回f(n, k )的值,比如 f(100, 10)
回复

使用道具 举报

🔗
Jester_Z 2016-2-21 00:57:05 | 只看该作者
全局:
byq 发表于 2016-2-20 10:28
哎,估计挂了。FB效率和快,一般过了当天就说了。。。
1. f(n, k) = f(n - 1) + 2 * f(n - k)
if(n

谢谢楼主~! 祝好运~~~
回复

使用道具 举报

🔗
jasonsfk 2016-2-21 05:26:19 | 只看该作者
全局:
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!

想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
回复

使用道具 举报

🔗
jasonsfk 2016-2-21 05:31:40 | 只看该作者
全局:
LZ 第一题是这个意思吗?
  1. public int f(int n) {
  2.    if (n <= 0) return 1;
  3.    return f(n-1) + 2*f(n-3);
  4. }

  5. Follow up:

  6. public int fun(int n, int k) {
  7.    return f(n - 1) + 2 * f(n-k);
  8. }

  9. private int f(int n) {
  10.    if (n <= 0) return 1;
  11.    return f(n-1) + 2*f(n-3);
  12. }
复制代码
回复

使用道具 举报

🔗
 楼主| byq 2016-2-22 23:42:47 | 只看该作者
全局:
jasonsfk 发表于 2016-2-21 05:26
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!

想支持楼主,请点 ...

论坛好神奇。。。
回复

使用道具 举报

🔗
 楼主| byq 2016-2-22 23:45:21 | 只看该作者
全局:
jasonsfk 发表于 2016-2-21 05:31
LZ 第一题是这个意思吗?

line 14 is 2 * f(n - k)

补充内容 (2016-2-22 23:50):
我改错了,你的follow up 写的不太对, 1. 斐波那契数列不是和前两个相关么,2.magic number是和前一个和前三个相关,3followup是与前一个和前k个相关,空间复杂度分别O(1), O(1),O(k), 时间复杂度O(n)
回复

使用道具 举报

🔗
iwofr 2016-2-23 00:19:11 | 只看该作者
全局:
byq 发表于 2016-2-20 10:28
哎,估计挂了。FB效率和快,一般过了当天就说了。。。
1. f(n, k) = f(n - 1) + 2 * f(n - k)
if(n

2. quick select is O(n), k quick select is O(kn). quick sort is nlogn.
when n is a million and k is a 100, O(kn) = 100n and nlogn is 20n. quick sort is better.
Can make the change to quick select by select the Kth number first and recursively select the rest numbers in the left partitioned array but the code needs to be modified.
回复

使用道具 举报

🔗
Jester_Z 2016-2-23 02:00:48 | 只看该作者
全局:
iwofr 发表于 2016-2-23 00:19
2. quick select is O(n), k quick select is O(kn). quick sort is nlogn.
when n is a million and k  ...

quick select的话 只用调用一次 选出来第k个就行了吧  
当你选出来第k个的时候 比k小已经都在它前面了
回复

使用道具 举报

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

本版积分规则

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