一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1970|回复: 18
收起左侧

Twitter OA sucks!!!!!!!!

[复制链接] |试试Instant~ |关注本帖
singku 发表于 2016-10-28 23:59:10 | 显示全部楼层 |阅读模式

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

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

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

x
SQL 查询题 常规 但是要根据查询结果显示自定义的名称 这个一下没想起来,后来特殊处理了一下 select type, "自定义" as name where xxx 然后做了三个select然后uion 然后返回到上一级 再select的
电话和邮箱掩码 常规
基因变异 常规wordladder 要注意的是 start 可能不在字典里。且。。。。end如果不在字典里的话 要返回-1  这点题目中没说,调试了好久!
apace log 统计 非500 level的 http code 按时间排序先,再按url 的字典序排序 最恶心的就这个题了
题目中没说有非法的输入,导致一开始程序一直崩。搞了半天才定位到非法输入是啥 也不知道怎么处理 后来偶然直接跳过 test case中的非法输入 结果居然对了。. 1point3acres.com/bbs
然后非500的 。。。开始以为直接是统计不是500 就行, 结果仔细看了题目 是 non-500-level 也就是说500 503 501 都要排除!!!!! 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
然后就是时间处理。 有的时间并不是以 +0000 偏移结尾 。有一个case是-xxxx 处理了之后结果还是不对!!!!!!
我是通过打印cerr 才发现这些奇怪的case的 hackerrank 虽然不输出err 但是会告诉你有err mask掉了 所以就这么定位的!!!!!!

然而还是没用,有个case就是不过。 花了我一通宵搞这些奇怪的case 真是日了狗。和Akuna Capital那个啃爹的股票交易OA 一样 就是有几个不过。

不过看题目描述的严谨程度来讲,也不排除test case的结果本来就是出题人自己搞错了,或者故意设的错。真的是渣到爆 浪费时间 吃力不讨好。

. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

. from: 1point3acres.com/bbs
补充内容 (2016-10-29 03:52):
忘了说最后一题 第5,6,7 三个case 一开始是不过的 第5个case是500的问题,后来解决了,第6个case一直段错误,后来发现parse的时候其实parse不到9列,所以继续处理就崩。后来改了下 没parse到9列就返回 就解决了

补充内容 (2016-10-29 03:53):.1point3acres缃
第七个case 后来定位了一下时区偏移是-xxxx,天真的以为是这里有问题,处理了之后还是没过。最后也找不到,直接交了

补充内容 (2016-10-29 03:56):
哦对了 之前以为log肯定是按时间排序好的 所以只要发现时间变了就统计当前已收集到的数据,结果却也不是,只好收集所有日志再统计

评分

2

查看全部评分

roosterxie 发表于 2016-10-29 06:24:33 | 显示全部楼层
就是把所有的记录丢到heap里,然后一个一个拿出来读. more info on 1point3acres.com

  1. private static class LogCount implements Comparable<LogCount> {
  2.         //private static class LogCount {
  3.         private String time;
  4.         private String endpoint;
  5.         private double success;
  6.         private int total;
  7. . 1point3acres.com/bbs
  8.         LogCount(String a, String b, boolean success) {
  9.             this.time = a;
  10.             this.endpoint = b;
  11.             this.success = success ? 1 : 0;
  12.             this.total = 1;
  13.         }

  14.         @Override
  15.         public int compareTo(LogCount that) {
  16.             if (this.time.equals(that.time))
  17.                 return (this.endpoint.compareTo(that.endpoint));
  18.             return this.time.compareTo(that.time);. more info on 1point3acres.com
  19.         }

  20.     }

  21.     private static String timeHelper(String a) {
  22.         SimpleDateFormat oldFormat = new SimpleDateFormat("[dd/MMM/yyyy:HH:mm:ssZ]");

  23.         try {
  24.             Date time = oldFormat.parse(a);. 1point3acres.com/bbs
  25.             SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
  26.             newFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
  27.             a = newFormat.format(time);. 1point3acres.com/bbs
  28.         } catch (ParseException e) {
  29.             e.printStackTrace();
  30.         }

  31.         return a;
  32.     }

  33.     private static String endpointHelper(String a) {
  34.         int paraIdx = a.indexOf("?");

  35.         return paraIdx == -1 ? a : a.substring(0, paraIdx);
  36.     }-google 1point3acres

  37.     private static void printLog(PriorityQueue<LogCount> queue) {
  38.         //print value
  39.         String currTime = "";
  40.         LogCount prev = null;
  41.         while (!queue.isEmpty()) {
  42.             LogCount lc = queue.poll();
  43.             String time = lc.time;. visit 1point3acres.com for more.
  44.             String endpoint = lc.endpoint;
  45.             if (prev == null) {
  46.                 prev = lc;. From 1point 3acres bbs
  47.             } else if (prev.time.equals(time) && prev.endpoint.equals(endpoint)) {. From 1point 3acres bbs
  48.                 prev.success += lc.success;. 1point3acres.com/bbs
  49.                 prev.total++;. visit 1point3acres.com for more.
  50.             } else {
  51.                 double percentage = prev.success / prev.total * 100;
  52.                 System.out.println(prev.time + " " + prev.endpoint + " " + String.format("%.2f", percentage));
  53.                 prev = lc;
  54.             }
  55.         }
  56.         double percentage = prev.success / prev.total * 100;
  57. . 鍥磋鎴戜滑@1point 3 acres
  58.         System.out.println(prev.time + " " + prev.endpoint + " " + String.format("%.2f", percentage));
  59.     }. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

  60.     public static void main(String args[]) throws Exception {
  61.         /* Enter your code here. Read input from STDIN. Print output to STDOUT */
  62.         Scanner sc = new Scanner(System.in);
  63.         String currTime = "";
  64.         TreeMap<String, Set<LogCount>> map = new TreeMap<>();
  65.         PriorityQueue<LogCount> queue = new PriorityQueue<>();.鏈枃鍘熷垱鑷1point3acres璁哄潧
  66.         while (sc.hasNextLine()) {
  67.             String log = sc.nextLine();
  68.             String[] strs = log.split("\\s+");
  69.             //read Date

  70.             String time = strs[3] + strs[4];. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  71.             time = timeHelper(time);

  72.             //read endpoint. more info on 1point3acres.com
  73.             String endpoint = strs[6];
  74.             endpoint = endpointHelper(endpoint);
  75. . visit 1point3acres.com for more.
  76.             //read success
  77.             Boolean success = !(Integer.parseInt(strs[8]) / 100 == 5);
  78.             LogCount lc = new LogCount(time, endpoint, success);
  79.             queue.offer(lc);
  80.         }.1point3acres缃
  81.         printLog(queue);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  82.     }
复制代码

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

yangmyfly 发表于 2016-10-29 01:14:52 来自手机 | 显示全部楼层
好像跟楼主题目一模一样,有个test case没过原来是500的原因,太年轻了2333
回复 支持 反对

使用道具 举报

z026 发表于 2016-10-29 02:06:40 | 显示全部楼层
我赞成,有个case也是不知道怎么都搞不过,烦死了。敢问楼主是第几个case?
回复 支持 反对

使用道具 举报

z026 发表于 2016-10-29 02:08:59 | 显示全部楼层
yangmyfly 发表于 2016-10-29 01:14. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
好像跟楼主题目一模一样,有个test case没过原来是500的原因,太年轻了2333
. 1point3acres.com/bbs
想问问你这题过了吗?还有什么corner case要注意的?
回复 支持 反对

使用道具 举报

何打发123 发表于 2016-10-29 02:16:22 | 显示全部楼层
着看的都不敢做了。。0.0 而且 还要考sql0.0
回复 支持 反对

使用道具 举报

 楼主| singku 发表于 2016-10-29 03:55:05 | 显示全部楼层
z026 发表于 2016-10-29 02:06
我赞成,有个case也是不知道怎么都搞不过,烦死了。敢问楼主是第几个case?

第七个没过。
回复 支持 反对

使用道具 举报

roosterxie 发表于 2016-10-29 04:35:15 | 显示全部楼层
楼主我也做了这个7天的OA, 这个log我也弄了很久。最后test case都过了。我是在第二个test case卡了很久。楼主有消息吗? 我到现在还没消息
回复 支持 反对

使用道具 举报

aiyawocao 发表于 2016-10-29 04:46:42 | 显示全部楼层
我大亮亮牛逼
回复 支持 反对

使用道具 举报

 楼主| singku 发表于 2016-10-29 06:11:36 | 显示全部楼层
roosterxie 发表于 2016-10-29 04:35
楼主我也做了这个7天的OA, 这个log我也弄了很久。最后test case都过了。我是在第二个test case卡了很久。楼 ...

跪求你是咋做过的所有case? 我今天才提交。所以还没消息。
回复 支持 反对

使用道具 举报

yangmyfly 发表于 2016-10-29 07:25:40 来自手机 | 显示全部楼层
我感觉楼主你是没加Z或者时区没改GMT吧
回复 支持 反对

使用道具 举报

 楼主| singku 发表于 2016-10-29 07:34:25 | 显示全部楼层
yangmyfly 发表于 2016-10-29 07:25
我感觉楼主你是没加Z或者时区没改GMT吧
. From 1point 3acres bbs
我是把时区取出来自己算了偏移的。。不知道哪里不对,如果是-0812应该是算出来的时间戳再加8小时12分钟?的秒偏移?
回复 支持 反对

使用道具 举报

yangmyfly 发表于 2016-10-29 07:37:22 来自手机 | 显示全部楼层
singku 发表于 2016-10-29 07:34
我是把时区取出来自己算了偏移的。。不知道哪里不对,如果是-0812应该是算出来的时间戳再加8小时12分钟? ...

不用自己算。。偏移量就是Z,然后可以强制转换时区成GMT,我猜可能这里错了。 我只有个第五个没过,看了你的帖子豁然开朗了。orz
回复 支持 反对

使用道具 举报

shuofeng11 发表于 2016-10-30 07:18:16 | 显示全部楼层
yangmyfly 发表于 2016-10-29 07:37
不用自己算。。偏移量就是Z,然后可以强制转换时区成GMT,我猜可能这里错了。 我只有个第五个没过,看了 ...

请问怎么强制转化成GMT?
回复 支持 反对

使用道具 举报

shuofeng11 发表于 2016-10-30 07:30:49 | 显示全部楼层
请问楼主基因变异是什么题?会给大米,谢谢
回复 支持 反对

使用道具 举报

taotaoxuyuan 发表于 2016-10-31 09:30:13 | 显示全部楼层
不知道为什么基因变异题的test 5、6老是run out of time 求问楼主怎么设定停止条件的嘛 就是定义‘找不到算法’
回复 支持 反对

使用道具 举报

mdzzxswl 发表于 2016-10-31 09:31:38 | 显示全部楼层
3题的还是4题的?
回复 支持 反对

使用道具 举报

lyudison 发表于 2016-11-1 01:25:39 | 显示全部楼层
用c++搞时区之类的东西简直想。。。
回复 支持 反对

使用道具 举报

天天甜甜去美国 发表于 2016-11-6 05:51:30 | 显示全部楼层
shuofeng11 发表于 2016-10-30 07:30
请问楼主基因变异是什么题?会给大米,谢谢

就是leetcode上的 #433 嘛~
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 13:26

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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