写点什么

面试半年,总结了 1000 道 2023 年 Java 架构师岗面试题

作者:小小怪下士
  • 2023-02-28
    湖南
  • 本文字数:1731 字

    阅读完需:约 6 分钟

半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人。


面试中总结了 1000 道经典的 Java 面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了~



由于文章篇幅问题,以下只展示部分题目内容,需要完整文档的朋友,点赞之后【点击此处】即可免费获取!

基础篇

  • 1、 Java 语言有哪些特点


1、简单易学、有丰富的类库 2、面向对象(Java 最重要的特性,让程序耦合度更低,内聚性更高)3、与平台无关性(JVM 是 Java 跨平台使用的根本)4、可靠安全 5、支持多线程


  • 2、面向对象和面向过程的区别


面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发


面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。


JVM 篇

  • 说说堆和栈的区别


栈是运行时单位,代表着逻辑,内含基本数据类型和堆中对象引用,所在区域连续,没有碎片;堆是存储单位,代表着数据,可被多个栈共享(包括成员中基本数据类型、引用和引用对象),所在区域不连续,会有碎片。


1、功能不同栈内存用来存储局部变量和方法调用,而堆内存用来存储 Java 中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。


2、共享性不同栈内存是线程私有的。 堆内存是所有线程共有的。


3、异常错误不同如果栈内存或者堆内存不足都会抛出异常。 栈空间不足:java.lang.StackOverFlowError。 堆空间不足:java.lang.OutOfMemoryError。


4、空间大小栈的空间大小远远小于堆的


Spring 篇

  • 1、什么是 spring?


Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。


  • 2、你们项目中为什么使用 Spring 框架?


这么问的话,就直接说 Spring 框架的好处就可以了。比如说 Spring 有以下特点:


轻量:Spring 是轻量的,基本的版本大约 2MB。


控制反转:Spring 通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。


面向切面的编程(AOP):Spring 支持面向切面的编程,并且把应用业务逻辑和系统服务分开。


容器:Spring 包含并管理应用中对象的生命周期和配置。


MVC 框架:Spring 的 WEB 框架是个精心设计的框架,是 Web 框架的一个很好的替代品。


事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)


异常处理:Spring 提供方便的 API 把具体技术相关的异常(比如由 JDBC,Hibernate or JDO 抛出的)转化为一致的 unchecked 异常。


MyBatis 篇

SpringBoot 篇

MySQL 篇

  • 说说 InnoDB 与 MyISAM 的区别


  1. InnoDB 支持事务,MyISAM 不支持,对于 InnoDB 每一条 SQL 语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条 SQL 语言放在 begin 和 commit 之间,组成一个事务;

  2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败;

  3. InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

  4. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而 MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

  5. Innodb 不支持全文索引,而 MyISAM 支持全文索引,查询效率上 MyISAM 要高;


SpringCloud 篇

Redis 篇

  • 为什么 Redis 单线程模型效率也能那么高?


  1. C 语言实现,效率高

  2. 纯内存操作

  3. 基于非阻塞的 IO 复用模型机制

  4. 单线程的话就能避免多线程的频繁上下文切换问题

  5. 丰富的数据结构(全称采用 hash 结构,读取速度非常快,对数据存储进行了一些优化,比如亚索表,跳表等)


部分内容展示




用户头像

还未添加个人签名 2022-09-04 加入

热衷于分享java技术,一起交流学习,探讨技术。 需要Java相关资料的可以+v:xiaoyanya_1

评论

发布
暂无评论
面试半年,总结了1000道2023年Java架构师岗面试题_Java_小小怪下士_InfoQ写作社区