锁定老帖子 主题:一道简单的Java面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-10
最后修改:2011-04-10
rickysun 写道 求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); } } :cry: 我真的很无奈了。。。。。 我现在的想法是,30秒内给出答案的,直接8K以上。。。 楼主太扯淡了! 就凭一道题就来给薪资吗? 不要把此观点影响一大批人!好多都是新手,后果很严重! |
|
返回顶楼 | |
发表时间:2011-04-10
#include <iostream> #include <cmath> using namespace std; int main() { const cnt = 100; for(int i=2; i<cnt; ++i) { int num = sqrt(i); bool isPrime = true; for(int k=2; k<int(num+1); ++k) { if(i%k == 0) { isPrime = false; break; } } if(isPrime) { cout << i << endl; } } return 0; } |
|
返回顶楼 | |
发表时间:2011-04-10
Chen.H 写道 rickysun 写道 求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); } } :cry: 我真的很无奈了。。。。。 我现在的想法是,30秒内给出答案的,直接8K以上。。。 楼主太扯淡了! 就凭一道题就来给薪资吗? 不要把此观点影响一大批人!好多都是新手,后果很严重! 楼上说的是,我也觉得新手还是脚踏实地,学好知识是关键,不要浮躁。呵呵。 可能也是因为小公司的缘故吧。也可能是我们搜集的这部分简历水分太大。 |
|
返回顶楼 | |
发表时间:2011-04-10
fellatioyzx 写道 这没什么新鲜的,很多程序员数学都忘了很正常的,而且大多数人所会的开发都是使用一些成熟的框架拖一拖啊拷一拷啊就弄出来了。一沾基础的或理论的东西就完全不记得甚至不知道是常见事。
这道题也不算是什么高深的理论吧。写程序最基本的循环,条件判断总不能不了解吧。我之前也遇到一个应届生。我当时要求更低,只要写出1加到100,就要了。结果呢,招回来之后,什么都写不了。整整2个月,什么也干不了。当然,很多人是1加到100都写不出来,这些人只能直接pass掉了。 |
|
返回顶楼 | |
发表时间:2011-04-10
楼主你面试的都是些啥人啊,这么简单的题都不会,杯具啊,我更为那些人感到杯具啊
System.out.println("1-100之间的质数如下:"); for(int i = 1; i < 100; i++) { int j = 2; for( ; j < i; j++) { if(i%j == 0) { break; } } if( i == 1 || i == j) { System.out.println(i); } } |
|
返回顶楼 | |
发表时间:2011-04-10
package cap11; import java.util.ArrayList; public class Prime { public boolean isPrime(int i) throws AException{ if(i <= 1 ) throw new AException(); for(int j=2;j<=i/2;j++){ if((i%j)==0){ return false; }else{ continue; } } return true; } @SuppressWarnings("unchecked") public static void main(String[] args){ long l = System.currentTimeMillis(); Prime p = new Prime(); ArrayList a = new ArrayList(); try{ for(int i = 2 ; i<50000 ;i++){ if(p.isPrime(i)) a.add(i); } System.out.println(a); System.out.println(a.size()); System.out.println(System.currentTimeMillis() - l); }catch(AException e){ e.printStackTrace(); } } @SuppressWarnings("serial") class AException extends Exception{ @Override public void printStackTrace() { super.printStackTrace(); System.out.println("不能是1或者非正数"); } } } |
|
返回顶楼 | |
发表时间:2011-04-10
哈哈,挺基础的 记得有的公司8,9K,要求算法好的,一般都二分+树的遍历 |
|
返回顶楼 | |
发表时间:2011-04-10
补充一句:没有必要去除偶数(因为除了2之外的正偶数都不是质数),效率差不了多少
|
|
返回顶楼 | |
发表时间:2011-04-10
swprogrammer 写道 楼主你面试的都是些啥人啊,这么简单的题都不会,杯具啊,我更为那些人感到杯具啊
System.out.println("1-100之间的质数如下:"); for(int i = 1; i < 100; i++) { int j = 2; for( ; j < i; j++) { if(i%j == 0) { break; } } if( i == 1 || i == j) { System.out.println(i); } } 是啊。我也纳闷呢。找工作难,招人更难。哎,理解万岁。。。 |
|
返回顶楼 | |
发表时间:2011-04-10
main(){ int i=2,j=2; for(i=2;i<=100;i++){ for(j=2;j*2<=(i+1);j++){ if (i%j==0) break; if(j*2==(i+1)) printf("素数是==%d",i); } } } |
|
返回顶楼 | |