锁定老帖子 主题:一道简单的Java面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-10
再补充一句:为了测试性能,测到了5W,把5W改成100就是对楼主的回答
|
|
返回顶楼 | |
发表时间:2011-04-10
速度最快的不知道是什么
|
|
返回顶楼 | |
发表时间: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? 高中就会了!不过单一的考核不合理。 通过楼主的信息,想起面试候选人有些性格太钢了,我面试过几个,让我下不了台。给个建议,不知道就不知道,别解释,解释就是找借口。 |
|
返回顶楼 | |
发表时间: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? 高中就会了!不过单一的考核不合理。 通过楼主的信息,想起面试候选人有些性格太钢了,我面试过几个,让我下不了台。给个建议,不知道就不知道,别解释,解释就是找借口。 说的在理。可能是因为小公司吧。很多面试的人,抱着来不来都行的态度。如果是名企,就不一样了。 |
|
返回顶楼 | |
发表时间: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就成! |
|
返回顶楼 | |
发表时间:2011-04-10
flashsnow 写道 再补充一句:为了测试性能,测到了5W,把5W改成100就是对楼主的回答
找到同路人了。不仅要找到答案,还喜欢钻研。这才是搞技术的嘛。 |
|
返回顶楼 | |
发表时间: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,直接来我这报道吧。 |
|
返回顶楼 | |
发表时间:2011-04-10
//用已有质数集作判断,减少比较次数 这个好
|
|
返回顶楼 | |
发表时间: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); } } |
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |