Topic: 今天有个面试题,用最简单的方法完成.(多指教,多谢)

  Print this page

1.今天有个面试题,用最简单的方法完成.(多指教,多谢) Copy to clipboard
Posted by: 黑骏马
Posted on: 2008-06-28 18:03

编写一个在命令窗口中显示如下棋盘形图案的应用程序.

2.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: Joffeec
Posted on: 2008-06-28 20:55

这个是我的做法,不知道是否是最简的

public class ChessTest {
  public static void main(String[] args) {
    
    String stars = " * * * * * * * *";
    for( int i = 1 ; i <= 8 ; i ++ ) {
      // 如果i是偶数就在stars的前面加一个空格
      System.out.println( ((i%2 == 1) ? "" : " ") + stars);
    }
  }
}

3.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: billgacsli
Posted on: 2008-06-29 04:18

这东西很难说最简单吧

我第一想到的是这样的

public class TestChess {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s1 = " * * * * * * * * ";
    String s2 = " * * * * * * * * ";
    for(int i = 0; i < 4; i++){
      System.out.println(s1);
      System.out.println(s2);
    }
  }
}

4.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: Joffeec
Posted on: 2008-06-29 11:37

我想问这一道真的是面试题吗?

5.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: 黑骏马
Posted on: 2008-06-29 21:45

这确实是一个面试题.
当时我是这样写的.
public class Xing
{
public static void main(String args[])
{
for(int i=0;i<8;i++)
{
  {
for(int j=0;j<8;j++)
{
  if(i%2!=0)
  {
if(j==0)
System.out.print(" *");
else
System.out.print(" *");
}
else
System.out.print(" *");
}
System.out.println();
}
}
}
}
我想他们面试的目的.是看处理问题的方法.
我认为下面的方法更简单,JAVA初学者就会做.虽然觉得不像程序写的,但是确实很实用,其实我们没有必要把问题复杂化.对于开发者来说,简单才是最好的.这是我的个人看发,希望大家给予指点.多谢.
public class Chess
{
public static void main(String args[])
{
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
}
}

6.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: ogrish
Posted on: 2008-06-30 10:17


public class test2 {
  public static void main(String[] args) {
    System.out.println("* * * * * * * *\n * * * * * * * *\n* * * * * * * *\n * * * * * * * *\n* * * * * * * *\n * * * * * * * *\n* * * * * * * *\n * * * * * * * *");
  }
}

7.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-06-30 15:42

黑骏马 wrote:
我认为下面的方法更简单,JAVA初学者就会做.虽然觉得不像程序写的,但是确实很实用,其实我们没有必要把问题复杂化.对于开发者来说,简单才是最好的.这是我的个人看发,希望大家给予指点.多谢.
public class Chess
{
public static void main(String args[])
{
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
}
}

That is right. If I was the interviewer, I would more like this solution rather than the former one. The former one has two "for" loops which is usually the bottle neck of the program. (aka you should avoid using "for" loop always).

Regards,
Jiafan

8.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: Joffeec
Posted on: 2008-07-01 10:32

黑骏马 wrote:
我想他们面试的目的.是看处理问题的方法.
…………
我认为下面的方法更简单,JAVA初学者就会做.虽然觉得不像程序写的,但是确实很实用,其实我们没有必要把问题复杂化.对于开发者来说,简单才是最好的…………
public class Chess
{
public static void main(String args[])
{
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
}
}

我同意楼主所说的:
没有必要把问题复杂化.对于开发者来说,简单才是最好的

但是我觉得对于一个学习者来说,对待同一个问题应该以不同的角度去观察它,以不同的方法去解决它,这样思维才能得到锻练。我自己在做这类题时就会尝试着用尽量多的方法去实现它。

黑骏马 wrote:
JAVA初学者就会做
public class Chess
{
public static void main(String args[])
{
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
System.out.println("* * * * * * * *");
System.out.println(" * * * * * * * *");
}
}

没错。这个Java初学者就会做。
我做了一个实验就是把这道题拿给那些Java初学者和那些对Java有较深点了解的人做(强调了这是一个面试题)对于Java初学者来说几乎都是写了上面那个最简单的做法,而对于那些对Java有较深了解的都是用到了for语句。
现在问题来了:
假如上面提到Java初学者和那些对Java有较深了解的刚好同时去应聘同一间公司,那间公司也刚好出了同一道题……那么那间公司会选择那种应聘者的答案?
难道是选择Java初学者吗?


现在我想请版主和所有路过的人都来回答这个问题:
假如你是一个应聘者,应聘的公司也同样的给你出了这道题,那么你要怎么做呢?

如果我有说错的地方请各位指出来。谢谢!

9.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: Joffeec] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-07-01 15:54

Joffeec wrote:

现在我想请版主和所有路过的人都来回答这个问题:
假如你是一个应聘者,应聘的公司也同样的给你出了这道题,那么你要怎么做呢?

如果我有说错的地方请各位指出来。谢谢!

很简单,假如我是应聘者,我会给出两组解决办法。
1. 完全不用到for loop,最高效的办法。
2. 用到for loop(注意不是那个两层for loops),让他们知道我完全有能力写出更加复杂而且让人看不懂得代码。

最后重申我推荐试用第一种解法,因为他高效,所以软件产品就高效。软件产品高效,所以公司就高效。公司高效,所以我们就高效。。。。。

10.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: 黑骏马
Posted on: 2008-07-01 19:46

多谢各位的顶力支持.

Joffeec wrote:

现在我想请版主和所有路过的人都来回答这个问题:
假如你是一个应聘者,应聘的公司也同样的给你出了这道题,那么你要怎么做呢?

如果我有说错的地方请各位指出来。谢谢!

我是一个应聘者:
一、如果我是一个初学者,我会用for loop.
二、如果我是一个经验丰富的程序员,我会用那个最简单的方法。

如果我要解决工作中问题的话,我就会用最简单的方法(现在我还做不到)。我在这里提出的是关于思维定式的问题。其实,有些朋友喜欢把简单的问题,复杂化处理。当然,我也有这种坏毛病。我的目的就是希望各位在处理问题的时候,尽量把问题简单化。

11.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: jancyu2008
Posted on: 2008-07-01 21:23

黑骏马 wrote:
……
我是一个应聘者:
一、如果我是一个初学者,我会用for loop.
二、如果我是一个经验丰富的程序员,我会用那个最简单的方法。

如果我要解决工作中问题的话,我就会用最简单的方法(现在我还做不到)。我在这里提出的是关于思维定式的问题。其实,有些朋友喜欢把简单的问题,复杂化处理。当然,我也有这种坏毛病。我的目的就是希望各位在处理问题的时候,尽量把问题简单化。

其实复杂的问题不一定要用复杂的办法,把问题想的简单一些就OK了
我虽然是新手,但是我会用下面的方法:

public class PrintTest
{
  public static void main(String asdf[])
  {
    System.out.println("* * * * * * * *");
    System.out.println(" * * * * * * * *");
    System.out.println("* * * * * * * *");
    System.out.println(" * * * * * * * *");
    System.out.println("* * * * * * * *");
    System.out.println(" * * * * * * * *");
  }
}

12.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: 空心菜
Posted on: 2008-07-02 15:54

看你是不是能问题简单化?

13.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: andy_wang_5
Posted on: 2008-07-03 09:08

我和少林见空大师交流了好长时间. 他说:"难就是易, 易就是难, 就看施主怎么理解了"
最后大师给了个建议:
拒绝答这种无聊的题目

你一行一行打出来,他说你笨
你用循环, 他说你把问题复杂话了
你加上转义字符, 说了用最简单方法,初学者怎么看懂.
最简单的方法就是 拒绝

14.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: andy_wang_5] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-07-03 16:28

andy_wang_5 wrote:
你一行一行打出来,他说你笨
你用循环, 他说你把问题复杂话了
你加上转义字符, 说了用最简单方法,初学者怎么看懂.
最简单的方法就是 拒绝

No, I don't agree with that. Because the interviewer might give you these simple questions in order to test your response. You should really provide several solutions to them as to demonstrate what you really know about. Then propose a finest solution to them with your detailed confident explanation. It means that the interviewee has fully considered the problem domain and took the right approach.

Well again, if an interviewee refused to answer those simple questions, then the job could be also refused and the door to that job could potentially shut down. The question itself concerning Java programming is really naive, but to take the right approach to win the flag is not.

Regards,
Jiafan

15.Re:今天有个面试题,用最简单的方法完成.(多指教,多谢) [Re: 黑骏马] Copy to clipboard
Posted by: mjh_abc
Posted on: 2008-07-19 14:29

public static void main(String[] args) {
for (int i=0;i<8;i++) {
for (int j=0;i<16;j++)
if ((i+j)%2==0) System.out.print("*");
else System.out.print(" ");
System.out.println();
}
}

据观察,*的位置的行号和列号之和为偶数,空格的位置的行号和列号之和为奇数。

两重循环,枚举每个位置,遇到行号和列号和为奇数的打印空格,否则打印*。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923