面试
文章平均质量分 72
面试内容
浅羽技术
才疏学浅,习习而为,编程羽录,与你同行。
展开
-
【国庆活动】掌握这些 Java 常用设计模式,金九银十秋招offer机会都在你手里
因此当你使用抽象类来表示行为时,你的类就不能同时是 Runnable 和 Clonable(注:这里的意思是指如果把 Runnable 等实现为抽象类的情况),如果你看到一个类的不同实现有着不同的方式来做同一件事,那么就应该用重写(overriding),而重载(overloading)是用不同的输入做同一件事。尽管你不能想到具体的设计,但如果你可以指出非功能性需求,提出一些问题,想到关于边界条件,这些都会是很好的。因为在 Java 中你不能继承两个类,但当你使接口时,你的类就可以同时拥有多个不同的行为。原创 2022-10-03 00:27:04 · 216 阅读 · 2 评论 -
「笔耕不辍」常见远程调用协议
序列化:Hessian 二进制序列化适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较。Hessian 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用。RMI 协议采用 JDK 标准的 java.rmi.*实现,采用阻塞式短连接和 JDK 标准序列。协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信。适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传。化方式,Java 标准的远程调用协议。原创 2022-09-19 00:17:57 · 558 阅读 · 24 评论 -
「创作之秋」关于线程池,你需要了解这些
2、 在线程池中,同一个线程可以从阻塞队列中不断获取新任务来执行,其核心原理在于线程池对Thread 进行了封装,并不是每次执行任务都会调用 Thread.start() 来创建新线程,而是让每个线程去执行一个“循环任务”,在这个“循环任务”中不停检查是否有任务需要被执行,如果有则直接执行,也就是调用任务中的 run 方法,将 run 方法当成一个普通的方法执行,通过这种方式只使用固定的线程就将所有任务的 run 方法串联起来。任务来了,直接有线程可用可执行,而不是先创建线程,再执行。1、 降低资源消耗;原创 2022-09-18 00:19:39 · 286 阅读 · 10 评论 -
【学习笔记】线程的生命周期和状态
运行的线程执行wait方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。join()执行后线程进入阻塞状态,例如在线程B中调用线程A的join(),那线程B会进入到阻塞队列,直到线程A结束或中断线程。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。原创 2022-09-17 02:32:30 · 360 阅读 · 4 评论 -
【学习笔记】事务传播行为与隔离级别介绍
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)容器不为这个方法开启事务不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务必须在一个已有的事务中执行,否则抛出异常必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.事物超时设置:@Transactional(timeout=30) //默认是30秒。原创 2022-09-16 00:44:40 · 172 阅读 · 4 评论 -
「笔耕不辍」悲观锁和乐观锁的区别以及实现方式
乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次取出来的版本标识进行比对,如果数据库表当前版本号与第一次取出来的版本标识值相等,则予以更新,否则认为是过期数据。相对于悲观锁,在对数据库进行处理的时候,乐观锁并不会使用数据库提供的锁机制。原创 2022-09-07 09:42:05 · 156 阅读 · 8 评论 -
猿创征文|关于多线程的理解
如果队列是空的,消费者会一直等待,当生产者添加元素时候,消费者是如何知道当前队列有元素的呢?如果让你来设计阻塞队列你会如何设计,让生产者和消费者能够高效率的进行通讯呢?让我们先来看看JDK是如何实现的。使用通知模式实现。所谓通知模式,就是当生产者往满的队列里添加元素时会阻塞住生产者,当消费者消费了一个队列中的元素后,会通知生产者当前队列可用。通过查看JDK源码发现ArrayBlockingQueue使用了Condition来实现。...原创 2022-08-31 01:06:35 · 191 阅读 · 10 评论 -
猿创征文|常用消息中间件对比
erlang语言开发、性能好、高并发,支持多种语言,社区、文档方面有优势,erlang语言不利于java程序员二次开发,依赖开源社区的维护和升级,需要学习AMQP协议、学习成本相对较高以上吞吐量单机都在万级。java实现,方便二次开发、设计参考了kafka,高可用、高可靠,社区活跃度一般、支持语言较少,吞吐量单机十万。下,之前有没消费过,没有消费过就处理,并且写入这个 id 到 redis,如果消费过了,则不处理。1、增加了系统的复杂度,幂等、重复消费、消息丢失等问题的带入。1、解耦,降低系统之间的依赖。.原创 2022-08-30 02:52:17 · 151 阅读 · 2 评论 -
猿创征文|分布式事务常见解决方案
TCC模型对业务的侵入性较强,改造的难度较大,每个操作都需要有 try 、 confirm 、 cancel 三个接。分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中。3、本地消息表:基于本地数据库+mq,维护本地状态(进行中),通过mq调用服务,完成后响应一条消。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有。引入了超时机制解决参与者阻塞的问题,超时后本地提交,2pc只有协调者有超时机制。...原创 2022-08-29 11:20:49 · 459 阅读 · 5 评论 -
猿创征文|浅谈ES-关于ES你了解多少?
索引: 从ID到内容。倒排索引: 从内容到ID。好处: 比较适合做关键字检索。可以控制数据的总量。提高查询效率。搜索引擎为什么比MySQL查询快?lucence文章 -》 term ->排序 term dictionary -> term index -》 Posting List -> [文章ID ,[在文章中出现的偏移量],权重 ]TFIDF。...原创 2022-08-28 01:49:04 · 265 阅读 · 4 评论 -
猿创征文|Java中的权限认证如何理解
认证: 就是对系统访问者的身份进行确认。用户名密码登录、 二维码登录、手机短信登录、指纹、刷脸。。。授权:就是对系统访问者的行为进行控制。授权通常是在认证之后,对系统内的用户隐私数据进行保护。后台接口访问权限、前台控件的访问权限。RBAC模型: 主体 -》 角色 -》 资源 -》访问系统的行为。认证和授权也是对一个权限认证框架进行扩展的两个主要的方面。CSRF: Cross Site Requst Forgery 跨站请求伪造。...原创 2022-08-27 01:49:17 · 709 阅读 · 0 评论 -
猿创征文|Java中常见IO的原理及适用场景
正如前面所说,Socket通信是一个全双工的方式,如果有多个线程同时进行远程方法调用,这时建立在client server之间的socket连接上会有很多双方发送的消息传递,前后顺序也可能是乱七八糟的,server处理完结果后,将结果消息发送给client,client收到很多消息,怎么知道哪个消息结果是原先哪个线程调用的?当请求来的话,开启的线程把请求和请求数据传送给后端资源池或者队列里面就返回,并且在全局的地方保持住这个现场(哪个连接的哪个请求等),这样前面的线程还是可以去接受其他的请求,...原创 2022-08-26 15:39:34 · 346 阅读 · 0 评论 -
常见网络协议考察知识点
我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。它可通过网络在TXP链接上传送邮件,或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件,这样,邮件传输就独立于传输子系统,可在TCP/IP环境或X.25协议环境中传输邮件。即文件传输协议,它是网际提供的用于访问远程机器的协议,它使用户可以在本地机与远程机之间进行有关文件的操作。原创 2022-08-25 16:06:17 · 247 阅读 · 0 评论 -
面试中集合常问知识点总结
面试中集合常问知识点总结。原创 2022-08-22 01:18:45 · 203 阅读 · 10 评论 -
面试中常用消息中间件对比
erlang语言开发、性能好、高并发,支持多种语言,社区、文档方面有优势,erlang语言不利于java程序员二次开发,依赖开源社区的维护和升级,需要学习AMQP协议、学习成本相对较高以上吞吐量单机都在万级。高性能,高可用,生产环境有大规模使用场景,单机容量有限(超过64个分区响应明显变长)、社区更新慢,吞吐量单机百万。java实现,方便二次开发、设计参考了kafka,高可用、高可靠,社区活跃度一般、支持语言较少,吞吐量单机十万。1、增加了系统的复杂度,幂等、重复消费、消息丢失等问题的带入。原创 2022-08-22 01:10:49 · 531 阅读 · 0 评论 -
Java并发面试常见考点
Java并发面试常见考点原创 2022-08-16 12:26:12 · 257 阅读 · 26 评论 -
MySQL常见面试题
这些问题都是MySQL进行事务并发控制时经常遇到的问题。脏读: 在事务进行过程中,读到了其他事务未提交的数据。不可重复读: 在一个事务过程中,多次查询的结果不一致。幻读: 在一个事务过程中,用同样的操作查询数据,得到的记录数不相同。处理的方式有很多种:加锁、事务隔离、MVCC加锁:1、脏读:在修改时加排他锁,直到事务提交才释放。读取时加共享锁,读完释放锁。2、不可重复读: 读数据时加共享锁,写数据时加排他锁。3、幻读: 加范围锁。从锁的粒度来区分。...原创 2022-08-15 17:37:46 · 187 阅读 · 10 评论 -
后端面试必备知识点
今天为大家介绍的是关于一些面试常问的知识点。原创 2022-08-15 17:30:53 · 635 阅读 · 5 评论 -
面试时需要注意的事项
在做自我介绍时,全部事实不一定都说尽,但说出来的一定是事实,一定不要说谎,不要把自己吹嘘得天花乱坠,无所不能。说得太完美了,面试官也不会相信,轻则会认为你自我认知能力不够,重则会认为你职业操守有问题。坦然面对我们过往工作经历中的一些曲折,也是一种职业品质和潇洒。面试时不要介绍个人爱好,除非面试官主动问。有被面试者虽然工作多年了,往往在做自我介绍时,仍兴致盎然地介绍个人爱好,如:登山、打球、听音乐等等,不仅白白浪费时间,还让面试官感觉你成熟度不够。注意,个人爱好不等于个人特长。......原创 2022-08-14 02:11:17 · 294 阅读 · 0 评论 -
MyBatis核心知识点介绍
MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。接口映射就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。虽然Mybatis解析Xml映射文件是按照顺序解析的,但是,被引用的B标签依然可以定义在任何地方,Mybatis都可以正确识别。...原创 2022-08-11 02:10:22 · 352 阅读 · 8 评论 -
【Java面试题总结】乐观锁与悲观锁
乐观锁与悲观锁转载 2022-05-13 00:24:50 · 529 阅读 · 0 评论 -
Spring加载Bean有哪些方式?
Spring加载Bean有哪些方式原创 2022-05-05 11:19:05 · 418 阅读 · 0 评论 -
Java面试题总结(二)——五一专属|向所有热爱分享的“技术劳动者”致敬
近期面试知识点总结原创 2022-05-03 19:20:45 · 1323 阅读 · 2 评论 -
Java面试题总结(一)
Java面试题总结(一)原创 2022-05-03 12:29:57 · 722 阅读 · 0 评论 -
【硬核】23种设计模式娓娓道来,助你优雅的编写出漂亮代码!
大家好,我是小羽。我们平时使用的每一个技术栈的原理或者源码都或多或少与设计模式的理念有关联,也可以这么说,只有更好的掌握了设计模式,我们的代码编写才能更规范、简洁,效率更高。其次,设计模式...原创 2021-04-02 12:53:58 · 502 阅读 · 0 评论 -
讲真,这份新年豪礼【面试锦囊】真舍不得给你们
大家好,我是小羽马上就是新年啦,最近有很多粉丝跟我交流关于面试方面的经验以及分享,也有部分是在准备明年的金三银四的春招。小羽也一直没出关于面试方面的文章,这篇就结合自己之前的面试经历以及...原创 2020-12-31 08:37:52 · 1182 阅读 · 22 评论