![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 78
A 北枝
双非二本25届,认真学习java中
展开
-
Java 并发编程(三)
BlockingQueue 接口是 Queue 的子接口,它的主要用途并不是作为容器,而是 作为线程同步的的工具,因此他具有一个很明显的特性,当生产者线程试图向 BlockingQueue 放入元素时,如果队列已满,则线程被阻塞,当消费者线程试图从中取出一个元素时,如果队列为空,则该线程会被阻塞,正是因为它所具有这个特性,所以在程序中多个线程交替向 BlockingQueue 中放入元素,取出元素,它可以很好的控制线程之间的通信。线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。原创 2024-08-07 15:56:39 · 1005 阅读 · 0 评论 -
Java 并发编程(一)
其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由 JVM 从等待队列中选择一个另一个线程进入,这只是一种逻辑上的理解。true 则把该线程设置为守护线程,反之则为用户线程。ThreadGroup 类,可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式。采用时间片轮转的方式。原创 2024-08-06 10:13:38 · 665 阅读 · 0 评论 -
kafka 面试题
消息系统都致力于让 consumer 以 最大的速率最快速的消费消息,但不幸的是,push 模式下,当 broker 推送的速率远大于 consumer 消费的速率时,consumer 恐怕就要崩溃了。比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似订单 id 之类的东西,然后你这里消费到了之后,先根据这个 id 去比如 Redis 里查一下,之前消费过吗?如果消费过了,那你就别处理了,保 证别重复处理相同的消息即可。原创 2024-08-06 08:49:12 · 786 阅读 · 0 评论 -
RabbitMQ 面试题
所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对 它带来的坏处做各种额外的技术方案和架构来规避掉,最好之后,你会发现,妈 呀,系统复杂度提升了一个数量级,也许是复杂了 10 倍。你创建的 queue,无论元数据还是 queue 里的消息都会存在于多个实例上,然后每次你写消息到 queue 的时候,都会自动把消息到多个实例的 queue 里进行消息同步。如果消费者接收到消息却没有确认消息,连接也未断开,则 RabbitMQ 认为该消费者繁忙,将不会给该消费者分发更多的消息。原创 2024-08-05 20:50:33 · 499 阅读 · 0 评论 -
Spring Cloud 面试题
因此,在上面的示例中, 如果我们刷新 Employee Producer1,则会自动刷新所有其他必需的模块。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会。Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。4、负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。通常对于使用微服务架构开发的系统,涉及到许多微服务。原创 2024-08-05 08:51:30 · 351 阅读 · 0 评论 -
Spring Boot 面试题
这是开发人员最需要的功能。因 此,Spring Boot 可以帮助我们以最少的工作量,更加健壮地使用现有的 Spring功能。默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。只需访问 https://spring.io/projects 页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。原创 2024-08-04 18:02:22 · 741 阅读 · 0 评论 -
Linux 面试题 下
du 显示目录或文件的大小df 显示每个所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的, 通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。原创 2024-08-03 08:56:50 · 502 阅读 · 0 评论 -
Linux 面试题 上
绝对路径: 如/etc/init.d当前目录和上层目录: ./ …/主目录: ~/切换目录: cd查看当前进程: ps执行退出: exit查看当前路径: pwd清屏: clear退出当前命令: ctrl+c 彻底退出执行睡眠 : ctrl+z 挂起当前进程 fg 恢复后台查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名查看指定帮助: 如 man adduser 这个很全 而且有例子;adduser --help 这个告诉你一些常用参数;原创 2024-08-02 08:50:35 · 278 阅读 · 0 评论 -
Spring 注解,Spring 数据访问
这个注解表明 bean 的属性必须在配置的时候设置,通过一个 bean 定义的显式的属性值或通过自动装配,若@Required 注解的 bean 属性未被设置,容器将抛出BeanInitializationException。编码时也不用担心会捕获每种技术特有的异常。基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring配置而非通过 XML 文件。开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用 xml 表述 bean 的装配关系。原创 2024-07-31 08:55:47 · 383 阅读 · 0 评论 -
Spring Beans 面试题
当一个 bean 仅被用作另一个 bean 的属性时,它能被声明为一个内部 bean,为了定义 inner bean,在 Spring 的 基于 XML 的 配置元数据中,可以在 或 元 素内使用 元素,内部 bean 通常是匿名的,它们的 Scope 一般是 prototype。**byType::**通过参数类型自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byType,之后容器试图匹配、装配和该 bean 的属性具有相同类型的 bean。原创 2024-07-30 11:08:53 · 422 阅读 · 0 评论 -
Spring 面试题(七)
通过使用 JDBC 抽象和 DAO 模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。第 396 页 共 485 页。这是基本的 Spring 模块,提供 spring 框架的基础功能,BeanFactory 是 任何以 spring 为基础的应用的核心。**异常处理:**Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO 抛出的)转化为一致的 unchecked 异常。原创 2024-07-29 10:45:39 · 414 阅读 · 0 评论 -
Spring 面试题(六)
中的配置对请求的 URL 进行解 析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回。6、根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver)返回给 DispatcherServlet。原创 2024-07-29 08:55:45 · 472 阅读 · 0 评论 -
Spring 面试题(五)
它与OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与OOP 不同的抽象软件结构的视角. 在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是。程序运行中的一些时间点, 例如一个方法的执行, 或者是一个异常的处理.在 Spring AOP 中, join point 总是方法的执行点。- 这些类型的 Advice 在连接点方法之后执行,无论方法退出是正常还是异常返回,并使用 @After 注解标记进行配置。原创 2024-07-27 14:27:24 · 318 阅读 · 0 评论 -
Day12 Spring 面试题(四)
此注解仅指示必须在配置时使用bean 定义中的显式属性值或使用自动装配填充受影响的 bean 属性。:这个注解是具有类似用途和功能的 @Component 注解的特化。此注解用于在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean。不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上 使用注解将配置移动到组件类本身。@RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的 控制器中的特定类/方法。原创 2024-07-27 09:00:36 · 397 阅读 · 0 评论 -
Day11 Spring 面试题(三)
Spring容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定在一起,同时装配 bean。为了定义 bean,Spring 的基于 XML 的配置元数据在 或 中提供了 元素的使用。- 每一次 HTTP 请求都会产生一个新的 bean,同时该 bean 仅在当前 HTTP session 内有效。如果属性的类型与 XML 文件中的一个 bean 名称匹配,则匹配并装配属性。只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean。原创 2024-07-26 13:56:14 · 309 阅读 · 0 评论 -
Day10 Spring 面试题(二)依赖注入(Ioc)
容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的 组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码 中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例或 JNDI 查找机制。Spring 中的 IoC 的实现原理就是工厂模式加反射机制。它将最小化应用程序中的代码量。原创 2024-07-25 10:15:53 · 443 阅读 · 0 评论 -
Day09 Spring 面试题(一)
Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、 EJB 等,所以又称为框架的框架。原创 2024-07-24 10:27:17 · 293 阅读 · 0 评论 -
Day08MySQL 面试题 (五)
答:存储过程是一个预编译的 SQL 语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。可以对视图进行增,改, 查,操作,视图通常是有一个或者多个表的行或列的子集。1、Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后。3、参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。原创 2024-07-23 13:52:21 · 484 阅读 · 0 评论 -
Day07 MySQL 面试题(四)
Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒,占用 8 个字节得存储空间,datatime 类型与时区无关Timestamp:以时间戳格式存储,占用 4 个字节,范围小 1970-1-1 到 2038-1-19,显示依赖于所指定得时区,默认在第一个列行的数据修改时可以自动得修改timestamp 列得值。左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL 来填充。原创 2024-07-22 15:26:35 · 284 阅读 · 0 评论 -
Day07 MySQL 面试题 (三)
事务就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。原创 2024-07-22 08:51:46 · 395 阅读 · 0 评论 -
Day06 MySQL 面试题 (二)
在缺省模式下,MySQL 是 autocommit 模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,MySQL 是不支持事务的。在 SELECT 语句的列比较中使用=,,,,,AND,OR 或 LIKE 运算符。5、MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() – 从日期值中提取给定数据。7、DATEDIFF(A,B) – 确定两个日期之间的差异,通常用于计算年龄。NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。原创 2024-07-20 11:41:34 · 453 阅读 · 0 评论 -
Day06 MySQL 面试题(一)
一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制;主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;2、CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。锁定粒度大,发生锁冲突的概率最高,并发度最低。原创 2024-07-20 08:57:35 · 373 阅读 · 0 评论 -
Day05 Redis 面试题 终
如果你想返回用户及用户的分数, 你需要这样执行: ZRANGE user_scores 0 10 WITHSCORES Agora Games 就 是一个很好的例子,用 Ruby 实现的,它的排行榜就是使用 Redis 来存储数据的, 你可以在这里看到。这个时候可以使用 scan 指令,scan 指令可以无阻塞的提取出指定模式的 key 列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间会比直接用 keys 指令长。这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释放了。原创 2024-07-19 11:14:29 · 690 阅读 · 0 评论 -
Day05 Redis 面试题 下
答:尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的 web 系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的 key,而是应该把这个用户的所有信息存储到一张散列表里面.答:如果你使用的是 32 位的 Redis 实例,可以好好利用 Hash,list,sorted set,set 等集合类型数据,因为通常情况下很多小的 Key-Value 可以用更紧凑的方式存放 到一起。原创 2024-07-19 08:43:57 · 644 阅读 · 1 评论 -
Day04 Redis 面试题 中
答:Jedis 是 Redis 的 Java 实现的客户端,其 API 提供了比较全面的 Redis 命令 的支持;答:尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。注意这里的 6 种机制,volatile 和 allkeys 规定了是对已设置过期时间的数据集淘汰数据还是从全部数据集淘汰数据,后面的 lru、ttl 以及 random 是三种不同的淘汰策略,再加上一种 no-enviction 永不回收的策略。原创 2024-07-18 10:54:41 · 398 阅读 · 0 评论 -
Day04 Redis 面试题 上
同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。1、RDBRedis DataBase)持久化方式: 是指用数据集快照的方式半持久化模式)记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化 结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。1、Master 最好不要写内存快照,如果 Master 写内存快照,save 命令调度 rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务。原创 2024-07-18 08:52:09 · 443 阅读 · 0 评论 -
Day03 Dubbo 面试题 中
2、DubboMonitor 将数据进行聚合后(默认聚合 1min 中的统计数据)暂存到ConcurrentMap statisticsMap,然后使用一个含有 3 个线程(线程名字:DubboMonitorSendTimer)的线程池每隔 1min 钟,调用 SimpleMonitorService 遍历发送 statisticsMap 中的统计数据,每发送完毕一个,就重置当前的 Statistics 的 AtomicReference。原创 2024-07-17 13:55:07 · 586 阅读 · 0 评论 -
Day03 ZooKeeper 面试题 下
并携带工 作的进度数据,这样汇总的进程可以监控目录子节点的变化获得工作进度的实时 的全局情况。命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路径,即是唯一的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。原创 2024-07-17 08:52:38 · 701 阅读 · 0 评论 -
Day02 ZooKeeper 面试题 中
当新的 Leader 服务器发现某个 Learner 服务器包含了一条自己没有的事务记录,那么就需要让该 Learner 服务器进行事务回滚–回滚到 Leader 服务器上存在的,同时也是最接近于 peerLastZxid 的 ZXID。如果一个客户端设置了 Chroot,那么该客户端对服务器的任何操作,都将会被限制在其自己的命名空间下。在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader 选举。原创 2024-07-16 17:13:34 · 281 阅读 · 0 评论 -
Day02 ZooKeeper 面试题 上
当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导 致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步,当集群中超过半数机器与该 Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader 服务器开始 接收客户端的事务请求生成事物提案来进行事务请求处理。通常这是完全 透明的。原创 2024-07-16 09:51:04 · 474 阅读 · 0 评论 -
Day02 MyBatis 面试题 下
它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用 a.getB().getName(),拦截器 invoke()方法发现 a.getB()是null 值,那么就会单独发送事先保存好的查询关联 B 对象的 sql,把 B 查询上来,然后调用 a.setB(b),于是 a 的对象 b 属性就有值了,接着完成 a.getB().getName()方法的调用。当然了,不光是 Mybatis,几乎所有的包括 Hibernate,支持延迟加载的原理都是一样的。原创 2024-07-16 08:52:42 · 574 阅读 · 0 评论 -
Day01 MyBatis 面试题 中
有了列名与属性名的映射关系后,Mybatis 通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。17、Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复;使用的,如果没有 namespace,就剩下 id,那么,id 重复会导致数据互相覆盖。//映射文件的命名空间.SQL 片段的 ID,就可以调用对应的映射文件中的。原创 2024-07-15 17:13:37 · 652 阅读 · 0 评论 -
Day01 MyBatis 面试题 上
Mapper 接口的工作原理是 JDK 动态代理,Mybatis 运行时会使用 JDK动态代理为 Mapper 接口生成代理对象 proxy,代理对象会拦截接口方法,转而执行 MapperStatement 所代表的 sql,然后将 sql 执行结果返回。分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写 sql,根据 dialect 方言,添加对应的物 理分页语句和物理分页参数。接口方法内的参数,就是传递给 sql 的参数。原创 2024-07-15 16:34:11 · 894 阅读 · 0 评论