首页 课程 师资 教程 报名

最新阿里高级java面试题解析

  • 2020-02-18 11:09:07
  • 2557次 动力节点

      项目MySQL的数据量和并发量有多大?

  评注:此题为走向题,你的回答不同,后面问题走向就变了。

  关于容量:单表行数超过500万行或者单表容量超过2GB,此时就要答分库分表的中间件了!那后面题目的走向就变为mycat、sharing-jdbc等分库分表中间件的底层原理了!

  关于并发量:如果并发数过1200,此时就要答利用MQ或者redis等中间件,作为补偿措施,而不能直接操作数据库。那后面的题目走向就是redis、mq的原理了!

  介于面试者还是一个应届生,我斗胆猜测面试者是这么答的

  回答:数据量估计就三四百万吧,并发量就五六百左右!

  你对数据库了解多少?

  评注:因为你答的数据量和并发量不大,因此中间件这块没啥好问的。因此,题目走向变为数据库底层!另外,此题为引导题,面试官在给你机会引向你最擅长的方面

  回答:了解常见数据库调优方法,索引优化等!

  你说下数据库的索引实现和非主键的二级索引

  评注:这个问题是根据上面,你的回答而问出来的!记得引向自己最擅长的数据库基础知识!默认是回答mysql数据库的

  回答:

  从数据结构角度:

  B-Tree索引,数据结构就是一颗B+树。

  Hash索引,Hash索引比较的是进行Hash运算之后的Hash值,所以它只能用于等值的过滤,不能用于基于范围的过滤。基本不用!

  R-Tree索引,仅支持geometry数据类型,也基本不用!

  至于非主键的二级索引,这个实际上问的就是非聚簇索引!非聚簇索引本身就是一颗B+树,其根节点指向聚簇索引的B+树。

  项目用的是SpringBoot,你能说下SpringBoot与Spring的区别吗?

  评注:基础题,会springboot的,基本都答的上来。就算没准备过,当场思考下都可以回答的出来!也是属于引导题!

  回答:

  SpringBoot可以建立独立的Spring应用程序;

  内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作了。

  无需再像Spring那样搞一堆繁琐的xml文件的配置;

  可以自动配置Spring;

  提供了一些现有的功能,如量度工具,表单数据验证以及一些外部配置这样的一些第三方功能;

  提供的POM可以简化Maven的配置

  SpringBoot的自动配置是怎么做的?

  评注:此题也是根据你的第七问,进一步提问而得出。

  回答:

  先答为什么需要自动配置?

  顾名思义,自动配置的意义是利用这种模式代替了配置XML繁琐模式。以前使用SpringMVC,需要进行配置组件扫描、调度器、视图解析器等,使用SpringBoot自动配置后,只需要添加MVC组件即可自动配置所需要的Bean。所有自动配置的实现都在spring-boot-autoconfigure依赖中,包括SpringMVC、Data和其它框架的自动配置。

  接着答spring-boot-autoconfigure依赖的工作原理?

  spring-boot-autoconfigure依赖的工作原理很简单,通过@EnableAutoConfiguration核心注解初始化,并扫描ClassPath目录中自动配置类对应依赖。比如工程中有木有添加Thymeleaf的Starter组件依赖。如果有,就按按一定规则获取默认配置并自动初始化所需要的Bean。

  其实还能再继续答@EnableAutoConfiguration注解的工作原理!不过篇幅太长,答到上面那个地步就够了!

  MyBatis定义的接口,怎么找到实现的?

  评注:mybatis底层原理题,考察有没有看过mybatis的原理。博主刚好曾经自己写过一个mybatis,所以此题恰巧答的上来。

  博主内心活动:"现在校招的都这么牛逼了么!"

  回答:一共五步

  1.Mapper接口在初始SqlSessionFactory注册的。

  2.Mapper接口注册在了名为MapperRegistry类的HashMap中,key=Mapperclassvalue=创建当前Mapper的工厂。

  3.Mapper注册之后,可以从SqlSession中get

  4.SqlSession.getMapper运用了JDK动态代理,产生了目标Mapper接口的代理对象。

  5.动态代理的代理类是MapperProxy,这里边最终完成了增删改查方法的调用。

  Java内存结构

  评注:基础题,这个应该学JAVA的都会吧!送分题!如果博主没理解错应该是在问JVM的内存结构!

  回答:JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、FromSurvivor空间、ToSurvivor空间,默认情况下年轻代按照8:1:1的比例来分配;

  方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆);栈又分为java虚拟机栈和本地方法栈主要用于方法的执行。

  MinorGC和FullGC

  评注:基础题,会JVM调优的,基本都会!我只是奇怪,怎么没问MajorGC呢?我们还是把MajorGC也给答了吧!

  回答:

  堆内存是JVM中最大的一块由年轻代和老年代组成。

  那么,从年轻代空间(包括Eden和Survivor区域)回收内存被称为MinorGC。

  MajorGC是清理老年代。

  FullGC是清理整个堆空间—包括年轻代和老年代。

  12、垃圾回收算法

  评注:基础题,博主斗胆猜测,应该是在问垃圾回收算法有哪些。面试官应该没有耐心去听你一个个去背算法概念!

  回答:

  标记-清除算法、标记整理算法、复制算法、分代收集算法

最新阿里高级java面试题解析

  以上就是动力节点Java培训机构小编介绍的“最新阿里高级java面试题解析”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

相关推荐

最新最全java面试题及答案(初级到高级)

史上最全的中高级JAVA工程师面试题及答案汇总

Java高级开发工程师面试题

2019史上最全java面试题题库大全800题

哪有资深java工程师面试题

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交