首页 > 其他 > 详细

记录一些面试准备的资料

时间:2021-03-04 10:06:38      阅读:28      评论:0      收藏:0      [点我收藏+]

当前使用的技术栈

  1. springBoot
  2. spring-cloud
    1. Eureka-服务注册和发现
    2. Feign(数据通讯)
    3. Hystrix
    4. Gateway(网关) 路由 断言 过滤器
  3. spring-oauth2
    服务鉴权
  4. mybatis
  5. mysql
  6. redis 缓存
  7. kafka 消息队列

熔断的默认处理机制以及熔断和降级之间的关系

服务异常导致服务不可用,进行熔断,降级缓解压力
一定请求进行熔断判定,判定超过则进行熔断,隔一段时间后,进行熔断判定

int所占用的字节

类型 字节占用
byte 1 8
char 2 16
int 4 32
short 2 16
long 8 64
double 8 64
float 4 32

对象中hashCode和equals的关系

线程

  1. 数据交换用Exchanger
  2. 线程执行顺序用join
  3. 共享数据
    1. 通过现场之间交换数据
    2. wait/notify/notifyAll await/signal/signalAll 唤起等待
  4. sleep 和 wait sleep睡眠时保持对象锁,其他对象无法访问,wait 睡眠时释放对象锁
  5. volatile
    1. 保证内存可见性
    2. 保证内科的有序性
  6. synchronized
    1. 修饰代码块 当线程访问时其他线程访问会被阻塞 作用对象是使用调用代码块的对象
    2. 修饰方法
    3. 修饰静态方法
    4. 修饰一个类
    5. 接口定义时不可以使用synchronized
  7. 线程池
    1. 降低系统资源的消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗
    2. 提高响应速度,
    3. 方便线程并发的管控
    4. 提供更强大的功能,延时定时线程池
    5. 线程池种类
      1. CachedTreadPool: 无限扩大的线程池,适用于负载较轻的场景,执行短期异步任务
      2. FixedTreadPool: 固定大小的线程池,适用于负载较中的场景,执行任务时不会因为需要维持大量的线程导致负载加重
      3. SingleTreadPool: 单线程的线程池,适用于保持顺序执行业务的场景
      4. ScheduledTreadPool: 执行延时任务和周期性任务
    6. 主要参数:
    corePoolSize 基本线程池大小
    maxmumPoolSize 线程池的最大线程数
    keepAliveTime 线程存活保持时间
    timeUint 线程存活的时间单位
    workQueue 任务队列: 用于传输和保存等待执行任务的阻塞队列
    threadFactory 线程工厂: 用于创建新线程
    handler 线程饱和策略

reactiveStreams

  1. 反应式流: 用于处理异步编程时的困难
    1. 超时 异常处理困难
    2. 难以重构
    3. 多个异步任务协同处理
  2. 主要目标
    1. 管理跨异步边界的流数据交换
    2. 确保接收方不会轻质缓冲任意数量的数据

mysql

  1. 索引结构
    1. 普通索引:无限制
    2. 唯一索引:索引值必须唯一,不能有空值
    3. 主键索引:特殊的唯一索引
    4. 组合索引:
  2. 和redis的区别
    1. mysql 关系型数据库 redis 非关系行数据库
    2. mysql 持久化存储到数据到硬盘上, 速度慢 redis 将使用频繁的数据存储到缓存中,
    3. mysql 作为持久化的数据库,每次请求数据库的时候都会产生I/O操作,会在反复连接数据库时候花费大量时间,另外反复访问数据库会导致负载太高
  3. msyql的引擎
    InnoDB(主要引擎,支持事务,支持行锁定,外键

redis

  1. 非关系型数据库

  2. 为啥快

    1. 完全基于内存,绝大部分请求都是纯粹的内存操作.数据存储在内存中,都是类型hashMap,优势就是查找和操作的时间复杂度都是O(1)
    2. 数据机构简单,数据操作也简单
    3. 采用单线程,不会担心上下切换和竞争,也不会存在多线程或者多线程导致的消耗,不用担心各种锁的问题.不存在加锁和释放的问题
  3. 持久化

    1. RDB
      1. 将数据以快照的方式保存到磁盘上
      2. 优势:
        1. 文件紧凑,全量备份
        2. 恢复大数据的时候比AOF快
        3. 不需要I/O操作,主线程会fork()一个子线程来处理保存工作
      3. 劣势: 一次全量备份,备份期间的新数据不会保存
    2. AOF
      1. 将redis每个收到的写命令都write函数追加到文件中
      2. 优势:
        1. 可以很好的保护数据不丢失
        2. 写入性能高,文件不容易被破坏
        3. 文件过大时,后台重写,不会影响客户端读取
        4. 适合灾备,
      3. 劣势: 同等数据AOF比RDB 大,
  4. redis的使用场景

    1. 热点数据的缓存
    2. 限时任务的应用(手机短信验证码)
    3. 计数器相关的业务(接口访问频次)
  5. redis和mysql之间怎么保证数据一致性

    1. 实时更新:写入db的时候删除缓存数据,直到访问redis时候再刷新
    2. canal对binlog的解析,在通过发布--订阅模式消费canal服务的数据
    3. TTL 设置过期策略
  6. 存储结构:

    1. 默认16个库(redisDB)
    2. 每个DB内部存储这dict数据结构 包含着存储数据和过期事件
    3. 每个dict内部又包含着2个dictht的数组,主要用户hash的扩展
    4. dictht内部又包含着和dictEntry数组,就是hash的桶,如果冲突,使用挂链法解决
  7. 数据结构

    1. list
    2. string
    3. set
    4. hash
    5. zset

记录一些面试准备的资料

原文:https://www.cnblogs.com/yuitstyle/p/14477521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!