阿里测试开发面试准备

单例模式的实现

  1. 懒汉模式:提前初始化
public class Singleton {    
    private static Singleton singleton = null ;
    private Singleton(){}
    synchronized public Singleton getSingleton(){
        if (singleton == null){
            singleton = new Singleton();
        }
        return singleton
    }
}
  1. 饿汉模式:需要时初始化
public class Singleton {    
    private static Singleton singleton = new Singleton()  ;
    private Singleton(){}
    synchronized public Singleton getSingleton(){
        return singleton
    }
}
  1. 静态内部类
public class Singleton {
    private Singleton() {}
    private static class SingletonInstance {
        private static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return SingletonInstance.INSTANCE;
    }
}

java GC机制

  1. 什么时候触发GC
    – 所有实例都被回收
    – 加载类的ClassLoad被回收(classload为了定位class文件)
    – 没有引用,或没有被反射访问

SpringBoot启动流程

启动流程图
详细的启动代码新后续开文章分析。

redis 相关

  1. 支持的类型:字符串,列表,集合,hash,有序集合,基数
  2. 最近面试redis被问的很惨,新开博文读redis的详细分析。

MQ

  1. 消息同步丢失
  • 生产者下发:confirm,异步
  • 中间间重启:rabbitMQ持久化
  • 消费者丢失:自动重试,关闭ACK(ACK相关流程文档补充)
  1. 防止消息重复——幂等性
  • 通过业务逻辑控制
    – 数据库unique
    – 更新数据的时候,判断前提
    – 操作记录

RPC:远程通讯协议

  1. 与http的区别:
  • RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议,这里要结合OSI七层模型聊一聊。
  • RPC并没有规定数据传输格式,这个格式可以任意指定,不同的RPC协议,数据格式不一定相同。
  • Http中还定义了资源定位的路径,RPC中不需要
  • RPC需要满足像调用本地服务一样调用远程服务,也就是对调用过程在API层面进行封装。
  • Http协议请求、响应等细节需要我们自己去实现。
  • 优点:RPC方式更加透明,对用户更方便。Http方式更灵活,没有规定API和语言,跨语言、跨平台
  • 缺点:RPC方式需要在API层面进行封装,限制了开发的语言环境。
  1. restful: http + json

MySQL

  1. innodb:
    – 行级锁 + 外键,大容量
    – select count(*)时会扫描全表
    – 多重并发
  2. myIsam:
    – 不提供事务支持,无行锁,无外键
    – .frm:存储表定义,.myd:存储表数据,.myi:存储表索引
  3. ACID
    – 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
    – 一致性(Consistency):事务前后数据的完整性必须保持一致。
    – 隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
    – 持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
  4. 统计表table
    | id | userid | ctime
    |–|--|–|
    |1 | 2 | 3 |
    统计表中提交大于10次的用户,并按照提交次数从大到小排列
    select userid, count(id) from table group by userid having count(id) > 1 order by count(id) desc ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值