免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6379 | 回复: 24

[游戏娱乐] 招聘面试题,用shell击败它吧 [复制链接]

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2014-05-03 09:33 |显示全部楼层
刚看到的活动,居然没列shell ,有兴趣的童鞋可以试试,用shell亮瞎他们吧。(非广告)

=====================================
此刻到5月4日上午9点,你都可以撰写你的代码,并回传给我们。

5月4日-5月7日,我们会日以继夜的推敲你的代码;

5月8日-5月9日,通过代码测试的你,会接到我们温柔的电话;

5月10日-5月11日,来到ThoughtWorks,感受一天的独特面试(包括逻辑笔试、结对编程、技术对话)!



大道至简,知易行难!

我们的题目简约而不简单,千万不要轻敌,即使简单的代码,做到尽善尽美一样难能可贵,所以,提交之前,请想一想,它是不是可以更卓越,有人可以10行搞定,亲,你呢 :)



代码要求:

1,语言不限,Java, C#, Ruby, C++, Js, Python, Scala, objective-C统统可以,小语种也没问题,只要你擅长;

2,强烈建议写单元测试;

3,请展示出你超赞的面向对象/函数式编程功底;

4,建议尽量减少圈复杂度;

5,请提交可运行的代码,及相关构建脚本/说明文档(代码运行平台和环境);

FizzBuzzWhizz

你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:


1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。
2. 让所有学生拍成一队,然后按顺序报数。
3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz。
4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。
5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。

现在,我们需要你完成一个程序来模拟这个游戏,它首先接受3个特殊数,然后输出100名学生应该报数的数或单词。比如,

输入
3,5,7
输出(片段)

1
2
Fizz
4
Buzz
Fizz
Whizz
8
Fizz
Buzz
11
Fizz
Fizz
Whizz
FizzBuzz
16
17
Fizz
19
Buzz

一直到100

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
发表于 2014-05-03 11:22 |显示全部楼层
很好主题,赞一个

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2014-05-03 14:28 |显示全部楼层
  1. $ seq 100 | awk -va=3 -vb=5 -vc=7 '{if($0~a){$0="Fizz"}else{if($0%a==0)x=x"Fizz";if($0%b==0)x=x"Buzz";if($0%c==0)x=x"whizz";if(x)$0=x;x=""}}1'
复制代码

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
发表于 2014-05-03 19:55 |显示全部楼层
回复 1# r2007


    楼主,这个题目应该对输入的数字有要求吧?

    比如说要是输入2,那遇到12,22之类到数字时(即带2又是2到倍数),该显示上面呀?

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2014-05-03 21:25 |显示全部楼层
回复 4# jeffreyst
参看第5条

   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2014-05-04 11:23 |显示全部楼层
回复 1# r2007


   

论坛徽章:
468
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-05-04 14:22 |显示全部楼层
回复 1# r2007
C++来一发,用了50行。。。
水平一般,请多多指教。
  1. #include <string>
  2. #include <iostream>
  3. #include <sstream>
  4. using namespace std;

  5. class Game{   
  6. public:   
  7.     void setGameString(string s1,string s2,string s3){
  8.         this->s[0]=s1;
  9.         this->s[1]=s2;
  10.         this->s[2]=s3;
  11.     }
  12.     void setGameNumber(unsigned n1,unsigned short n2,unsigned short n3){
  13.         this->n[0]=n1;
  14.         this->n[1]=n2;
  15.         this->n[2]=n3;
  16.     }
  17.     string getGameString(const unsigned int id){
  18.        stringstream ss1,ss2;
  19.        ss1<<id;
  20.        ss2<<this->n[0];
  21.        string idStr=ss1.str();
  22.        string firstN=ss2.str();
  23.        if(idStr.find(firstN)!=idStr.npos)
  24.            return this->s[0];
  25.        string ret="";
  26.        bool flag=false;
  27.        for(int i=0;i<3;i++){
  28.            if(id%this->n[i]==0){
  29.                flag=true;
  30.                ret=ret+this->s[i];
  31.            }
  32.        }
  33.        return flag?ret:idStr;      
  34.     }        
  35. private:
  36.     unsigned short n[3];
  37.     string s[3];
  38. };

  39. int main(void){
  40.     Game g=Game();
  41.     g.setGameString("Fizz","Bizz","Whizz");
  42.     g.setGameNumber(3,5,7);
  43.     for(int i=1;i<=100;i++){
  44.         cout<<g.getGameString(i)<<endl;
  45.     }
  46.     return 0;
  47. }
复制代码
  1. [masonzhu@rat122 sandbox]$ g++ game.cpp -o g
  2. [masonzhu@rat122 sandbox]$ ./g
  3. 1
  4. 2
  5. Fizz
  6. 4
  7. Bizz
  8. Fizz
  9. Whizz
  10. 8
  11. Fizz
  12. Bizz
  13. 11
  14. Fizz
  15. Fizz
  16. Whizz
  17. FizzBizz
  18. 16
  19. 17
  20. Fizz
  21. 19
  22. Bizz
  23. FizzWhizz
  24. ...
复制代码

论坛徽章:
54
15-16赛季CBA联赛之北京
日期:2019-01-25 10:16:38白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:532015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之大阪钢巴
日期:2015-06-25 17:30:042015亚冠之城南
日期:2015-06-25 15:10:58黄金圣斗士
日期:2015-12-02 11:44:3515-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56
发表于 2014-05-14 15:25 |显示全部楼层
这个不是在群里发过了么?

之前写的一发python
  1. #!/usr/bin/python
  2. #coding: utf-8

  3. import sys
  4. if len(sys.argv) != 4:
  5.         print 'args error'
  6.         sys.exit(1)
  7. d = {sys.argv[1]: 'Fizz' , sys.argv[2]: 'Buzz', sys.argv[3]: 'Whizz'}
  8. for n in range(1,101):
  9.         values = []
  10.         for i in range(1,4):
  11.                 if n%int(sys.argv[i]) == 0:values.append(sys.argv[i])
  12.         if str(sys.argv[1]) in str(n):
  13.                 print d[sys.argv[1]]
  14.         else:
  15.                 if len(values) == 0:
  16.                         print n
  17.                         continue
  18.                 p = []
  19.                 for i in range(len(values)):p.append(d[values[i]])
  20.                 print ''.join(p)
复制代码

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2014-05-14 15:32 |显示全部楼层
回复 8# reyleon


    我在群里说过

论坛徽章:
54
15-16赛季CBA联赛之北京
日期:2019-01-25 10:16:38白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:532015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之大阪钢巴
日期:2015-06-25 17:30:042015亚冠之城南
日期:2015-06-25 15:10:58黄金圣斗士
日期:2015-12-02 11:44:3515-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56
发表于 2014-05-14 15:52 |显示全部楼层
回复 9# 关阴月飞


   你的代码呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP