进来一个头发稀疏,穿着格子衬衫的中年男人,把手里的MAC放在桌子上,对我说:“我会用电脑记录面试过程,你别介意。”我回答:没关系。面试官:“先做一些算法基础题,用Java写一个方法,求100万以内的素数。”我心想,这真的很基础。质数不就是除了1和它本身之外不能被其他数整除的数吗,所以我写了:publicstaticListfindPrime(){Listlist=newArrayList<>(100000);for(intn=2;n<1000000;n++){booleanisPrime=true;for(inti=2;ifindPrime(){Listlist=newArrayList<>(100000);for(intn=2;n<1000000;n++){booleanisPrime=true;intsqrt=(int)Math.sqrt(n);for(inti=2;i<=sqrt;i++){if(n%i==0){isPrime=false;break;}}if(isPrime){list.add(n);}}返回列表;}面试官看了说:“写的很好,功能基本实现了,但是再想一想,有什么可以优化的吗?”我想了想说:“好像没有什么可以优化的?”我想了想说:“应该不会吧。”面试官说:“你确定吗?”我肯定地回答:“我确定。”面试官:“好吧,这个问题先来了。”我有点不服气,赶紧问:“你说说,还有什么可以优化的吗?”面试官笑着说:“你也可以用之前算出来的质数做整数除法,性能至少可以提升一倍。”面试官对我写的代码做了一些改动,变成了:publicstaticListfindPrime(){Listlist=newArrayList<>(100000);对于(intn=2;n<1000000;n++){booleanisPrime=true;intsqrt=(int)数学。开方(n);for(Integeri:list){if(n%i==0){isPrime=false;休息;}如果(i>sqrt){中断;}}if(isPrime){list.add(n);}}returnlist;}恍然大悟,这次面试真的学到了。本故事纯属虚构,如有雷同,纯属巧合。