论坛首页 招聘求职论坛

一道简单的Java面试题

浏览 103225 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-04-10  
再补充一句:为了测试性能,测到了5W,把5W改成100就是对楼主的回答
0 请登录后投票
   发表时间:2011-04-10  
速度最快的不知道是什么
0 请登录后投票
   发表时间:2011-04-10  
peterwei 写道
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);
   }
}

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

楼主太搞了,很多毕业生都会做这题的,你给8k?



高中就会了!不过单一的考核不合理。
通过楼主的信息,想起面试候选人有些性格太钢了,我面试过几个,让我下不了台。给个建议,不知道就不知道,别解释,解释就是找借口。
0 请登录后投票
   发表时间:2011-04-10  
mercyblitz 写道
peterwei 写道
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);
   }
}

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

楼主太搞了,很多毕业生都会做这题的,你给8k?



高中就会了!不过单一的考核不合理。
通过楼主的信息,想起面试候选人有些性格太钢了,我面试过几个,让我下不了台。给个建议,不知道就不知道,别解释,解释就是找借口。

说的在理。可能是因为小公司吧。很多面试的人,抱着来不来都行的态度。如果是名企,就不一样了。

0 请登录后投票
   发表时间:2011-04-10  
ArrayList<Integer> al = new ArrayList<Integer>(30);
		for (int i = 2; i <= 100; i++) {
			boolean ok = true;
			for (int t : al) { //用已有质数集作判断,减少比较次数
				if (i % t == 0) {
					ok = false;
					break;
				}
				if (t > i / 2) {
					break;
				}
			}
			if (ok) {
				al.add(i);
			}
		}

楼主啊,这是我的解法,
我曾经在面试现场解得斐波那契的3变量法和杨辉三角的一维数组法,在打游戏时候想得怪物动作的控制方法,就在昨晚还做梦想出魔兽或三国杀的成就系统解决办法,我出价不高啊,不用8k,6k就成!
0 请登录后投票
   发表时间:2011-04-10  
flashsnow 写道
再补充一句:为了测试性能,测到了5W,把5W改成100就是对楼主的回答

找到同路人了。不仅要找到答案,还喜欢钻研。这才是搞技术的嘛。
0 请登录后投票
   发表时间:2011-04-10   最后修改:2011-04-10
backshadow 写道
ArrayList<Integer> al = new ArrayList<Integer>(30);
		for (int i = 2; i <= 100; i++) {
			boolean ok = true;
			for (int t : al) { //用已有质数集作判断,减少比较次数
				if (i % t == 0) {
					ok = false;
					break;
				}
				if (t > i / 2) {
					break;
				}
			}
			if (ok) {
				al.add(i);
			}
		}

楼主啊,这是我的解法,
我曾经在面试现场解得斐波那契的3变量法和杨辉三角的一维数组法,在打游戏时候想得怪物动作的控制方法,就在昨晚还做梦想出魔兽或三国杀的成就系统解决办法,我出价不高啊,不用8k,6k就成!

哥,你是在北京吗?我就喜欢你这样的,喜欢钻研算法和技术的人。如果是只要6K,直接来我这报道吧。
0 请登录后投票
   发表时间:2011-04-10  
//用已有质数集作判断,减少比较次数  这个好
0 请登录后投票
   发表时间:2011-04-10   最后修改:2011-04-10
rickysun 写道
backshadow 写道
ArrayList<Integer> al = new ArrayList<Integer>(30);
		for (int i = 2; i <= 100; i++) {
			boolean ok = true;
			for (int t : al) { //用已有质数集作判断,减少比较次数
				if (i % t == 0) {
					ok = false;
					break;
				}
				if (t > i / 2) {
					break;
				}
			}
			if (ok) {
				al.add(i);
			}
		}

楼主啊,这是我的解法,
我曾经在面试现场解得斐波那契的3变量法和杨辉三角的一维数组法,在打游戏时候想得怪物动作的控制方法,就在昨晚还做梦想出魔兽或三国杀的成就系统解决办法,我出价不高啊,不用8k,6k就成!

哥,你是在北京吗?我就喜欢你这样的,喜欢钻研算法和技术的人。如果是只要6K,直接来我这报道吧。

你给的算法还不完善,应该改成这样:
 ArrayList<Integer> al = new ArrayList<Integer>(30); 
		    al.add(2);
		    System.out.println(2);
            for (int i = 2; i <= 100; i++) {  
                boolean ok = true;  
                for (int t : al) { //用已有质数集作判断,减少比较次数  
                    if (i % t == 0) {  
                        ok = false;  
                        break;  
                    }  
                    if (t > i / 2) {  
                        break;  
                    }  
                }  
                if (ok) {  
                    System.out.println(i);
                    al.add(i);
                }  
            }  
0 请登录后投票
   发表时间:2011-04-10  
刚才用50000测了一下这两种算法,一个是297毫秒,一个耗时7875毫秒。
快速算法:
        ArrayList<Integer> al = new ArrayList<Integer>(); 
        al.add(2);
	System.out.println(2);
            for (int i = 2; i <= 50000; i++) {  
                boolean ok = true;  
                for (int t : al) { //用已有质数集作判断,减少比较次数  
                    if (i % t == 0) {  
                        ok = false;  
                        break;  
                    }  
                    if (t > i / 2) {  
                        break;  
                    }  
                }  
                if (ok) {  
                    System.out.println(i);
                    al.add(i);
                }  
            }  


普通算法:
for(int i=2;i<=50000;i++) {
	boolean ok = true;
	for (int j = 2; j < i; j++) {
		if(i%j==0) {
			ok = false;
		}
	}
	if(ok) System.out.println(i);
	}
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics