
面试
文章平均质量分 73
迎风追日
9 年软件开发经验,其中 3 年的项目开发负责人经验,擅长 java web 平台的开发,多年云计算、大数据领域面向教育、公安类 SaaS 应用开发背景;具有较强的业务分析能力,能够快速理解和分析复杂的业务逻辑;有较强的沟通协作能力,有异地开发经历;有较强的学习能力,且愿意尝试新技术。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis必知必会
渐进式rehash执行时,除了根据键值对的操作来进行数据迁移,Redis本身还会有一个定时任务在执行rehash,如果没有键值对操作时,这个定时任务会周期性地(例如每100ms一次)搬移一些数据到新的哈希表中,这样可以缩短整个rehash的过程。两方面原因:1、内存利用率,数组和压缩列表都是非常紧凑的数据结构,它比链表占用的内存要更少。Redis是内存数据库,大量数据存到内存中,此时需要做尽可能的优化,提高内存的利用率。原创 2025-03-01 20:18:14 · 1002 阅读 · 0 评论 -
java面试题串讲
java面试题串讲。原创 2025-01-11 14:06:43 · 105 阅读 · 0 评论 -
面试实战题-Redis
volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。● 主从复制,Master宕机后不影响Slave的读,但该集群不再提供对Redis的写入功能 ● 哨兵,哨兵模式是建立在主从模式的基础上,当Master节点宕机之后,哨兵会从Slave节点中选择一个节点作为Master,并修改它们的配置文件,使其他的Slave指向新的Master.但哨兵无法对Slave进行自动故障转移 ● 集群,所有的节点都是主从模式,其中Slave不提供服务,只提供备用。原创 2024-08-12 11:49:25 · 479 阅读 · 0 评论 -
面试实战题-JVM调优
某个特定的类加载器接收到类加载的请求时,会将加载任务委托给自己的父类,直到最高级父类引导类加载器(bootstrap class loader),如果父类能够加载就加载,不能加载则返回到子类进行加载。如果都不能加载则报错。CMS收集器是一款追求停顿时间的老年代收集器,它在垃圾收集时使得用户线程和GC线程并行执行,因此在垃圾收集过程中用户也不会感受到明显的卡顿。当要进行垃圾收集时,首先估计每个Region中的垃圾数量,每次都从垃圾回收价值最大的Region开始回收,因此可以获得最大的回收效率。原创 2024-08-12 11:59:56 · 540 阅读 · 0 评论 -
面试实战题-消息中间件
为当客户端发送一条消息的时候,Kafka 并不会立即发送出去,而是要等一会儿攒一批再发送 Kafka 的消费者读取消息是可以重演的(replayable)。更加通用的方法是,给你的数据增加一个版本号属性,每次更数据前,比较当前数据的版本号是否和消息中的版本号一致,如果不一致就拒绝更新数据,更新数据的同时 将版本号+1,一样可以实现幂等更新 2、保证每条消息都有唯一编号且保证消息处理成功与去重表的日志同时出现。如果你的分区数是N,那么最好线程数也保持为N,这样通常能够达到最大的吞吐量。各个消息中间件的比较。原创 2024-08-12 11:59:23 · 559 阅读 · 0 评论 -
面试实战题-并发异步多线程
● @Target:注解的作用目标 ● @Retention:注解的生命周期 ● @Documented:注解是否应当被包含在 JavaDoc 文档中 ● @Inherited:是否允许子类继承该注解 注解的本质就是一个继承了 Annotation 接口的接口 编译器将在编译期扫描每个类或者方法上的注解,会做一个基本的检查,你的这个注解是否允许作用在当前位置,最后会将注解信息写入元素的属性表。按照双亲委派机制加载类,每当需要加载一个新的类时,当前的类加载器会先委托其父加载器,查询有没有加载该类。原创 2024-08-12 11:58:53 · 404 阅读 · 0 评论 -
面试实战题-分布式技术
由于 Redis 集群数据同步到各个节点时是异步的,如果在 Master 节点获取到锁后,在没有同步到其它节点时,Master 节点崩溃了,此时新的 Master 节点依然可以获取锁,所以多个应用服务可以同时获取到锁。● Consumer 第 2 步,subscribe 向注册中心订阅服务。Dubbo支持的通信协议:dubbo://(推荐)、rmi://、hessian://、http://、webservice://、thrift://、memcached://、redis://、rest://原创 2024-08-12 11:58:05 · 558 阅读 · 0 评论 -
面试实战题-Spring技术栈
而当我们请求缓存这些服务的时候,我们可以使用信号量隔离策略,因为这类服务的返回通常会非常的快,不会占用容器线程太长时间,而且也减少了线程切换的一些开销,提高了缓存服务的效率。BeanFactory是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范, FactoryBean也是接口,为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式, 我们可以在getObject()方法中灵活配置。原创 2024-08-12 11:57:34 · 391 阅读 · 0 评论 -
面试实战题-其他知识(设计模式)
采用多种decoder/encoder 支持,对TCP粘包/分包进行自动化处理 可使用接受/处理线程池,提高连接效率,对重连、心跳检测的简单支持 可配置IO线程数、TCP参数, TCP接收和发送缓冲区使用直接内存代替堆内存,通过内存池的方式循环利用ByteBuf 通过引用计数器及时申请释放不再引用的对象,降低了GC频率 使用单线程串行化的方式,高效的Reactor线程模型 大量使用了volitale、使用了CAS和原子类、线程安全类的使用、读写锁的使用。● 连接的建立是经过三次握手,断开的时候四次挥手。原创 2024-08-12 11:56:41 · 583 阅读 · 0 评论 -
面试实战题-网上问题处理
这次问题出现的原因为Broker宕机,导致堆积的消息过多,每一批达到500条消息,导致poll之后消费的时间过长(700s),超过max.poll.interval.ms(默认300s)。高并发系统的几大方向 1.请求数据尽量少,从而减少cpu消耗 2.访问路径尽量短,减少节点消耗 3.强依赖尽量少,减少加载时间 4.不要有单点,要有备份 5.减少额外请求,减少加载时间 为了系统的高可用,我们需要B计划,为了使系统仍然可用,我们准备了降级、限流、拒绝服务三件法宝。准备项目描述的说辞、准备好亮点和难点。原创 2024-08-12 11:55:49 · 462 阅读 · 0 评论 -
面试实战题-数据结构与算法
值按照提供的 Hash 算法算出对应的 Hash 值,然后将 Hash 值对数组长度取模后得到需要计入数组的索引值,并且将数组这个位置的值从 0 改成 1。在判断一个元素是否存在于这个集合中时,你只需要将这个元素按照相同的算法计算出索引值,如果这个位置的值为 1 就认为这个元素在集合中,否则则认为不在集合中。大根堆 解题思路:保持堆的大小为K,然后遍历数组中的数字,遍历的时候做如下判断: * 1. 若目前堆的大小小于K,将当前数字放入堆中。一种通过探索所有可能的候选解来找出所有的解的算法。原创 2024-08-12 11:54:19 · 499 阅读 · 0 评论 -
面试实战题-Java
● @Target:注解的作用目标 ● @Retention:注解的生命周期 ● @Documented:注解是否应当被包含在 JavaDoc 文档中 ● @Inherited:是否允许子类继承该注解 注解的本质就是一个继承了 Annotation 接口的接口 编译器将在编译期扫描每个类或者方法上的注解,会做一个基本的检查,你的这个注解是否允许作用在当前位置,最后会将注解信息写入元素的属性表。按照双亲委派机制加载类,每当需要加载一个新的类时,当前的类加载器会先委托其父加载器,查询有没有加载该类。原创 2024-08-12 11:53:32 · 517 阅读 · 0 评论 -
面试实战题-数据库及DAO层
主键索引的叶子节点存的是整行数据。Hibernate的一级缓存是绑定Session的,当获取到一个Session对象,在执行Sessinon里面的方法都能使用Hibernate默认提供的一级缓存,执行完成Session对象消亡即缓存数据也跟着消亡(一级缓存的数据是放在栈中)。垂直分表是基于数据库中的"列"进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中 水平切分分为库内分表和分库分表,是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中。原创 2024-08-12 11:52:38 · 598 阅读 · 0 评论 -
面试资料
https://github.com/CyC2018/CS-Notes原创 2019-03-30 10:28:29 · 222 阅读 · 0 评论 -
项目回顾
1、开发时方便调试打的日志,在发布时记得清理以下,删除无用的log2、开发时保持和产品经理的沟通,尤其是UI设计时。原创 2018-11-20 18:57:26 · 220 阅读 · 0 评论 -
Java应用突然变慢怎么定位
第一步:登录后台服务器/监控平台,查看系统资源是否达到上限,例如:CPU、内存、磁盘、I/O、网络带宽等,如果是这些问题,先将这些问题逐一解决: 如果是CPU的问题,则需要查看一下CPU占比比较高的进程,然后使用jstack命令生成进程的堆栈信息,看是否发生频繁Full GC,如果是的话,还需要看一下内存快照,分析一下内存情况(可以使用java自带的或第三方工具);如果是磁盘空间满了...转载 2018-06-24 12:35:53 · 2030 阅读 · 0 评论