分类: 开发

478 篇文章

015、MQ 有什么作用?你都用过哪些 MQ 中间件?
MQ 有什么作用?你都用过哪些 MQ 中间件? 在第10篇中讲过“手写消息队列”,当时粗略的讲了 Java API 中使用 Queue 实现自定义消息队列,以及使用 Delayed 实现延迟队列的示例;同时还讲了 RabbitMQ 中的一些基础概念。本课时我们将会更加深入的讲解 MQ(Message Queue,消息队列)中间件,以及这些热门中间件的具体使用。 我们本课时的面试题是,MQ 常见的使…
014、SpringBoot 有哪些优点?它和 Spring 有什么区别?
SpringBoot 有哪些优点?它和 Spring 有什么区别? Spring 和 Spring Boot 的区别很多新手容易搞混,从这道简单的面试题也可以很轻易试探出你的 Java 基础功底,如果连这个问题都答不上来的话,通常就没有什么下文了,因为这已经是用人单位对面试者的最低要求了,所以本课时我们就来看一下二者的区别,以及 Spring Boot 的特性。 我们本课时的面试题是,Spring…
013、MyBatis 使用了哪些设计模式?在源码中是如何体现的?
MyBatis 使用了哪些设计模式?在源码中是如何体现的? MyBatis 的前身是 IBatis,IBatis 是由 Internet 和 Abatis 组合而成,其目的是想当做互联网的篱笆墙,围绕着数据库提供持久化服务的一个框架,2010 年正式改名为 MyBatis。它是一款优秀的持久层框架,支持自定义 SQL、存储过程及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数…
012、底层源码分析 Spring 的核心功能和执行流程(下)
底层源码分析 Spring 的核心功能和执行流程(下) 上一课时我们讲了 Bean 相关的内容,它其实也是属于 IOC 的具体实现之一,本课时我们就来讲讲 Spring 中其他几个高频的面试点,希望能起到抛砖引玉的作用,能为你理解 Spring 打开一扇门。因为 Spring 涉及的内容和知识点太多了,用它来写一本书也绰绰有余,因此这里我们只讲核心的内容,希望下来你能查漏补缺,完善自己的 Spri…
011、底层源码分析 Spring 的核心功能和执行流程(上)
底层源码分析 Spring 的核心功能和执行流程(上) Spring Framework 已是公认的 Java 标配开发框架了,甚至还有人说 Java 编程就是面向 Spring 编程的,可见 Spring 在整个 Java 体系中的重要位置。 Spring 中包含了众多的功能和相关模块,比如 spring-core、spring-beans、spring-aop、spring-context、s…
010、如何手写一个消息队列和延迟消息队列?
如何手写一个消息队列和延迟消息队列? 第一次听到“消息队列”这个词时,不知你是不是和我反应一样,感觉很高阶很厉害的样子,其实当我们了解了消息队列之后,发现它与普通的技术类似,当我们熟悉之后,也能很快地上手并使用。 我们本课时的面试题是,消息队列的使用场景有哪些?如何手动实现一个消息队列和延迟消息队列? 典型回答 消息队列的使用场景有很多,最常见的使用场景有以下几个。 1.商品秒杀 比如,我们在做秒…
009、java面试题_如何实现本地缓存和分布式缓存?
java面试题_如何实现本地缓存和分布式缓存? 如何实现本地缓存和分布式缓存? 缓存(Cache) 是指将程序或系统中常用的数据对象存储在像内存这样特定的介质中,以避免在每次程序调用时,重新创建或组织数据所带来的性能损耗,从而提高了系统的整体运行速度。 以目前的系统架构来说,用户的请求一般会先经过缓存系统,如果缓存中没有相关的数据,就会在其他系统中查询到相应的数据并保存在缓存中,最后返回给调用方。…
008、动态代理是如何实现的?JDK Proxy 和 CGLib 有什么区别?
动态代理是如何实现的?JDK Proxy 和 CGLib 有什么区别? 90% 的程序员直接或者间接的使用过动态代理,无论是日志框架或 Spring 框架,它们都包含了动态代理的实现代码。动态代理是程序在运行期间动态构建代理对象和动态调用代理方法的一种机制。 我们本课时的面试题是,如何实现动态代理?JDK Proxy 和 CGLib 有什么区别? 典型回答 动态代理的常用实现方式是反射。反射机制是…
007、深克隆和浅克隆有什么区别?它的实现方式有哪些?
深克隆和浅克隆有什么区别?它的实现方式有哪些? 使用克隆可以为我们快速地构建出一个已有对象的副本,它属于 Java 基础的一部分,也是面试中常被问到的知识点之一。 我们本课时的面试题是,什么是浅克隆和深克隆?如何实现克隆? 典型回答 浅克隆(Shadow Clone)是把原型对象中成员变量为值类型的属性都复制给克隆对象,把原型对象中成员变量为引用类型的引用地址也复制给克隆对象,也就是原型对象中如果…
006、java面试题_谈谈你对锁的理解?如何手动模拟一个死锁?
java面试题_谈谈你对锁的理解?如何手动模拟一个死锁? 谈谈你对锁的理解?如何手动模拟一个死锁? 在并发编程中有两个重要的概念:线程和锁,多线程是一把双刃剑,它在提高程序性能的同时,也带来了编码的复杂性,对开发者的要求也提高了一个档次。而锁的出现就是为了保障多线程在同时操作一组资源时的数据一致性,当我们给资源加上锁之后,只有拥有此锁的线程才能操作此资源,而其他线程只能排队等待使用此锁。当然,在所…