2024年阿里java基础题

阿里java基础题项目 MySQL 的数据量和并发量有多大 评注 此题为走向题 你的回答不同 后面问题走向就变了 关于容量 单表行数超过 500 万行或者单表容量超过 2GB 此时就要答分库分表的中间件了 那后面题目的走向就变为 mycat sharing jdbc 等分库分表中间件的底层原理了 关于并发量 如果并发数过 1200 此时就要答利用 MQ 或者 redis 等中间件 作为补偿措施 而不能直接操作数据库

大家好,我是讯享网,很高兴认识大家。



项目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的自动配置是怎么做的?

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

  回答:阿里java基础题

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

  顾名思义,自动配置的意义是利用这种模式代替了配置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题

小讯
上一篇 2025-01-01 12:12
下一篇 2024-12-29 18:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/4501.html