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 static long fibonacci(int n){
        long before=0,behind=0;
        long result=0;
        for(int i=0;i<n;i  ){
            if(i==0){
                result=0;
                before=0;
                behind=0;
            }
            else if(i==1){
                result=1;
                before=0;
                behind=result;
            }else{
                result=before behind;
                before=behind;
                behind=result;
                
            }
        }
        return result;
    }

3.并发题目

   给出一个一般的spring mvc controller,以下:

@Controller
public class WelcomeController {

    private final Logger logger = LoggerFactory.getLogger(WelcomeController.class);
    
  @Autowired
  private final HelloWorldService helloWorldService;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Map<String, Object> model) {

        logger.debug("index() is executed!");

        model.put("title", helloWorldService.getTitle(""));
        model.put("msg", helloWorldService.getDesc());
        
        return "index";
    }

}

   题目:

    3.1.线程模子是甚么?单线程

    3. 2.怎样提拔qps?线程池 executor

    3.3.在线程池下怎样掌握并发?信号量Semaphore或许计数器CountDownLatch

       引伸到:Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock

   

4.数据库相干

    场景:一张表 test(a,b,c,e,f,g) 100w纪录  经常使用查询前提 ab  abc  abe,怎样提拔查询效力?

    4.1.索引,

    4.2.复合索引的划定规矩:最左准绳。查询前提ae走不走索引?

    4.3 1000w,1亿,十亿以上条纪录查询是不是会有甚么分歧?

     4.4 多线程下怎样包管数据一致性?乐观锁/消极锁,运用场景分歧点

 

5.设想形式相干

   

public class Test {  
  
    @Test  
    public void test() throws InterruptedException, ExecutionException {  
        AsyncTaskExecutor executor = new SimpleAsyncTaskExecutor("sys.out");  
        Future<String> future = executor.submit(new OutThread());  
        System.out.println(future.get());  
        System.out.println("Hello, World!");  
        Thread.sleep(10000 * 1000L);  
    }  
      
    static class OutThread implements Callable<String> {  
  
        public void run() {  
              
        }  
  
        @Override  
        public String call() throws Exception {  
            String ret = " i test callable";  
            for (int i = 0; i < 10; i  ) {  
                    try {  
                            Thread.sleep(2 * 1000L);  
                            System.out.println("i sleep 1s");  
                    } catch (InterruptedException e) {  
                         // TODO Auto-generated catch block  
                         e.printStackTrace();  
                    }  
             }  
            return ret;  
        }    
    }  
}  

    5.1 看顺序申明

    5.2 引伸到reactor模子

         spring reactor

          vert.x

          akka

    5.3 servlet 3 相应式编程

太累,先写到这里吧。

 

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。