泰安网站建设制作服务物流公司模板wordpress
2026/4/18 6:43:25 网站建设 项目流程
泰安网站建设制作服务,物流公司模板wordpress,英雄联盟世界排名,wordpress主题HaoWa前言2025结束了#xff0c;这一你#xff0c;你收获了多少#xff1f;前段时间一直有粉丝问我#xff0c;有没有今年一些大厂Java面试题总结#xff1f;最新抽时间整理了一些#xff0c;分享给大家#xff0c;大家一起共享学习#xff01;篇幅限制下面就只能给大家展示…前言2025结束了这一你你收获了多少前段时间一直有粉丝问我有没有今年一些大厂Java面试题总结最新抽时间整理了一些分享给大家大家一起共享学习篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题需要全套面试笔记及答案可以在文末获取一、性能调优系列1.Tomcat性能调优JVM参数调优: -Xmssize 表示JVM初始化堆的大小一Xmxsize表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出并且导致应用服务崩溃。因此- -般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中设置JAVA _0PTS-Xms256m-Xmx512m表示初始化内存为256MB可以使用的最大内存512MB。2.JVM性能调优Java类加载过程Java类加载需要经历一下7个过程:1.加载加载是类加载的第一个过程在这个阶段将完成一下三件事情1通过一个类的全限定名获取该类的二进制流。2将该二进制流中的静态存储结构转化为方法去运行时数据结构。3在内存中生成该类的Class对象作为该类的数据访问入口。2.验证验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证:1文件格式验证:验证字节流是否符合Class文件的规范如主次版本号是否在当前虚拟机范围内常量池中的常量是否有不被支持的类型.2元数据验证:对字节码描述的信息进行语义分析如这个类是否有父类是否集成了不被继承的类等。3字节码验证:是整个验证过程中最复杂的一个阶段通过验证数据流和控制流的分析确定程序语义是否正确主要针对方法体的验证。如:方法中的类型转换是否正确跳转指令是否正确等。4符号引用验证:这个动作在后面的解析过程中发生主要是为了确保解析动作能正确执行。3.MySQL性能调优复制基本原理流程1. 主binlog 线程——记录下所有改变了数据库数据的语句放进 master 上的 binlog 中2. 从io 线程——在使用 start slave 之后负责从 master 上拉取 binlog 内容放进 自己的 relay log 中3. 从sql 执行线程——执行 relay log 中的语句MySQL 复制的线程有几个及之间的关联MySQL 的复制是基于如下 3 个线程的交互 多线程复制里面应该是 4 类线程1. Master 上面的 binlog dump 线程该线程负责将 master 的 binlogevent 传到 slave2. Slave 上面的 IO 线程该线程负责接收 Master 传过来的 binlog并写入relay log3. Slave 上面的 SQL 线程该线程负责读取 relay log 并执行4. 如果是多线程复制无论是 5.6 库级别的假多线程还是 MariaDB 或者 5.7的真正的多线程复制 SQL 线程只做 coordinator只负责把 relay log 中的binlog 读出来然后交给 worker 线程 woker 线程负责具体 binlog event 的执行二、微服务系列1.Spring Cloud面试什么是 Spring CloudSpring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序提供与外部系统的集成。Spring cloud Task一个生命周期短暂的微服务框架用于快速构建执行有限数据处理的应用程序。使用 Spring Cloud 有什么优势使用 Spring Boot 开发分布式微服务时我们面临以下问题1.与分布式系统相关的复杂性-这种开销包括网络问题延迟开销带宽问题安全问题。2.服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录在该目录中注册服务然后能够查找并连接到该目录中的服务。3. 冗余-分布式系统中的冗余问题。4. 负载平衡 --负载平衡改善跨多个计算资源的工作负荷诸如计算机计算机集群网络链路中央处理单元或磁盘驱动器的分布。5.性能-问题 由于各种运营开销导致的性能问题。6. 部署复杂性-Devops 技能的要求。2.spring boot面试什么是 Spring Boot多年来随着新功能的增加spring 变得越来越复杂。页面我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目我们必须添加构建路径或添加 Maven 依赖关系配置应用程序服务器添加 spring 配置。因此开始一个新的 spring 项目需要很多努力因为我们现在必须从头开始做所有事情。Spring Boot 是解决这个问题的方法。Spring Boot 已经建立在现有 spring 框架之上。使用spring 启动我们避免了之前我们必须做的所有样板代码和配置。因此Spring Boot 可以帮助我们以最少的工作量更加健壮地使用现有的 Spring 功能。Spring Boot 有哪些优点Spring Boot 的优点有1.减少开发测试时间和努力。2.使用 JavaConfig 有助于避免使用 XML。3.避免大量的 Maven 导入和各种版本冲突。4.提供意见发展方法。5.通过提供默认值快速开始开发。6.没有单独的 Web 服务器需要。这意味着你不再需要启动 TomcatGlassfish 或其他任何东西。7.需要更少的配置 因为没有 web.xml 文件。只需添加用 Configuration 注释的类然后添加用Bean 注释的方法Spring 将自动加载对象并像以前一样对其进行管理。您甚至可以将Autowired 添加到 bean 方法中以使 Spring 自动装入需要的依赖关系中。8.基于环境的配置 使用这些属性您可以将您正在使用的环境传递到应用程序-Dspring.profiles.active {enviornment}。在加载主应用程序属性文件后Spring 将在application{environment} .properties中加载后续的应用程序属性文件。3.Dubbo面试Dubbo 支持哪些协议每种协议的应用场景优缺点1.dubbo 单一长连接和 NIO 异步通讯适合大并发小数据量的服务调用以及消费者远大于提供者。传输协议 TCP异步Hessian 序列化2. rmi 采用 JDK 标准的 rmi 协议实现传输参数和返回参数对象需要实现Serializable 接口使用 java 标准序列化机制使用阻塞式短连接传输数据包大小混合消费者和提供者个数差不多可传文件传输协议 TCP。多个短连接TCP 协议传输同步传输适用常规的远程服务调用和 rmi 互操作。在依赖低版本的 Common-Collections 包java 序列化存在安全漏洞3. webservice 基于 WebService 的远程调用协议集成 CXF 实现提供和原生 WebService 的互操作。多个短连接基于 HTTP 传输同步传输适用系统集成和跨语言调用4. http 基于 Http 表单提交的远程调用协议使用 Spring 的 HttpInvoke 实现。多个短连接传输协议 HTTP传入参数大小混合提供者个数多于消费者需要给应用程序和浏览器 JS 调用5. hessian 集成 Hessian 服务基于 HTTP 通讯采用 Servlet 暴露服务Dubbo 内嵌 Jetty 作为服务器时默认实现提供与 Hession 服务互操作。多个短连接同步 HTTP 传输Hessian 序列化传入参数较大提供者大于消费者提供者压力较大可传文件6. memcache 基于 memcached 实现的 RPC 协议7. redis 基于 redis 实现的 RPC 协议三、并发编程系列1.Synchronized原理synchronized和ReentrantLock的区别synchronized是和if、else、for、while一样的关键字ReentrantLock是类这是二者的本质区别。既然ReentrantLock是类那么它就提供了比synchronized更多更灵活的特性可以被继承、可以有方法、可以有各种各样的类变量ReentrantLock比synchronized的扩展性体现在几点上1ReentrantLock可以对获取锁的等待时间进行设置这样就避免了死锁2ReentrantLock可以获取各种锁的信息3ReentrantLock可以灵活地实现多路通知另外二者的锁机制其实也是不一样的。ReentrantLock底层调用的是Unsafe的park方法加锁synchronized操作的应该是对象头中mark word这点我不能确定。2.AQS框架什么是AQSAQS是AbustactQueuedSynchronizer的简称它是一个Java提高的底层同步工具类用一个int类型的变量表示同步状态并提供了一系列的CAS操作来管理这个同步状态。AQS是一个用来构建锁和同步器的框架使用AQS能简单且高效地构造出应用广泛的大量的同步器比如我们提到的ReentrantLockSemaphore其他的诸如ReentrantReadWriteLockSynchronousQueueFutureTask等等皆是基于AQS的。AQS支持两种同步方式1.独占式2.共享式这样方便使用者实现不同类型的同步组件独占式如ReentrantLock共享式如SemaphoreCountDownLatch组合式的如ReentrantReadWriteLock。总之AQS为使用提供了底层支撑如何组装实现使用者可以自由发挥。3.Java线程池如果你提交任务时线程池队列已满这时会发生什么这里区分一下如果使用的是无界队列LinkedBlockingQueue也就是无界队列的话没关系继续添加任务到阻塞队列中等待执行因为LinkedBlockingQueue可以近乎认为是一个无穷大的队列可以无限存放任务 如果使用的是有界队列比如ArrayBlockingQueue任务首先会被添加到ArrayBlockingQueue中ArrayBlockingQueue满了会根据maximumPoolSize的值增加线程数量如果增加了线程数量还是处理不过来ArrayBlockingQueue继续满那么则会使用拒绝策略RejectedExecutionHandler处理满了的任务默认是AbortPolicy四、开源框架系列1.spring面试什么是 Spring 框架Spring 框架有哪些主要模块Spring 框架是一个为 Java 应用程序开发提供综合、广泛的基础性支持的 Java 平台。Spring 帮助开发者解决了开发中基础性的问题使得开发人员可以专注于应用程序的开发。Spring 框架本身也是按照设计模式精心打造的这使得我们可以在开发环境中安心地集成Spring 框架不必担心 Spring 是如何在后台工作的。2.springMVC面试什么是 SpringMvcSpringMvc 是 spring 的一个模块基于 MVC 的一个框架无需中间整合层来整合。Spring MVC 的优点1.它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和 Spring 提供的其他基础结构紧密集成.2.不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)3.可以任意使用各种视图技术,而不仅仅局限于 JSP4.支持各种请求资源的映射策略5.它应是易于扩展的SpringMVC 工作原理1..客户端发送请求到 DispatcherServlet2.DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller3.Controller 调用业务逻辑后返回 ModelAndView4.DispatcherServlet 查询 ModelAndView找到指定视图5.视图将结果返回到客户端3.MyBatis面试谈谈你对 MyBatis 的理解1. Mybatis是一个半ORM对象关系映射框架它内部封装了 JDBC开发时只需要关注 SQL 语句本身不需要花费精力去处理加载驱动、创建连接、创建 Statement 等繁杂的过程。程序员直接编写原生态 SQL可以严格控制 SQL 执行性能灵活度高。2. MyBatis 可以使用 XML 或注解来配置和映射原生信息将 POJO 映射成数据库中的记录避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。3. 通过 XML 文件或注解的方式将要执行的各种 Statement 配置起来并通过 Java 对象和 Statement 中 SQL 的动态参数进行映射生成最终执行的 SQL 语句最后由 MyBatis 框架执行 SQL并将结果映射为 Java 对象并返回。从执行 SQL到返回 Result 的过程。五、分布式专题1.分布式限流面试谈下你对 Zookeeper 的认识ZooKeeper 是一个分布式的开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件提供的功能包括配置维护、域名服务、分布式同步、组服务等。ZooKeeper 的目标就是封装好复杂易出错的关键服务将简单易用的接口和性能高效、功能稳定的系统提供给用户。Zookeeper 都有哪些功能1. 集群管理监控节点存活状态、运行请求等2. 主节点选举主节点挂掉了之后可以从备用的节点开始新一轮选主主节点选举说的就是这个选举的过程使用 Zookeeper 可以协助完成这个过程3. 分布式锁Zookeeper 提供两种锁独占锁、共享锁。独占锁即一次只能有一个线程使用资源共享锁是读锁共享读写互斥即可以有多线线程同时读同一个资源如果要使用写锁也只能有一个线程使用。Zookeeper 可以对分布式锁进行控制。4. 命名服务在分布式系统中通过使用命名服务客户端应用能够根据指定名字来获取资源或服务的地址提供者等信息。2.分布式通讯面试RabbitMQ 中的 broker 是指什么cluster 又是指什么broker 是指一个或多个 erlang node 的逻辑分组且 node 上运行着 RabbitMQ 应用程序。cluster 是在 broker 的基础之上增加了 node 之间共享元数据的约束。什么是元数据元数据分为哪些类型包括哪些内容与 cluster 相关的元数据有哪些元数据是如何保存的元数据在 cluster 中是如何分布的在非 cluster 模式下元数据主要分为 Queue 元数据queue 名字和属性等、Exchange 元数据exchange 名字、类型和属性等、Binding 元数据存放路由关系的查找表、Vhost 元数据vhost 范围内针对前三者的名字空间约束和安全属性设置。在cluster 模式下还包括 cluster 中 node 位置信息和 node 关系信息。元数据按照 erlangnode 的类型确定是仅保存于 RAM 中还是同时保存在 RAM 和 disk 上。元数据在 cluster中是全 node 分布的。3.分布式数据库面试哨兵Sentinel和复制ReplicationRedis服务器毫无征兆的罢工是个麻烦事如何保证备份的机器是原始服务器的完整备份呢这时候就需要哨兵和复制。Sentinel可以管理多个Redis服务器它提供了监控提醒以及自动的故障转移的功能Replication则是负责让一个Redis服务器可以配备多个备份的服务器。Redis也是利用这两个功能来保证Redis的高可用的事务很多情况下我们需要一次执行不止一个命令而且需要其同时成功或者失败。redis对事务的支持也是源自于这部分需求即支持一次性按顺序执行多个命令的能力并保证其原子性。篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题需要全套面试笔记及答案可以点击下方名片获取最后领取资料的朋友们记得帮作者点赞转发哟感谢支持

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询