08 2021 档案

面试十五、排序
摘要:1、冒泡 时间复杂度O(n^2) 算法步骤: 1)第一轮比较相邻两个元素将大的放在右侧,一轮结束后最大的值在最右侧 2)第二轮继续比较相邻两个元素将大的放在右侧,第二轮结束后次大的值在最有侧第二个 3)如此循环,直到没有数字需要比较 优化: 加一个标记flag,当某一轮无发生数据交换时即排序完成 1 阅读全文

posted @ 2021-08-31 15:40 Iversonstear 阅读(35) 评论(0) 推荐(0) 编辑

面试八、B树、B+树、二叉树、红黑树
摘要:1、二叉树:每个节点最多只有两个子树的树结构 2、B树和B+树 2.1、区别 1)B+树只有叶子节点会存储指针,B树所有节点都带 2)B+树叶子节点存储了所有数据,B树在内部节点出现的数据不会出现在叶子节点 3)B+树所有叶子节点都是通过指针连在一起,B树不是 2.2、B+树优点 1)内部节点不存储 阅读全文

posted @ 2021-08-31 00:03 Iversonstear 阅读(255) 评论(0) 推荐(0) 编辑

面试二十三、dubbo
摘要:1、dubbo是一款高性能、轻量级的开源RPC(remote producedure call protocol远程过程调用协议)框架 提供了服务自动注册、自动发现等高效服务治理方案,可以和spring无缝集成。 2、使用场景 1)可以像调用本地方法一样调用远程方法,没有任何API入侵 2)通过部署 阅读全文

posted @ 2021-08-30 21:06 Iversonstear 阅读(45) 评论(0) 推荐(0) 编辑

面试二十二、rocketMq
摘要:1、作用 1)解藕 2)有些任务没有实时性要求,当前因为请求量瞬间值高导致服务撑不住, 这时可以把任务放在mq里慢慢消费调。例如统计优惠券使用数量 2、rocketmq有哪些角色组成,作用是什么 1)nameserver:服务发现者,producer、borker、consumer都需定时向其上报自 阅读全文

posted @ 2021-08-30 15:02 Iversonstear 阅读(233) 评论(0) 推荐(0) 编辑

面试二十一、List
摘要:1、arrayList 数组、线程不安全、扩容大小为原1.5倍 查询快、增删慢 1 /** 2 * Increases the capacity to ensure that it can hold at least the 3 * number of elements specified by t 阅读全文

posted @ 2021-08-30 11:05 Iversonstear 阅读(37) 评论(0) 推荐(0) 编辑

面试二十、redis分布式锁
摘要:1、分布式锁 redission开源框架 2、加锁机制 当客户端加锁请求进来,redisson会根据hash算法选择一个节点(如果是集群的话)的主节点,也就是只选择集群里的一台机器。 随后向这台节点发送一段lua表达式(将一大堆复杂业务逻辑封装在lua表达式可以保证业务逻辑执行的原子性)。 加锁代码 阅读全文

posted @ 2021-08-28 22:26 Iversonstear 阅读(260) 评论(0) 推荐(0) 编辑

面试十九、redis之哨兵
摘要:1、哨兵核心功能就是主节点的自动故障转移 2、架构 哨兵节点:哨兵系统由一个或多个哨兵节点组成,是特殊的redis节点不存储数据 数据节点:读写数据使用,主节点和从节点都是数据节点 3、工作模式: 1)监控数据节点:检查主节点和从节点是否运行异常 2)自动故障转移:当哨兵1监测到主节点异常时会主观认 阅读全文

posted @ 2021-08-27 22:40 Iversonstear 阅读(122) 评论(0) 推荐(0) 编辑

面试十八、redis主从备份
摘要:1、概述:两台redisA、B、C,A设为主节点,B、C设置从节点。B和C会定时从A节点同步数据来达到数据一致。 2、好处: 1)可以容灾,当A节点宕机时,B节点即可设置为主节点提供服务。 2)数据热备份,是redis持久化的一种冗余方式 3)负载均衡,可以让A提供写服务,B、C提供读服务,做到读写 阅读全文

posted @ 2021-08-27 22:16 Iversonstear 阅读(65) 评论(0) 推荐(0) 编辑

面试十七、redis之持久化
摘要:1、redis是内存数据库,一旦进程推出数据就会丢失,为防止这种情况redis需要定时的将内存中的数据持久化到硬盘, 这样因为不知原因进程死掉重启后,redis可以从硬盘中重新加载数据实现数据恢复。 目前有两种方案:RDB(redis database)和AOF(append only file) 阅读全文

posted @ 2021-08-27 21:49 Iversonstear 阅读(80) 评论(0) 推荐(0) 编辑

面试十六、redis之五种数据类型和使用场景
摘要:1、字符串:最常见 2、列表(list):有序,一个list可以支持2^32-1个元素。list支持两端插入和弹出,可以获取指定位置的元素。使用场景:队列。 3、哈希(hash):键值对 4、集合(set):无序,不支持重复数据,不支持获取指定位置的元素。使用场景:需要排重 5、有序集合(sortS 阅读全文

posted @ 2021-08-27 17:45 Iversonstear 阅读(102) 评论(0) 推荐(0) 编辑

面试十四、策略模式和工厂模式、开闭原则
摘要:1、区别 工厂模式:解决资源的统一分发将对象的创建完全独立出来,让创建对象和使用方无关。实际使用场景:线程池工厂 策略模式:为了解决策略的切换和扩展,根据不同场景执行不同的策略。实际使用场景:订单计算邮费,按照计件、计重、计尺寸不同策略来算邮费 2、开闭原则 对扩展开放,堆修改关闭。当应用的需求改变 阅读全文

posted @ 2021-08-26 23:48 Iversonstear 阅读(171) 评论(0) 推荐(0) 编辑

面试十三、mysql
摘要:1、存储引擎 MyISAM:mysql5.1之前作为默认引擎 1)不支持事务,不支持外键 2)非聚集索引:数据文件和索引分开存放,索引存放的是数据文件的地址指针。 主键和辅助索引是独立的,两者没有本质区别,所以主键也是非必需的。 3)保存表的具体行树,所以select count(*)不带条件只需要 阅读全文

posted @ 2021-08-26 23:40 Iversonstear 阅读(46) 评论(0) 推荐(0) 编辑

面试十二、ThreadLocal使用
摘要:1、使用场景 1.1、静态变量如果要考虑线程安全的情况。用作保存每个线程自身的独享对象,以保证线程安全 如下代码:结果报异常了,因为sdf线程不安全,导致部分线程获取的时间不对 // 时间工具 public class DateUtil { private static final SimpleDa 阅读全文

posted @ 2021-08-26 23:34 Iversonstear 阅读(40) 评论(0) 推荐(0) 编辑

面试十一、spring的AOP和IOC,底层原理
摘要:参考链接:https://blog.csdn.net/liyifan687/article/details/90678729 1、AOP 1.1、面向切面编程,可分为静态代理和动态代理 1.2、3个实现 AspectJ:静态代理,我们在编写一段独立业务代码时可以使用aspectj将逻辑加入 业务方法 阅读全文

posted @ 2021-08-26 23:02 Iversonstear 阅读(2376) 评论(0) 推荐(0) 编辑

面试十、java内存模型
摘要:1、模型 堆、栈、方法区 程序计数器:pc寄存器,存放下一条要执行的指令的地址 虚拟机栈:每个线程拥有独立的栈,存放局部变量、对象引用、操作数栈、方法出口 堆:由所有线程共享,运行时申请内存在堆分配,存放对象、数组,jdk1.8后静态变量和常量池放入堆中 本地方法区:本地方法 方法区:jdk1.8前 阅读全文

posted @ 2021-08-26 21:05 Iversonstear 阅读(167) 评论(0) 推荐(0) 编辑

面试七、多线程之synchronized和死锁
摘要:1、synchronized锁升级 偏向锁:适用于基本没有锁竞争的场景。大多数情况下都是不存在竞争的,都是同一个线程多次获取锁。 流程: 偏向锁对象会记录线程id,当每次有线程获取锁时会比较线程id如果一致则获得锁, 如不一致则查看原线程是否存活,如没有存活了则新线程获取到偏向锁=并记录新线程id 阅读全文

posted @ 2021-08-26 16:41 Iversonstear 阅读(276) 评论(0) 推荐(0) 编辑

面试六、多线程之线程池
摘要:1、线程池 1.1、executor接口:只有一个execute()方法 1.2、ExecutorService接口:继承executor,增加了几个重要方法 1.2.1、shutdown():等待正在执行的线程执行完毕,拒绝接受新线程,关闭线程池 1.2.2、shutdownNow():立即关闭线 阅读全文

posted @ 2021-08-26 14:54 Iversonstear 阅读(84) 评论(0) 推荐(0) 编辑

面试五、多线程之悲观锁和乐观锁、可重入锁和非可重入锁
摘要:1、乐观锁和悲观锁区别 悲观锁:悲观认为数据会被别人修改,在操作时会将数据锁住直到操作完成释放锁,被锁期间其他线程无法操作该数据 乐观锁:乐观认为数据不会被别人修改,只在最终执行更新的时候判断下数据是否有被修改,如有则操作失败否则执行更新操作。如cas、版本号机制 2、乐观锁本身是不会加锁的,只在更 阅读全文

posted @ 2021-08-26 00:28 Iversonstear 阅读(127) 评论(0) 推荐(0) 编辑

面试四、多线程之AQS、ReentrantLock
摘要:1、AQS:AbstractQueuedSynchronizer,抽象队列同步器。是java自带除synchronized关键字外的锁机制 2、是用来构建锁及其他同步器的重要框架,通过内置的CLH队列来完成资源获取线程的排队工作,将每条要去获取资源的线程分装成Node节点来实现锁的分配,有一个int 阅读全文

posted @ 2021-08-26 00:09 Iversonstear 阅读(159) 评论(0) 推荐(0) 编辑

面试三、多线程之cas/automic
摘要:1、CAS 1.1、以compareAndSwapInt为例: compareAndSwapInt(ojb, offset, expect, update),表示在obj对象offset位置的值是否等于expect,如等于则更新为update。 1.2、存在问题 1.2.1、ABA: 第一步、线程1 阅读全文

posted @ 2021-08-25 21:12 Iversonstear 阅读(438) 评论(0) 推荐(0) 编辑

面试二、jdk1.8之concurrentHashMap
摘要:1、线程安全,使用场景:Session就是用concurrentHashMap实现的 2、数据结构 jdk1.7版本,底层是segment数组,segment底层是table数组+链表,segment继承了ReentrantLock实现线程安全。可以理解为将一个大的table分成多个小的table来 阅读全文

posted @ 2021-08-25 18:31 Iversonstear 阅读(75) 评论(0) 推荐(0) 编辑

面试一、jdk1.8之hashMap
摘要:1、hashmap 1.1、线程不安全 1.2、数据结构 jdk1.7版本为Table数组+ Entry链表、jdk1.8版本为Table数组+ Node链表/红黑树 key值hash细节: 先取key的hashcode,然后将高位16位和自身异或 为什么是16位:因为key到hashcode值in 阅读全文

posted @ 2021-08-24 21:15 Iversonstear 阅读(59) 评论(0) 推荐(0) 编辑

mybaits-plus 一些写法
摘要:1、不管condition是否满足,后面跟着的入参如果是表达式的都会去执行,所以要进行判空处理npe 1 lambdaQuery().setEntity(ObjectUtils.copy(param, EvaluationDO.class)) 2 .ge(Objects.nonNull(param. 阅读全文

posted @ 2021-08-02 11:42 Iversonstear 阅读(227) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示