java高级工程师开放面试题集<一>

 不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么?

作为一个java后端老鸟,跌打滚爬多次被面试和面试别人,总结了一些经验,希望对大家有所帮助。

特别说明,仅仅针对工作两年以上的java后端开发。以开发性题目为主。

1.数据结构相关

  假设1亿整数存放在一个txt文件中,如何去重和排序?

  思路:

  1.1.面试者要评估一下一亿整数的大小。一个int占4个字节,1亿呢?

  1.2.去重的数据结构有哪些?HashSet--->引申到HashMap--->ConcurrentHashMap 

  1.3 数据量增大到十亿百亿怎么去重?

  布隆过滤器,优点,缺点

  1.4.其他方式?

    数据库distinct order by,txt怎么导入到数据库?load

         redis去重排序,redis的数据结构-->引申到其他数据结构 String,list,hash,set,sorted set,hyperloglog,geo

        mongo去重排序,

        ....

2. 算法相关,主要考察代码能力

   斐波那契数列(fabnacci)实现,首先介绍一下该算法的思想

  

    2.1 第一级别实现: 两层递归

复制代码
     public static long fibonacci(int n){            if(n==0) return 0;            else if(n==1) return 1;            else            return fibonacci(n-1)+fibonacci(n-2);            } 
复制代码

问算法复杂度及评估一下性能问题,提示可以优化。

    2.2 第二级别:减少一层递归

复制代码
    public static void main(String[] args) {         long tmp=0;         // TODO Auto-generated method stub        int n=10;         Long start=System.currentTimeMillis();         for(int i=0;i<n;i++){             System.out.print(fibonacci(i)+" ");         }         System.out.println("-------------------------");         System.out.println("耗时:"+(System.currentTimeMillis()-start));     }      public static long fibonacci(int n) {         long result = 0;         if (n == 0) {             result = 0;         } else if (n == 1) {             result = 1;             tmp=result;         } else {             result = tmp+fibonacci(n - 2);             tmp=result;         }         return result;     }
复制代码

  问题,算法复杂度,引导有没有不用递归的?

     2.3 无递归

复制代码
    public 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信