一道淘汰85%面试者的百度开发者面试题

高校俱乐部 面试题 百度 

CSDN-木水辰

毕业生北京邮电大学

大河轻松度,阴沟易翻船。无风无浪的地方,按理说是绝对不该翻船的。可是,就是在大家看似无比简单的问题上,栽倒无数人。


题目描述:

依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。


提示:

这道看似非常简单的题目,却潜藏着几个玄机。面试官通过这道题,考察学生在语法、语义、语用以及算法优化方面的能力。现实告诉我们,通过这一道题目,就可以淘汰85%的面试者。看似残酷的考察方式,却也体现出学生在基础知识、动手能力到思维能力上的差距。

需要注意的考察点:

- 语法:语法的正确书写,包括格式
- 语义:对循环、分支等语义的理解与掌握
- 语用:对变量命名、表达式及语句的组合使用
- 算法优化:如果要提高运行效率,可以在算法上寻找突破口,也可以采用空间换时间的通用原则。


优秀学生代码展示及共性问题点评

4.22日发布的这道题目,截止5.1日有300多位同学参与线上贴码,展示自己的解题思路及代码书写。在所有提交者中,不乏众多正确答案。为此我们邀请百度曹老师挑选了5位同学书写规范、逻辑清晰的代码,作为样本供其他同学借鉴。

查看优秀代码及点评详情->


回帖方法:

- 成为俱乐部编程挑战群成员:点击屏幕上方,【俱乐部编程挑战群】旁边的【加入】按钮即可一键式加入;

- 如果还不是高校俱乐部会员,首先点击这里注册:会员注册


注明:每天18:00已向当天回帖贴代码的同学发送正确答案。本次答案发送活动截止时间为2014.04.30 18:00。之后需要获取正确答案的同学,请发送邮件到:studentclub@csdn.net。邮件标题请标注【一道淘汰85%面试者的百度开发者面试题+你的CSDN ID】,并在邮件中提供你注册时提交的姓名,院校以及你的回帖所在的分页等信息。
创建
2014-04-22
浏览
147456次
最新回复
2015-11-21
回复
454
12

CSDN-木水辰

毕业生北京邮电大学

在此我们公布一段错误的代码,供同学们研究。如果你们有改进建议,可以直接跟帖。


public void foo() {
    for (int i = 0; i < 100; i++) {
      if (i % 3 == 0) {
        System.out.println(i + " *");
      } else if (i % 5 == 0) {
        System.out.println(i + " #");
      } else if (i % 3 == 0 && i % 5 == 0) {
        System.out.println(i + " *#");
      }
    }
  }

2014年04月22日 15:06:33

河大鱼多

毕业生河南大学

public class Test {

    static final int MIN = 0;
    static final int MAX = 100;

    public static void main(String[] args) {

        String result = "";

        for (int i = MIN; i <= MAX; i++) {
            result = "";
            if (i % 3 == 0) {
                result = i + "*";
                if (i % 5 == 0) {
                    result += "#";
                }
                System.out.print(result+" ");
                continue;
            } else if (i % 5 == 0) {
                result = i + "#";
                System.out.print(result+" ");
                continue;
            }
        }
    }
}

2014年04月22日 15:24:03

工藤辛八

毕业生中山大学

#include <iostream>
using namespace std;

int main()
{
    for (int i=1;i<=100;i++)
    {

        if (i%3==0 && i%5==0)
            cout<<i<<"*#"<<endl;
        else if (i%3==0)
            cout<<i<<"*"<<endl;
        else if(i%5==0)
            cout<<i<<"#"<<endl;
    }
    return 0;
}

2014年04月22日 15:43:24

l206xd

毕业生成都东软学院

public static void main(String[] args) {        
        for(int i = 0;i <= 100;i++){
            String result = "";
            if(i % 3 == 0){
                result += i + "*";
                if(i % 5 == 0){
                    result += "#";
                }
                System.out.println(result);
            }
            else if(i % 5 == 0){
                result += i + "#";
                System.out.println(result);
            }
        }
    }

2014年04月22日 16:17:48

ID790017280

毕业生南昌大学

void NumberDis() { int der3 = -1; int der5 = -1; for(int i = 0; i<=100;++i) { der3 = i%3; der5 = i%5; if(0 == der3 && 0 == der5) { std::cout<

2014年04月22日 16:41:28

CSDN-木水辰

毕业生北京邮电大学

代码不完整,再想想。

2014年04月22日 16:51:44

POWERWHEEL475

毕业生河南理工大学

#include <iostream>

using namespace std;

int main()
{
    const int min=1;
    const int max = 100;
    for(int i=min;i<max;i++){
        int t = i*3;
        int t1 = i*5;
        if(t>100){
            break;
        }else if(t%5==0){
            cout<< t <<"*#"<<endl;
        }else{
            cout << t << "*"<<endl;
        }
        if(t1<=100){
            if(t1%3==0){
                cout << t1 << "*#" <<endl;
            }else{
                cout << t1 << "#" <<endl;
            }

        }

    }

}

2014年04月22日 17:02:32

ID790017280

毕业生南昌大学

void NumberDis() { int der3 = -1; int der5 = -1; int der15 = -1; for(int i = 0; i<= 100; ++i) { der15 = i; if(0 == der15) { std::cout<

2014年04月22日 17:16:38

jianke333

毕业生北京工业大学

#include <iostream>

using namespace std;

void main()
{
    for(int i=0;i<101;i++)
    {
        if(i%3==0 && i%5==0)
            cout<<i<<"*#";
        else{
            if(i%3==0)
                cout<<i<<"*";
            else if(i%5==0)
                cout<<i<<"#";
        }
    }
}

2014年04月22日 17:19:30

CSDN-木水辰

毕业生北京邮电大学

这样的代码书写格式是不可以的。

2014年04月22日 17:27:11

彭青蓝

毕业生新疆大学

public static void main(String[] args) {
        for(int i=1; i<100; i++) {
            String res = null;
            if(i%3 == 0) {
                if(i%5 == 0) {                    
                    System.out.println(i + "*#");
                    continue;
                }
                else {                    
                    System.out.println(i + "*");
                    continue;
                }
            }else {
                if(i%5 == 0) {                    
                    System.out.println(i + "#");
                    continue;
                }                
            }
        }
    }

2014年04月22日 17:32:47

jason_star

毕业生福建师范大学

#include<iostream>
using namespace std;
int main()
{
    for (int i = 1; i < 100; i++)
    {
        cout << i;
        if (i % 3 == 0)
            cout << "*";
        if (i % 5 == 0)
            cout << "#";
        cout << " ";
    }
    cout << "100#" << endl;
}

2014年04月22日 18:31:50

小强就是我

毕业生南京邮电大学

public class BaiDuTest {
    public static void main(String args[]){
        int i;
        for(i=0;i<=100;i++){
            if(i%3==0&&i%5==0){
                System.out.println(i + "*#");
                continue;
            }
            if(i%3==0){
                System.out.println(i + "*");
                continue;
            }
            if(i%5==0){
                System.out.println(i + "#");
            }
        }
    }
}

2014年04月22日 18:40:45

孤月流觞

毕业生安徽师范大学

#include<stdio.h>
int main()
{
 int i;
 for(i=0; i<=100; i++)
 {
  if(i % 3 ==0 && i % 5 == 0)
  printf("%d*#\n",i);
  else
  if(i % 3 == 0)
  printf("%d*\n",i);
  else
  if(i % 5 == 0)
  printf("%d#\n",i);
 }
 return 0;
} 

2014年04月22日 18:44:16

onion_cc

毕业生西安职业技术

 

 

    for (int i = 0; i <= 100; i++) {
    
       if (i % 3 == 0 && i % 5 == 0){
         cout<<i<<"w ";
         continue;
       }
       if (i % 3 == 0) {
        cout<<i<<"* ";
       } else if (i % 5 == 0) 
        cout<<i<<"# ";   
    }

我3&&5输出了w

这样呢。

 

 

2014年04月22日 18:45:34

Fey1992

毕业生重庆大学

import java.util.ArrayList ;

public class FindNumber {
    public static void main ( String args[] ) {
        ArrayList<Integer> threeList = new ArrayList<Integer> () ;
        ArrayList<Integer> fiveList = new ArrayList<Integer> () ;
        
        for ( int i = 3; i <= 100; i += 3 ) {
            threeList.add ( i ) ;
        }
        for ( int i = 5; i <= 100; i += 5 ) {
            fiveList.add ( i ) ;
        }
        
        int three, five ;
        three = threeList.remove ( 0 ) ;
        five = fiveList.remove ( 0 ) ;
        while (( ! threeList.isEmpty ()) && ( ! fiveList.isEmpty ())) {
            if ( three < five ) {
                System.out.print ( three + "*" ) ;
                three = threeList.remove ( 0 ) ;
            } else {
                if ( three == five ) {
                    System.out.print ( five + "*#" ) ;
                    three = threeList.remove ( 0 ) ;
                    five = fiveList.remove ( 0 ) ;
                } else {
                    System.out.print ( five + "#" ) ;
                    five = fiveList.remove ( 0 ) ;
                }
            }
        }
    }
}

 

 

2014年04月22日 18:47:40

追逐星空下的美

毕业生湖南科技学院

# -*- coding:utf-8 -*-
# test.py

for i in xrange(0, 101):
    if i > 0:
        if i % 3 == 0:
            print str(i) + '*'
        if i % 5 == 0:
            print str(i) + '#'
        if i % 15 == 0:
            print str(i) + '*#'

比较郁闷

2014年04月22日 18:53:25

watericemoon

毕业生黑龙江工程学

 

#include "stdio.h"

int main(void)
{

    int i=0;
    
    for(i=0;i<=100;i++)
    {
        if(i%3==0 && i%5==0) 
        {
            printf("%d *#\n",i);
            continue ;
        }
        if(i%3==0) 
        {
            printf("%d *\n",i);
        }
        if(i%5==0) 
        {
            printf("%d #\n",i);
        }
    }
    return 0;
}

 

2014年04月22日 19:10:56

文斌

讲师百度

整体思路正确,但为什么MIN和MAX是static final呢?用static的意义是什么?为何不指定访问修饰符?print的参数为何不是result而是用result+" "?

2014年04月22日 19:23:02

者望守想梦

毕业生中山大学

#include<iostream>
#include<string>

using namespace std;

int main()
{
    int add[7] = {3,2,1,3,1,2,3};
    char c[6] = {'*','#','*','*','#','*'};
    string all = "*#";
    int i = 0;
    int index = 0;
    while((i += add[index]) <= 100)
    {
        if(index != 6)
        {
            cout << i << c[index] << endl;
            index++;
        }
        else
        {
            cout << i << all << endl;
            index = 0;
        }
    }
    return 0;
}

2014年04月22日 19:23:40
Top_arrow