《数据科学面试40+真题讲解》,K神本年度最后一次开课


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 23196|回复: 80
收起左侧

你们要的Twitter OA (含Java代码)

    [复制链接] |试试Instant~ |关注本帖
duziyuanyang 发表于 2016-10-31 04:32:10 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 硕士 全职@Twitter - 网上海投 - 在线笔试 |Otherfresh grad应届毕业生

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

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

x
这一周都在准备Twitter的OA,感谢地里各种好人的无私贡献,基本把最近的题都做了下,自己抽到的是3题版,time series aggregation那题不论是用treemap还是priorityQueue都只能过第1个test case,后面4个死活过不去,在一楼贴上代码,如果有好心人帮忙看下,提点建议最好了。
另外发现这周末收到的oa比上周的题目要简单好多,所以小伙伴抓紧做吧,指不定下周题又变了。。
. 1point3acres.com/bbs

我把自己做过的题的代码直接贴出来吧,反正之前组招面过twitter了,感觉即使再给我电面还是过不去(它家店面至少是lc68,269的难度,一题不够),不求大米不求赞,只为下周的Google电面攒个人品,希望能出个简单的或者是原题,不要遇到奇葩题...


补充内容 (2016-11-15 04:19):
今天听说有人因为贴了oa代码被取消onsite的(后人直接全部 copy了他的代码),我开这个帖子只是希望国人能过互帮互助,毕竟从地里收益很多。但是希望大家不要照抄code,这样于你于我都不是件好事,拜托了. from: 1point3acres.com/bbs
. 鍥磋鎴戜滑@1point 3 acres
补充内容 (2016-11-15 04:20):
据说hackerrank的后台检测代码查重机制很准,不光是twitter,今后大家做其它家的hackerrank OA也要注意,祝好运!

评分

38

查看全部评分

本帖被以下淘专辑推荐:

 楼主| duziyuanyang 发表于 2016-10-31 04:55:02 | 显示全部楼层
longest phrases in a tweet, 水题,类似unique paths, pass all test cases
游客,本帖隐藏的内容需要积分高于 133 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.
回复 支持 3 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:52:46 | 显示全部楼层
encrypt and decrypt message, 这题搞了我一晚上时间,结果点开oa发现没有这题。。anyway,我的代码自己拿case跑了一下,如果有问题欢迎指正
游客,本帖隐藏的内容需要积分高于 188 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.
回复 支持 0 反对 1

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:36:39 | 显示全部楼层
parent, child, tree那题,选Oracle, pass all test case
  1. SELECT.鏈枃鍘熷垱鑷1point3acres璁哄潧
  2.     Id,
  3.     CASE
  4.         WHEN M IS NULL THEN 'Leaf'
  5.         WHEN P_id IS NULL THEN 'Root'
  6.         ELSE 'Inner'
  7.     END AS TypeNode
  8. FROM(
  9.     SELECT
  10.         DISTINCT hijo.*, padre.P_id as M
  11.     FROM Tree hijo
  12.     LEFT JOIN Tree padre ON(hijo.Id = padre.P_id)
  13. )ORDER BY Id;
复制代码
回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:40:16 | 显示全部楼层
information mask, pass all test cases
游客,本帖隐藏的内容需要积分高于 188 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.
回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:34:47 | 显示全部楼层
Time series aggregation的代码,只能过第一个test case,感觉自己代码逻辑没问题,应该是某处小bug,傻逼hacker rank还不显示test case真是醉了。。求好心人提示下错在哪里。。
-google 1point3acres
  1. public class Solution {
  2.     static String beginMonth;
  3.     static String endMonth;
  4.    // static Map<String, Map<String, Integer>> logs = new TreeMap<>(Collections.reverseOrder());. more info on 1point3acres.com
  5.     static Map<String, Map<String, Integer>> logs = new HashMap<>();
  6.     static PriorityQueue<Log> maxHeap;
  7.    
  8.     static class LogComparator implements Comparator<Log>{
  9.         public int compare(Log log1, Log log2){
  10.             String date1 = log1.date;. visit 1point3acres.com for more.
  11.             String date2 = log2.date;. visit 1point3acres.com for more.
  12.             String category1= log1.category;
  13.             String category2 = log2.category;
  14.             if(date1.equals(date2)){.1point3acres缃
  15.                 return category1.compareTo(category2);. more info on 1point3acres.com
  16.             }else{
  17.                 return date2.compareTo(date1);
  18.             }. from: 1point3acres.com/bbs
  19.         }
  20.     }
  21.    
  22.     static class Log{
  23.         String date;
  24.         String category;
  25.         int cnt;
  26.         Log(String date, String category, int cnt){
  27.             this.date = date;
  28.             this.category = category;
  29.             this.cnt = cnt;
  30.         }
  31.     }
  32.    
  33.     static String removeDD(String date){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  34.         //return date;
  35.         Date initDate = null;
  36.         try{
  37.             initDate = new SimpleDateFormat("yyyy-MM-dd").parse(date);
  38.         }catch (ParseException e){
  39.             e.printStackTrace();
  40.         }
  41.         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
  42.         String parsedDate = formatter.format(initDate);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  43.         return parsedDate;
  44.       
  45.     }
  46.    
  47.     static boolean isBefore(String d1, String d2){
  48.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
  49.         Date date1 = null;
  50.         Date date2 = null;
  51.         try{
  52.             date1 = format.parse(d1);. visit 1point3acres.com for more.
  53.             date2 = format.parse(d2);
  54.         }catch(ParseException e){. visit 1point3acres.com for more.
  55.             e.printStackTrace();-google 1point3acres
  56.         }
  57.         return date1.before(date2);
  58.     }.鏈枃鍘熷垱鑷1point3acres璁哄潧
  59.    
  60.     public static void main(String args[] ) throws Exception {-google 1point3acres
  61.         /* Enter your code here. Read input from STDIN. Print output to STDOUT */
  62.         
  63.         String line = null;
  64.         int num = 0;
  65.         try{
  66.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  67.             . more info on 1point3acres.com
  68.             while((line = br.readLine()) != null){
  69.                 if(num == 0){
  70.                     String[] interval = line.trim().split(",");. visit 1point3acres.com for more.
  71.                     if(interval.length != 2){
  72.                         throw new Exception("invalid input!");
  73.                     }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  74.                     beginMonth = interval[0].trim();
  75.                     endMonth = interval[1].trim();
  76.                     //System.out.println(line); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  77.                      num++;
  78.                 }else if(num == 1){
  79.                      num++; .鐣欏璁哄潧-涓浜-涓夊垎鍦
  80.                     continue;
  81.                     . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  82.                 }else{. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  83.                     //System.out.println(line);
  84.                     String[] lines = line.trim().split(",");
    . 鍥磋鎴戜滑@1point 3 acres
  85.                     if(lines.length != 3){
  86.                         throw new Exception("invalid input!");
  87.                     }
  88.                     String date = lines[0].trim();
  89.                     //System.out.println(date);
  90.                     String trans_date = removeDD(date);
  91.                     //System.out.println(trans_date);
  92.                     String category = lines[1].trim();
  93.                     String count = lines[2].trim();
  94.                     int cnt = Integer.parseInt(count);
  95.                     //System.out.println(date);
  96.                     if(isBefore(trans_date, beginMonth) || isBefore(endMonth, trans_date) || cnt == 0) continue;
  97.                     if(!logs.containsKey(trans_date)){
  98.                         logs.put(trans_date, new HashMap<String, Integer>());
  99.                     }
  100.                     Map<String, Integer> map = logs.get(trans_date);-google 1point3acres
  101.                     if(!map.containsKey(category)){. 鍥磋鎴戜滑@1point 3 acres
  102.                         map.put(category, cnt);
  103.                     }else{
  104.                         map.put(category, map.get(category) + cnt);. Waral 鍗氬鏈夋洿澶氭枃绔,
  105.                     }
  106.                     
  107.                     logs.put(trans_date,map);
  108.                      num++;
  109.                 }
  110.                
  111.             }
  112.         }catch (Exception e){
  113.             e.printStackTrace();
  114.         }
  115.         
  116.         maxHeap = new PriorityQueue<Log>(num, new LogComparator());

  117.        for(Map.Entry<String, Map<String, Integer>> entry : logs.entrySet()){
  118.            
  119.             String date = entry.getKey();
  120.             //System.out.println(date);
  121.             Map<String, Integer> map = entry.getValue();
  122.             
  123.             for(Map.Entry<String, Integer> sub_entry : map.entrySet()){
  124.               String category = sub_entry.getKey();
  125.               int cnt= sub_entry.getValue();
  126.               maxHeap.offer(new Log(date, category, cnt));. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  127.                 //System.out.println(date + " "  + category +  " " + cnt);
  128.             }. 1point3acres.com/bbs
  129.        }
  130.         
  131.         Log prev = null;
  132.         StringBuilder sb = new StringBuilder();
  133.         while(!maxHeap.isEmpty()){
  134.             Log cur = maxHeap.poll();
  135.             if(prev == null){. from: 1point3acres.com/bbs
  136.                 sb.append(cur.date);
  137.                 sb.append(',');. visit 1point3acres.com for more.
  138.                 sb.append(' ');
  139.                 sb.append(cur.category);
  140.                 sb.append(',');
  141.                 sb.append(' ');.鏈枃鍘熷垱鑷1point3acres璁哄潧
  142.                 sb.append(cur.cnt);
  143.             }else if(prev.date.equals(cur.date)){
  144.                 sb.append(',');
  145.                 sb.append(' ');
  146.                 sb.append(cur.category);
  147.                 sb.append(',');
  148.                 sb.append(' ');
  149.                 sb.append(cur.cnt);
  150.             }else{
    . From 1point 3acres bbs
  151.                 String printString = sb.toString();
  152.                 System.out.println(printString);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  153.                 sb = new StringBuilder();
  154.                 sb.append(cur.date);
  155.                 sb.append(',');
  156.                 sb.append(' ');
  157.                 sb.append(cur.category);. from: 1point3acres.com/bbs
  158.                 sb.append(',');
  159.                 sb.append(' ');
    . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  160.                 sb.append(cur.cnt); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  161.             }. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  162.             prev = cur;
  163.         }
  164.         String printString = sb.toString();-google 1point3acres
  165.         System.out.println(printString);
  166.       /*
  167.         for(Map.Entry<String, Map<String, Integer>> entry : logs.entrySet()){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  168.             StringBuilder sb = new StringBuilder();
  169.             String date = entry.getKey();. From 1point 3acres bbs
  170.             sb.append(date);
  171.             Map<String, Integer> map = entry.getValue();
  172.             
  173.             for(Map.Entry<String, Integer> sub_entry : map.entrySet()){
  174.               String category = sub_entry.getKey();
  175.               int cnt= sub_entry.getValue();
  176.               sb.append(',');
  177.               sb.append(' ');
  178.               sb.append(category);
  179.               sb.append(',');
  180.               sb.append(' ');
  181.               sb.append(cnt);
  182.             }
  183.             System.out.println(sb.toString());
  184.         }
  185.     */.1point3acres缃
  186.     }
  187. }
复制代码
回复 支持 1 反对 0

使用道具 举报

EkoLanWei 发表于 2016-10-31 05:22:03 | 显示全部楼层
求发邮箱 hongruzh@gmail.com 楼主好人 楼主一身平安
回复 支持 0 反对 1

使用道具 举报

 楼主| duziyuanyang 发表于 2016-11-5 04:54:41 | 显示全部楼层
liu.haonan 发表于 2016-11-5 04:19
请问一下楼主,这个key一定会是2512208吗?还是不同的testcase会有不同的key?
如果key不相同的话,在不 ...

1.不同case的key不一样
2.signature不一定有循环key,最坏情况signature就是一个key,你要做的就是去check是否有循环key, 重新加密的时候能得到给你的string
回复 支持 1 反对 0

使用道具 举报

elizabethxiazhi 发表于 2016-10-31 06:04:23 | 显示全部楼层
LZ人真好,刚花了两个多小时写twitter,time series 那个题目过了, 我开始也只过一个case,后来用treemap<time, treemap<engagement, count>>做的就都过去了。。。(原来用的treemap<time,List<>()>).....
回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:35:55 | 显示全部楼层
Orders 1的SQL代码,passed all test case
  1. select o.customerNumber as customer.1point3acres缃
  2. from ORDERS as o
  3. group by customerNumber
  4. order by count(orderNumber) desc
  5. limit 1;
复制代码
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:38:55 | 显示全部楼层
employee, department题, 自己没遇到,不过同学试了通过了
  1. select d.Name, count(e.ID) as ID_COUNT
  2. from Department d-google 1point3acres
  3. left join Employee e
  4. on e.DEPT_ID = d.DEPT_ID
  5. group by d.Name
  6. order by ID_COUNT desc, NAME
复制代码
回复 支持 反对

使用道具 举报

sccnju 发表于 2016-10-31 04:41:36 | 显示全部楼层
谢谢楼主。我跟楼主一样也是只能过第一个test case。。醉了。。。看了下楼主的code觉得没什么毛病。。。。
-google 1point3acres
再次吐槽一下居然不给看test case。。。。
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:54:06 | 显示全部楼层
expression tree,这题我自己也没遇到,不过貌似是个高频题,贴上代码欢迎讨论,因为没有跑过hackerrank,不保证能pass all test case
  1. static String experssionTree(String string){
  2.   String[] input = string.trim().split("/");
  3.   String expression = input[0];
  4.   String operation = input[1];
  5.   for(char op : operation.toCharArray()){
  6.     if(op == 'R'){
  7.       expression = reverse(expression);
  8.     }. From 1point 3acres bbs
  9.     if(op == 'S'){
  10.       expression = simplify(expression);
  11.     }
  12.   }
  13.   return expression;
  14. }
  15. static String reverse(String s){
  16.   char[] arr = s.toCharArray();
  17.   int begin = 0, end = arr.length - 1;
  18.   while(begin < end){
  19.     char tmp = arr[begin];
  20.     arr[begin] = arr[end];
  21.     arr[end] = tmp;
  22.     if(arr[begin] == '('){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  23.       arr[begin] = ')';
  24.     }else if(arr[begin] == ')'){
  25.       arr[begin] = '(';  
  26.     }
  27.     if(arr[end] == '('){
  28.       arr[end] = ')';
  29.     }else if(arr[end] == ')'){ 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  30.       arr[end] = '(';  
  31.     }
    . 鍥磋鎴戜滑@1point 3 acres
  32.     begin++;
  33.     end--;
  34.   }
  35.   return new String(arr);
  36. }
  37. static String simplify(String s){
  38.   boolean firstLeft = true;
    . From 1point 3acres bbs
  39.   char[] arr = s.toCharArray();
  40.   Stack<Integer> stk = new Stack<>();
  41.   List<Integer> index = new ArrayList<>();
  42.   for(int i = arr.length - 1; i >= 0; i --){. 鍥磋鎴戜滑@1point 3 acres
  43.     if(arr[i] == ')'){. from: 1point3acres.com/bbs
  44.       stk.push(i);
  45.     }
  46.     if(arr[i] == '('){. 鍥磋鎴戜滑@1point 3 acres
  47.       int rightIndex = stk.pop();
  48.       if(firstLeft == true){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  49.         int leftIndex = i;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  50.         index.add(rightIndex);
  51.         index.add(leftIndex);
  52.         firstLeft = false;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  53.       }else{
  54.         if(stk.isEmpty()){
  55.           firstLeft = true;
  56.         }
  57.       }
  58.     }
  59.   }

  60.   StringBuilder sb = new StringBuilder(s);. 1point 3acres 璁哄潧
  61.   Iterator<Integer> iterator = index.iterator();
  62.   while(iterator.hasNext()){
  63.     int id = iterator.next();
  64.     sb = sb.deleteCharAt(id );
  65.   }
  66.   return sb.toString();
  67. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:56:09 | 显示全部楼层
DNA序列那题LC最新的433已经出来了,大家可以去做下,思路跟word ladder是一样的,总体也不是很难。
回复 支持 反对

使用道具 举报

路未翎 发表于 2016-10-31 05:00:07 | 显示全部楼层
楼主好人!请收下膝盖!!!祝下周谷歌面试过过过!!昨天刚整理完地里的题写了两题,准备今天继续写来着
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 05:00:09 | 显示全部楼层
还有几题除了log parser看地里吐槽test case过不去的,其它总体来说都不是很难,只是hackerrank看不见test case,所以有时候一个人不一定能想到,如果能有人一起讨论下就更好啦,毕竟感觉twitter oa不是侧重考算法。。

各位加油!
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 05:05:22 | 显示全部楼层
sccnju 发表于 2016-10-31 04:41
谢谢楼主。我跟楼主一样也是只能过第一个test case。。醉了。。。看了下楼主的code觉得没什么毛病。。。。
...

是啊,不给看test case真是很操蛋。。
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 05:06:01 | 显示全部楼层
路未翎 发表于 2016-10-31 05:00
楼主好人!请收下膝盖!!!祝下周谷歌面试过过过!!昨天刚整理完地里的题写了两题,准备今天继续写来着{: ...

借你吉言!也祝你好运啦,抽到简单题过过过
回复 支持 反对

使用道具 举报

rebecca1111 发表于 2016-10-31 05:13:57 | 显示全部楼层
mark 楼主好人,祝福狗家顺利
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-11-21 03:15

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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