半年前还在迷茫该学什么怎样才能走出现在的困境半年后已经成功上岸阿里感谢在这期间帮助我的每一个人。面试中总结了1000道经典的Java面试题里面包含面试要回答的知识重点并且我根据知识类型进行了分类可以说非常全面了需要这份 《最全 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把具体技术相关的异常比如由JDBCHibernate or JDO抛出的转化为一致的unchecked 异常。MyBatis篇SpringBoot篇MySQL篇说说InnoDB与MyISAM的区别InnoDB支持事务MyISAM不支持对于InnoDB每一条SQL语言都默认封装成事务自动提交这样会影响速度所以最好把多条SQL语言放在begin和commit之间组成一个事务InnoDB支持外键而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败InnoDB是聚集索引数据文件是和索引绑在一起的必须要有主键通过主键索引效率很高。但是辅助索引需要两次查询先查询到主键然后再通过主键查询到数据。因此主键不应该过大因为主键太大其他索引也都会很大。而MyISAM是非聚集索引数据文件是分离的索引保存的是数据文件的指针。主键索引和辅助索引是独立的。InnoDB不保存表的具体行数执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数执行上述语句时只需要读出该变量即可速度很快Innodb不支持全文索引而MyISAM支持全文索引查询效率上MyISAM要高SpringCloud篇Redis篇为什么 Redis 单线程模型效率也能那么高C语言实现效率高纯内存操作基于非阻塞的IO复用模型机制单线程的话就能避免多线程的频繁上下文切换问题丰富的数据结构全称采用hash结构读取速度非常快对数据存储进行了一些优化比如亚索表跳表等部分内容展示最后过多内容就展示了有需要的可以点击下方名片获取