前言很多朋友对面试不够了解不知道如何准备对面试环节的设置以及目的不够了解因此成功率不高。通常情况下校招生面试的成功率低于 1%而社招的面试成功率也低于 5%所以对于候选人一定要知道设立面试的初衷以及每个环节的意义有的放矢…Redis 面试题1、什么是 Redis?2、Redis 的数据类型3、使用 Redis 有哪些好处4、Redis 相比 Memcached 有哪些优势5、Memcache 与 Redis 的区别都有哪些6、Redis 是单进程单线程的7、一个字符串类型的值能存储最大容量是多少8、Redis 的持久化机制是什么各自的优缺点9、Redis 常见性能问题和解决方案10、redis 过期键的删除策略11、Redis 的回收策略淘汰策略?12、为什么 edis 需要把所有数据放到内存中13、Redis 的同步机制了解么答Redis 可以使用主从同步从从同步。第一次同步时主节点做一次 bgsave并同时将后续修改操作记录到内存 buffer待完成后将 rdb 文件全量同步到复制节点复制节点接受完成后将 rdb 镜像加载到内存。加载完成后再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。14、Pipeline 有什么好处为什么要用 pipeline15、是否使用过 Redis 集群集群的原理是什么?16、Redis 集群方案什么情况下会导致整个集群不可用17、Redis 支持的 Java 客户端都有哪些官方推荐用哪个18、Jedis 与 Redisson 对比有什么优缺点19、Redis 如何设置密码及验证密码20、说说 Redis 哈希槽的概念21、Redis 集群的主从复制模型是怎样的?22、Redis 集群会有写操作丢失吗为什么23、Redis 集群之间是如何复制的24、Redis 集群最大节点个数是多少25、Redis 集群如何选择数据库26、怎么测试 Redis 的连通性27、怎么理解 Redis 事务28、Redis 事务相关的命令有哪几个答异步复制MySQL 面试题1、MySQL 中有哪几种锁2、MySQL 中有哪些不同的表格3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别?4、MySQL 中 InnoDB 支持的四种事务隔离级别名称以及逐级之间的区别5、CHAR 和 VARCHAR 的区别6、主键和候选键有什么区别7、myisamchk 是用来做什么的8、如果一个表有一列定义为 TIMESTAMP将发生什么9、你怎么看到为表格定义的所有索引10、LIKE 声明中的和_是什么意思11、列对比运算符是什么12、BLOB 和 TEXT 有什么区别13、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么答以下是 MySQL_fetch_array 和 MySQL_fetch_object 的区别MySQL_fetch_array – 将结果行作为关联数组或来自数据库的常规数组返回。MySQL_fetch_object – 从数据库返回结果行作为对象。14、MyISAM 表格将在哪里存储并且还提供其存储格式15、MySQL 如何优化 DISTINCT16、如何显示前 50 行17、可以使用多少列创建索引18、NOW和 CURRENT_DATE有什么区别19、什么是非标准字符串类型20、什么是通用 SQL 函数21、MySQL 支持事务吗22、MySQL 里记录货币用什么字段类型好23、MySQL 有关权限的表都有哪几个24、列的字符串类型可以是什么25、MySQL 数据库作发布系统的存储一天五万条以上的增量预计运维三年,怎么优化?26、锁的优化策略27、索引的底层实现原理和优化28、什么情况下设置了索引但无法使用1、以“%”开头的 LIKE 语句模糊匹配2、OR 语句前后没有同时使用索引3、数据类型出现隐式转化如 varchar 不加单引号的话可能会自动转换为 int 型Java 并发编程1、在 java 中守护线程和本地线程区别2、线程与进程的区别3、什么是多线程中的上下文切换4、死锁与活锁的区别死锁与饥饿的区别5、Java 中用到的线程调度算法是什么6、什么是线程组为什么在 Java 中不推荐使用7、为什么使用 Executor 框架8、在 Java 中 Executor 和 Executors 的区别9、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长10、什么是原子操作在 Java Concurrency API 中有哪些原子类(atomic classes)11、Java Concurrency API 中的 Lock 接口(Lock interface)是什么对比同步它有什么优势12、什么是 Executors 框架13、什么是阻塞队列阻塞队列的实现原理是什么如何使用阻塞队列来实现生产者-消费者模型阻塞队列BlockingQueue是一个支持两个附加操作的队列。这两个附加的操作是在队列为空时获取元素的线程会等待队列变为非空。当队列满时存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景生产者是往队列里添加元素的线程消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器而消费者也只从容器里拿元素。JDK7 提供了 7 个阻塞队列。分别是ArrayBlockingQueue 一个由数组结构组成的有界阻塞队列。LinkedBlockingQueue 一个由链表结构组成的有界阻塞队列。PriorityBlockingQueue 一个支持优先级排序的无界阻塞队列。DelayQueue一个使用优先级队列实现的无界阻塞队列。SynchronousQueue一个不存储元素的阻塞队列。LinkedTransferQueue一个由链表结构组成的无界阻塞队列。LinkedBlockingDeque一个由链表结构组成的双向阻塞队列。Java 5 之前实现同步存取时可以使用普通的一个集合然后在使用线程的协作和线程同步可以实现生产者消费者模式主要的技术就是用好wait ,notify,notifyAll,sychronized 这些关键字。而在 java 5 之后可以使用阻塞队列来实现此方式大大简少了代码量使得多线程编程更加容易安全方面也有保障。BlockingQueue 接口是 Queue 的子接口它的主要用途并不是作为容器而是作为线程同步的的工具因此他具有一个很明显的特性当生产者线程试图向 BlockingQueue 放入元素时如果队列已满则线程被阻塞当消费者线程试图从中取出一个元素时如果队列为空则该线程会被阻塞正是因为它所具有这个特性所以在程序中多个线程交替向 BlockingQueue 中放入元素取出元素它可以很好的控制线程之间的通信。阻塞队列使用最经典的场景就是 socket 客户端数据的读取和解析读取数据的线程不断将数据放入队列然后解析线程不断从队列取数据解析。14、什么是 Callable 和 Future?15、什么是 FutureTask?使用 ExecutorService 启动任务。16、什么是并发容器的实现17、多线程同步和互斥有几种实现方法都是什么18、什么是竞争条件你怎样发现和解决竞争19、你将如何使用 thread dump你将如何分析 Thread dump20、为什么我们调用 start()方法时会执行 run()方法为什么我们不能直接调用 run()方法21、Java 中你怎样唤醒一个阻塞的线程22、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别23、什么是不可变对象它对写并发应用有什么帮助24、什么是多线程中的上下文切换25、Java 中用到的线程调度算法是什么26、什么是线程组为什么在 Java 中不推荐使用27、为什么使用 Executor 框架比使用应用创建和管理线程好28、java 中有几种方法可以实现一个线程29、如何停止一个正在运行的线程30、notify()和 notifyAll()有什么区别31、什么是 Daemon 线程它有什么意义32、java 如何实现多线程之间的通讯和协作Spring 面试题1、一般问题1.1、不同版本的 Spring Framework 有哪些主要功能1.2、什么是 Spring Framework1.3、列举 Spring Framework 的优点。由于 Spring Frameworks 的分层架构用户可以自由选择自己需要的组件。Spring Framework 支持 POJO(Plain Old Java Object) 编程从而具备持续集成和可测试性。由于依赖注入和控制反转JDBC 得以简化。它是开源免费的。1.4、Spring Framework 有哪些不同的功能1.5、Spring Framework 中有多少个模块它们分别是什么1.6、什么是 Spring 配置文件1.7、Spring 应用程序有哪些不同组件1.8、使用 Spring 有哪些方式JAVA 后端面试题整合2、依赖注入Ioc2.1、什么是 Spring IOC 容器Spring 框架的核心是 Spring 容器。容器创建对象将它们装配在一起配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化配置和组装的指令。该元数据可以通过 XMLJava 注解或 Java 代码提供。2.2、什么是依赖注入2.3、可以通过多少种方式完成依赖注入?2.4、区分构造函数注入和 setter 注入。2.5、spring 中有多少种 IOC 容器2.6、区分 BeanFactory 和 ApplicationContext。2.7、列举 IoC 的一些好处。2.8、Spring IoC 的实现机制。3、Beans3.1、什么是 spring bean3.2、spring 提供了哪些配置方式3.3、spring 支持集中 bean scope3.4、spring bean 容器的生命周期是什么样的3.5、什么是 spring 的内部 bean3.6、什么是 spring 装配3.7、自动装配有哪些方式3.8、自动装配有什么局限4、注解4.1、什么是基于注解的容器配置4.2、如何在 spring 中启动注解装配?4.3、Component, Controller, Repository, Service 有何区别4.4、Required 注解有什么用4.5、Autowired 注解有什么用4.6、Qualifier 注解有什么用4.7、RequestMapping 注解有什么用5、数据访问5.1、spring DAO 有什么用5.2、列举 Spring DAO 抛出的异常。5.3、spring JDBC API 中存在哪些类5.4、使用 Spring 访问 Hibernate 的方法有哪些5.5、列举 spring 支持的事务管理类型5.6、spring 支持哪些 ORM 框架6、AOP6.1、什么是 AOP6.2、什么是 Aspect6.3、什么是切点JoinPoint6.4、什么是通知Advice6.5、有哪些类型的通知Advice6.6、指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处。6.7、AOP 有哪些实现方式6.8、Spring AOP and AspectJ AOP 有什么区别6.9、如何理解 Spring 中的代理6.10、什么是编织Weaving7、MVC7.1、Spring MVC 框架有什么用7.2、描述一下 DispatcherServlet 的工作流程7.3、介绍一下 WebApplicationContext微服务 面试题1、您对微服务有何了解2、微服务架构有哪些优势3。微服务有哪些特点解耦 – 系统内的服务很大程度上是分离的。因此整个应用程序可以轻松构建更改和扩展 组件化 – 微服务被视为可以轻松更换和升级的独立组件 业务能力 – 微服务非常简单专注于单一功能 自治 – 开发人员和团队可以彼此独立工作从而提高速度 持续交付 – 通过软件创建测试和批准的系统自动化允许频繁发布软件 责任 – 微服务不关注应用程序作为项目。相反他们将应用程序视为他们负责的产品 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃。4、设计微服务的最佳实践是什么5、微服务架构如何运作6、微服务架构的优缺点是什么7、单片SOA 和微服务架构有什么区别8、在使用微服务架构时您面临哪些挑战9、SOA 和微服务架构之间的主要区别是什么10、微服务有什么特点11、什么是领域驱动设计12、为什么需要域驱动设计DDD13、什么是无所不在的语言14、什么是凝聚力15、什么是耦合16、什么是 REST / RESTful 以及它的用途是什么17、你对 Spring Boot 有什么了解18、什么是 Spring 引导的执行器19、什么是 Spring Cloud20、Spring Cloud 解决了哪些问题21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处22。你能否给出关于休息和微服务的要点23、什么是不同类型的微服务测试24、您对 Distributed Transaction 有何了解25、什么是 Idempotence 以及它在哪里使用26、什么是有界上下文27、什么是双因素身份验证28、双因素身份验证的凭据类型有哪些29、什么是客户证书30、PACT 在微服务架构中的用途是什么31、什么是 OAuth32、康威定律是什么33、合同测试你懂什么34、什么是端到端微服务测试端到端测试验证了工作流中的每个流程都正常运行。这可确保系统作为一个整体协同工作并满足所有要求。通俗地说你可以说端到端测试是一种测试在特定时期后测试所有东西。35、Container 在微服务中的用途是什么36、什么是微服务架构中的 DRY37、什么是消费者驱动的合同CDC38、WebRESTful API 在微服务中的作用是什么39、您对微服务架构中的语义监控有何了解40、我们如何进行跨功能测试41、我们如何在测试中消除非决定论42、Mock 或 Stub 有什么区别43、您对 Mike Cohn 的测试金字塔了解多少44、Docker 的目的是什么45、什么是金丝雀释放46、什么是持续集成CI47、什么是持续监测48、架构师在微服务架构中的角色是什么RabbitMQ 面试题1、什么是 rabbitmq2、为什么要使用 rabbitmq3、使用 rabbitmq 的场景4、如何确保消息正确地发送至 RabbitMQ 如何确保消息接收方消费了消息5.如何避免消息重复投递或重复消费6、消息基于什么传输由于 TCP 连接的创建和销毁开销较大且并发数受系统资源限制会造成性能瓶颈。RabbitMQ 使用信道的方式来传输数据。信道是建立在真实的 TCP 连接内的虚拟连接且每条 TCP 连接上的信道数量没有限制。7、消息如何分发8、消息怎么路由9、如何确保消息不丢失10、使用 RabbitMQ 有什么好处11、RabbitMQ 的集群12、mq 的缺点Spring 面试题1、一般问题1.1、不同版本的 Spring Framework 有哪些主要功能1.2、什么是 Spring Framework1.3、列举 Spring Framework 的优点。1.4、Spring Framework 有哪些不同的功能1.5、Spring Framework 中有多少个模块它们分别是什么1.6、什么是 Spring 配置文件1.7、Spring 应用程序有哪些不同组件1.8、使用 Spring 有哪些方式2、依赖注入Ioc2.1、什么是 Spring IOC 容器2.2、什么是依赖注入2.3、可以通过多少种方式完成依赖注入2.4、区分构造函数注入和 setter 注入。2.5、spring 中有多少种 IOC 容器2.6、区分 BeanFactory 和 ApplicationContext。2.7、列举 IoC 的一些好处。2.8、Spring IoC 的实现机制。3、Beans3.1、什么是 spring bean3.2、spring 提供了哪些配置方式3.3、spring 支持集中 bean scope3.4、spring bean 容器的生命周期是什么样的3.5、什么是 spring 的内部 bean3.6、什么是 spring 装配3.7、自动装配有哪些方式3.8、自动装配有什么局限4、注解4.1、什么是基于注解的容器配置4.2、如何在 spring 中启动注解装配4.3、Component, Controller, Repository, Service 有何区别4.4、Required 注解有什么用4.5、Autowired 注解有什么用4.6、Qualifier 注解有什么用4.7、RequestMapping 注解有什么用5、数据访问5.1、spring DAO 有什么用5.2、列举 Spring DAO 抛出的异常。5.3、spring JDBC API 中存在哪些类5.4、使用 Spring 访问 Hibernate 的方法有哪些5.5、列举 spring 支持的事务管理类型5.6、spring 支持哪些 ORM 框架6、AOP6.1、什么是 AOP6.2、什么是 Aspect6.3、什么是切点JoinPoint6.4、什么是通知Advice6.5、有哪些类型的通知Advice6.6、指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处。6.7、AOP 有哪些实现方式6.8、Spring AOP and AspectJ AOP 有什么区别结论最近针对互联网公司面试问到的知识点总结出了 Java 程序员面试涉及到的绝大部分面试题及答案分享给大家希望能帮助到你面试前的复习且找到一个好的工作也节省你在网上搜索资料的时间来学习。资料已整理成文档需要获取的小伙伴可以点击下方名片获取