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


一亩三分地论坛

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

Cryptic Studio 家OA,题目不多质量不错,可看可学

[复制链接] |试试Instant~ |关注本帖
chenyy0527 发表于 2015-8-15 11:26:08 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类 硕士 全职@Cryptic Studio - 网上海投 - 在线笔试 |Passfresh grad应届毕业生

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

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

x
这个公司的OA题好像从来不会变,他们家OA面经其实之前在地里被发过了(http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=139479&highlight=cryptic),不过版面有点不清晰,我就把重要的再发一遍好了。第二题想看更多的 test case 可以点那个链接看。

OA里只有两道题,难度中等,要求5小时做出来,但是事实长代码写的顺手的话不需要那么久。我第一道题花了半个多小时,第二道题一个半小时,这都是包括debug的时间。
之前看网上大家聊起的说5个小时做不完,有点被吓到,但是其实不难。我昨天提交的,今天上午就通知过了,现已安排phone interview下下周,结束后再来发面经给大家!
(如果5个小时写不出,那其实还需要训练自己的码能力)

1. Write a function that accepts a string of digits and a target value as input parameters. This function should output the two input values followed by a string with +'s and *'s between the digits so the result of evaluating the mathematical expression is the target value. Pay attention to operator precedence. Note there may be more than one answer, it doesn't matter which one you print.

Examples:
"1231231234",11353 -> "12*3+1+23*123*4"
"3456237490",1185 -> "3*4*56+2+3*7+490" . From 1point 3acres bbs
"3456237490",9191 -> "no solution"

挺简单的回溯,对每个字符后面可能存在:不操作,插入+,插入*   一共三种情况,操作完算一算。
需要注意一下溢出的情况,除此之外没啥别的. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

2. Write a function "void link(char **tiles)" that accepts a list of 'tiles' in the provided format below. It should link the tiles together sequentially in the order they are given, and print out the current count and arrangement of tiles at each step exactly as shown in the example output below, including the note about how far the tile had to be rotated.

A tile is a 2-by-2 square split into quadrants, where each quadrant has a number from 0 to 9. After the first tile, a tile can be legally placed if at least two of its quadrants match quadrants on adjacent tiles horizontally or vertically. A tile cannot be legally placed in a location if it would have fewer than two matching quadrants or has any quadrants that do not match horizontally or vertically. Tiles can be rotated, and tiles can be placed in offset positions as demonstrated with tile 9 in the third example. The inputs are always designed so there is only one place a tile will fit.

看上去难其实非常简单,每个tile测试一下能放哪里就好了,测试过程中需要旋转一下(旋转的函数相当简单吧),放好了就停止搜索,然后打印一下当前的board

Examples:
char *tiles1[] = {
        "11",     // 1
        "23",
        "", 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
        "44",     // 2
        "11",
        "",
        "16",     // 3
        "36",
        "",
        "51",     // 4
        "71",.鐣欏璁哄潧-涓浜-涓夊垎鍦
        "",
        "46",     // 5
        "26",
        "",
        "14",     // 6
        "68",
        0};


link(tiles1) prints:.鏈枃鍘熷垱鑷1point3acres璁哄潧
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
6 tiles
link 1. 1point 3acres 璁哄潧
11
23. 鍥磋鎴戜滑@1point 3 acres

link 2
44
11
11
23

link 3
44
11
1116
2336

link 4. 1point3acres.com/bbs
  44-google 1point3acres
5111
711116
  2336

link 5 // note this tile had to be rotated 180 degrees clockwise
.鐣欏璁哄潧-涓浜-涓夊垎鍦  44
5111
71111662. from: 1point3acres.com/bbs
  233664
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
link 6 // note this tile had to be rotated 270 degrees clockwise
  4448
511116. Waral 鍗氬鏈夋洿澶氭枃绔,
71111662
  233664
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

评分

1

查看全部评分

Linzertorte 发表于 2015-9-9 05:07:08 | 显示全部楼层
python作弊大法!
1.jpg
回复 支持 0 反对 1

使用道具 举报

Linzertorte 发表于 2015-9-9 07:17:34 | 显示全部楼层
chenyy0527 发表于 2015-9-9 06:45. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
那是神马

这个中缀求值用divide-conquer比较简单。 扫描一遍,找到第一个+,然后左右分成两个子问题。找不到+,就找*. +,*都找不到说明是一个数。
回复 支持 1 反对 0

使用道具 举报

Linzertorte 发表于 2015-9-9 07:29:24 | 显示全部楼层
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!
-google 1point3acres
想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。. from: 1point3acres.com/bbs
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. int eval_sub(const char *s,const char *t){
  5.         const char *p;
  6.         for(p=s;p<t;p++)
  7.                 if(*p=='+') break;
  8.         if(p<t) return eval_sub(s,p)+eval_sub(p+1,t);
  9.         for(p=s;p<t;p++)
  10.                 if(*p=='*') break;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  11.         if(p<t) return eval_sub(s,p)*eval_sub(p+1,t);. From 1point 3acres bbs
  12.         int x = 0;
  13.         for(p=s;p<t;p++).1point3acres缃
  14.                 x = x*10 + (*p-'0');
  15.         return x;
  16. }
  17. int eval(const char *expr){
  18.     int n = strlen(expr);. 1point 3acres 璁哄潧
  19.     return eval_sub(expr,expr+n);
  20. }.鐣欏璁哄潧-涓浜-涓夊垎鍦
  21. int main(){. more info on 1point3acres.com
  22.     cout<<eval("3*4*56+2+3*7+490")<<endl;
  23.     cout<<eval("12*3+1+23*123*4")<<endl;
  24. }
  25.                   
复制代码
回复 支持 1 反对 0

使用道具 举报

霸王 发表于 2015-8-15 11:38:20 | 显示全部楼层
祝找工作顺利~
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-15 11:40:51 | 显示全部楼层

谢谢!!
回复 支持 反对

使用道具 举报

houqingniao 发表于 2015-8-15 12:43:05 | 显示全部楼层
bless lz!.鐣欏璁哄潧-涓浜-涓夊垎鍦
问一下, 这家是干啥的?
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-15 13:08:32 | 显示全部楼层
houqingniao 发表于 2015-8-15 12:43
bless lz!
问一下, 这家是干啥的?

游戏公司,大概15年历史,100+雇员这样,用的C
回复 支持 反对

使用道具 举报

houqingniao 发表于 2015-8-16 12:00:01 | 显示全部楼层
赞lz.

C 现在还真用不了了 哈哈
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-16 12:25:04 | 显示全部楼层
houqingniao 发表于 2015-8-16 12:00
赞lz.

.1point3acres缃C 现在还真用不了了 哈哈

我自己是写C++的,电面要求C,我下周末急补一下
回复 支持 反对

使用道具 举报

slm0803 发表于 2015-9-9 03:29:48 | 显示全部楼层
lz 这家电面怎么样?我也收到他们的小秘邮件说要online test,但是问了一下公司不sponsor,于是就不跟他们玩了。
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 04:49:09 | 显示全部楼层
第一题要多少行代码啊?感觉挺长的。还要中缀求值,要双栈扫描吗?
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 06:45:07 | 显示全部楼层
slm0803 发表于 2015-9-9 03:29
lz 这家电面怎么样?我也收到他们的小秘邮件说要online test,但是问了一下公司不sponsor,于是就不跟他们 ...

我都不知道不sponsor ,他们家电面问了不少基层的东西,算法问的不多
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 06:45:31 | 显示全部楼层
Linzertorte 发表于 2015-9-9 04:49
第一题要多少行代码啊?感觉挺长的。还要中缀求值,要双栈扫描吗?
. from: 1point3acres.com/bbs
第一题大概60行左右,我是用回溯
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 06:45:39 | 显示全部楼层

那是神马
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 07:16:15 | 显示全部楼层
chenyy0527 发表于 2015-9-9 06:45. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
那是神马

你看看右边。用python写第一题12行就行了。
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 11:15:59 | 显示全部楼层
Linzertorte 发表于 2015-9-9 07:17
这个中缀求值用divide-conquer比较简单。 扫描一遍,找到第一个+,然后左右分成两个子问题。找不到+,就找 ...

对哦,好办法,我还是用的stack,弱弱的=。=
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 11:17:08 | 显示全部楼层
Linzertorte 发表于 2015-9-9 07:29. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!. Waral 鍗氬鏈夋洿澶氭枃绔,
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
想支持楼主,请点 ...

代码很棒诶,虽然前面那段关于大米的没怎么看懂0.0
但是好短好简洁,瞬间觉得我的代码弱爆了
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 11:35:37 | 显示全部楼层
chenyy0527 发表于 2015-9-9 11:17.鐣欏璁哄潧-涓浜-涓夊垎鍦
代码很棒诶,虽然前面那段关于大米的没怎么看懂0.0
但是好短好简洁,瞬间觉得我的代码弱爆了

楼主会不会python...
  1. def get_next(xs):
  2.   if xs=='':
  3.     yield ''
  4.     return
  5.   for x in get_next(xs[1:]):.鐣欏璁哄潧-涓浜-涓夊垎鍦
  6.     for h in ['','+','*']:
  7.       yield h+xs[:1]+x
  8. def f(xs,val):
  9.   for x in get_next(xs[1:]):
  10.     if eval(xs[:1]+x)==val:
  11.        return xs[:1]+x
  12.   return "no solution". from: 1point3acres.com/bbs

  13. print f('1234',10)
  14. print f("1231231234",11353). visit 1point3acres.com for more.
  15. print f("3456237490",1185)
复制代码
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-10 11:37:19 | 显示全部楼层
Linzertorte 发表于 2015-9-9 11:35. from: 1point3acres.com/bbs
楼主会不会python...

并不会,但是看代码无所谓,都能看得懂
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-11-22 23:09

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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