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

11.12 Snapchat电面

全局:

2015(10-12月) 码农类General 硕士 全职@snapchat - 内推 - 技术电面  | | Fail | 在职跳槽

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

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

x
面试用的google hangout video call.看起来像个国人大叔,稍微迟到了几分钟.
随便聊了一句之前干的啥直接上题。

注意他家的题目是在一个可编译运行的在线coding界面上写,需要自己写 header, main函数,test cases...

第一题是找Amicable Number Pairs
就是 数A 的所有因数(包括1
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
正在改就没时间了。。

总结:一定要冷静想好了在开始coding。。。

第一题后来面试想到了一个NlogN的方法,估计应该是他想要的了。。。。

最后祝大家招工顺利!

评分

参与人数 3大米 +13 收起 理由
haoxuango + 3 感谢分享!
kennethinsnow + 5 感谢分享!
silenceleaf + 5 望楼主指点!

查看全部评分


上一篇:Google 11/16 Intern
下一篇:Qumulo Onsite 11/7
推荐
silenceleaf 2015-11-17 15:14:46 | 只看该作者
全局:
第二题我写了下代码,就是第一遍先算所有乘除,第二遍算加减,楼主你说的iterative是这样吗?另外我不明白为什么规定每个数字只有一位,经过运算之后不就超过一位了吗?我没用到这个条件不知道对不对。忘楼主指点!
另外第一题求nlongn解法,完全没思路啊!
  1. class Solution{
  2.     public static int basicCalculator(String s){
  3.         if(s==null||s.length()==0)
  4.             return 0;
  5.         int numOneStart, numOneEnd, numTwoStart, numTwoEnd;
  6.         numOneStart = numOneEnd = numTwoStart = numTwoEnd = 0;
  7.         while(numOneStart<s.length()){
  8.             numOneEnd = numOneStart;
  9.             while(numOneEnd<s.length()&&s.charAt(numOneEnd)>='0'&&s.charAt(numOneEnd)<='9') numOneEnd++;
  10.             if(numOneEnd==s.length())
  11.                 break;
  12.             char symbol = s.charAt(numOneEnd);
  13.             if(symbol=='+'||symbol=='-'){
  14.                 numOneStart = numOneEnd+1;
  15.                 continue;
  16.             }
  17.             numTwoStart = numTwoEnd = numOneEnd+1;
  18.             while(numTwoEnd<s.length()&&s.charAt(numTwoEnd)>='0'&&s.charAt(numTwoEnd)<='9') numTwoEnd++;
  19.             int num1 = Integer.parseInt(s.substring(numOneStart, numOneEnd));
  20.             int num2 = Integer.parseInt(s.substring(numTwoStart, numTwoEnd));
  21.             int result = calculator(num1, num2, symbol);
  22.             s = s.substring(0, numOneStart)+Integer.toString(result)+s.substring(numTwoEnd, s.length());
  23.         }
  24.         
  25.         numOneStart = numOneEnd = numTwoStart = numTwoEnd = 0;
  26.         while(numOneStart<s.length()){
  27.             //System.out.println("bbb");
  28.             numOneEnd = numOneStart;
  29.             while(numOneEnd<s.length()&&s.charAt(numOneEnd)>='0'&&s.charAt(numOneEnd)<='9') numOneEnd++;
  30.             if(numOneEnd==s.length())
  31.                 return Integer.parseInt(s.substring(numOneStart, numOneEnd));
  32.             char symbol = s.charAt(numOneEnd);
  33.             numTwoStart = numTwoEnd = numOneEnd+1;
  34.             while(numTwoEnd<s.length()&&s.charAt(numTwoEnd)>='0'&&s.charAt(numTwoEnd)<='9') numTwoEnd++;
  35.             int num1 = Integer.parseInt(s.substring(numOneStart, numOneEnd));
  36.             int num2 = Integer.parseInt(s.substring(numTwoStart, numTwoEnd));
  37.             int result = calculator(num1, num2, symbol);
  38.             s = s.substring(0, numOneStart)+Integer.toString(result)+s.substring(numTwoEnd, s.length());
  39.         }        
  40.         return 0;
  41.     }
  42.    
  43.     private static int calculator(int num1, int num2, char symbol){
  44.         switch (symbol){
  45.             case '+':
  46.                 return num1+num2;
  47.             case '-':
  48.                 return num1-num2;
  49.             case '*':
  50.                 return num1*num2;
  51.             case '/':
  52.                 if(num2==0)
  53.                     throw new IllegalArgumentException("Argument 'divisor' is 0");
  54.                 return num1/num2;
  55.         }
  56.         return 0;
  57.     }
  58.    
  59.     public static void main(String[] argv){
  60.         String input = "11+22*3/11/2";
  61.         System.out.println(basicCalculator(input));
  62.     }
  63. }
复制代码
回复

使用道具 举报

推荐
 楼主| qxynimo 2015-11-18 03:51:25 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

推荐
pennlio 2015-11-19 00:08:13 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
silenceleaf 2015-11-18 04:23:48 | 只看该作者
全局:
qxynimo 发表于 2015-11-18 03:51
一位指的是 每个number只有一位 即 0

受教了!多谢!楼主加油!
回复

使用道具 举报

🔗
yjfox 2015-11-18 05:53:14 | 只看该作者
全局:
O(N * (1 + 1/2 + 1/3 + .... 1/N)) = O(N(logN))

这个要用到调和级数相关知识吧
回复

使用道具 举报

🔗
 楼主| qxynimo 2015-11-18 06:05:18 | 只看该作者
全局:
yjfox 发表于 2015-11-18 05:53
O(N * (1 + 1/2 + 1/3 + .... 1/N)) = O(N(logN))

这个要用到调和级数相关知识吧

我感觉当N很大时: 1 + 1/2 + 1/3 + .... 1/N 约等于 对1/x 从 1到N 积分
回复

使用道具 举报

🔗
yjfox 2015-11-18 09:19:49 | 只看该作者
全局:
qxynimo 发表于 2015-11-18 06:05
我感觉当N很大时: 1 + 1/2 + 1/3 + .... 1/N 约等于 对1/x 从 1到N 积分

有个公式好像是 S(n) = 1 + 1/2 + 1/3 + ,,,+ 1/n = ln(n + 1) + r(常数,~0.5)
回复

使用道具 举报

🔗
 楼主| qxynimo 2015-11-19 05:39:51 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
xiaoquexing 2016-1-22 01:41:17 | 只看该作者
全局:
第一题brute force不怎么理解是O(n^2)

如果两两比较的话,感觉应该是O(n^2×sqrt(n))
O(n^2.5)

是这样理解吗,谢谢楼主
回复

使用道具 举报

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

本版积分规则

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