职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 560|回复: 11

一道简单的Java面试题

  [复制链接]
broken 发表于 2011-9-3 10:54 | 显示全部楼层 |阅读模式
求100以内的质数(指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。)
大家觉得这是个很难的题目吗?
最近面试了很多人,职位是:Java开发工程师。
有人说“这个是算法题,我是搞J2EE开发的,不需要会这个题目”,此人薪资要求8K
有人说“可能专业不对口,我是搞SSH的,我Struts/Spring/Hibernate都懂。这个做不出来”,此人薪资要求8.5K。
最终有一个哥们,做了15分钟,终于给出答案了。当然是答案是错的,此人薪资要求12K。
他给的答案是:
  
for(int i=0;i<100;i++) {   
   for(int j<0;j<100;j++) {   
       if(i/j==0) {   
          break;   
       }   
       System.out.println(i);   
   }   
}  

for(int i=0;i<100;i++) {
   for(int j<0;j<100;j++) {
       if(i/j==0) {
          break;
       }
       System.out.println(i);
   }
}

:cry:  
我真的很无奈了。。。。。
我现在的想法是,30秒内给出答案的,直接8K以上。。。

hxy 发表于 2011-9-3 10:54 | 显示全部楼层
这样题目,不难吧,明白什么是质数就行了
可能有人部明白质数的定义

feiguo 发表于 2011-9-3 10:54 | 显示全部楼层
我直接给出了质数的定义了。在题目后有“指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。”的描述。

钰云 发表于 2011-9-3 10:54 | 显示全部楼层
LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++)
{
if(i % 2) == 1)
system.out.println(i+" 是质数");
else
break;
}
也不知道对不对,没测

愚人 发表于 2011-9-3 10:54 | 显示全部楼层
少个括号,不好意思

fossil 发表于 2011-9-3 10:55 | 显示全部楼层
我数学系的,能算12k以为的资数,能给12k不?

话说我当年 发表于 2011-9-3 10:55 | 显示全部楼层
  
public static void main(String[] args) {   
    // TODO Auto-generated method stub   
    for(int j=0;j<20;j++){   
        if(isPrime(j))   
            System.out.print(j+" ");   
    }   
}   
  
public static boolean isPrime(int d){   
    if(d == 0)return false;   
    for(int i=2;(i*i)<(d+1);i++){   
        if((d % i) == 0)return false;   
    }   
    return true;   
}  

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                for(int j=0;j<20;j++){
                        if(isPrime(j))
                                System.out.print(j+" ");
                }
        }

        public static boolean isPrime(int d){
                if(d == 0)return false;
                for(int i=2;(i*i)<(d+1);i++){
                        if((d % i) == 0)return false;
                }
                return true;
        }


这个仿照教科书的例子做的,先写一个判断是否是质数的函数isPrime(),然后从1到n分别调用isPrime()函数来检查。检查是否是质数的算法是核心,其简单的使用从2到n的开根的数作为除数。这样的算法复杂度几乎是O(n*log(n)),看上去不错,但其实很不经济。

钰云 发表于 2011-9-3 10:55 | 显示全部楼层
敢问楼主是哪个公司的?可否站内短信联系,或者电话13478667125
小弟目前有到北京去工作的想法。我要求没你说的那么高,只要7.5K就行

只学java 发表于 2011-9-3 10:55 | 显示全部楼层
  
public static void printNum(int n) {   
    for (int i = 2; i <= n; i++) {   
        int m = 0;   
        for (int j = 2; j < 100; j++) {   
            if (i > j) {   
                if (i % j == 0) {   
                    m++;   
                }   
            } else {   
                break;   
            }   
        }   
        if (m < 1) {   
            System.out.println(i);   
        }   
    }   
}   
  
public static void main(String[] str) {   
    printNum(100);   
}  

        public static void printNum(int n) {
                for (int i = 2; i <= n; i++) {
                        int m = 0;
                        for (int j = 2; j < 100; j++) {
                                if (i > j) {
                                        if (i % j == 0) {
                                                m++;
                                        }
                                } else {
                                        break;
                                }
                        }
                        if (m < 1) {
                                System.out.println(i);
                        }
                }
        }

        public static void main(String[] str) {
                printNum(100);
        }


效率比较底,有点复杂。

醉倚西风 发表于 2011-9-3 10:55 | 显示全部楼层
rickysun 写道
求100以内的质数。
大家觉得这是个很难的题目吗?
最近面试了很多人,职位是:Java开发工程师。
有人说“这个是算法题,我是搞J2EE开发的,不需要会这个题目”,此人薪资要求8K
有人说“可能专业不对口,我是搞SSH的,我Struts/Spring/Hibernate都懂。这个做不出来”,此人薪资要求8.5K。
最终有一个哥们,做了15分钟,终于给出答案了。当然是答案是错的,此人薪资要求12K。
他给的答案是:
  
for(int i=0;i<100;i++) {   
   for(int j<0;j<100;j++) {   
       if(i/j==0) {   
          break;   
       }   
       System.out.println(i);   
   }   
}  

for(int i=0;i<100;i++) {
   for(int j<0;j<100;j++) {
       if(i/j==0) {
          break;
       }
       System.out.println(i);
   }
}

:cry:  
我真的很无奈了。。。。。
我现在的想法是,30秒内给出答案的,直接8K以上。。。

楼主太搞了,很多毕业生都会做这题的,你给8k?
Jethro 发表于 2011-9-4 09:53 | 显示全部楼层
谁都不容易啊 ~~
shmilyyu 发表于 2011-9-4 09:53 | 显示全部楼层
真~~~~~~~~~~
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-29 07:25 , Processed in 0.129647 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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