一:常见八股文
       api的实用,原理,底层数据结构,查找算法

二:mysql优化
     原理,数据结构等
三:redis 
    原理,数据结构, 集群模式等
四:kafka
    运作原理,一致性,幂等性,不丢失等解决方案;

五:场景题
    面试官会拿现有的一些场景 考察灵活应变能力(在于平常积累和思考)

六:难点,亮点
    1. 平常生产中遇到的一些事故,怎么定位,解决的;
     拿顺丰的路由回调去 按照我们的业务并发提高 ,一步步 从多线程(配置等) ,
     到 kafka 自己生产,自己消费,削峰;
    2. 大数据导入: 多线程的 future 解决方案,并发请求下游,这样的,利用了一些
    JUC的一些特性,提高业务处理性能;
    3. 可以很多说的,总结下 你们自己系统的问题,然后 从 定位 到 解决 到优化 解决方案;

七: 解决方案 & 思想:
    1. 分片思想:
        redis 哨兵,集群模式(hashslot机制),es的分片思想;
        
    2. 故障转移 & 负载均衡:nginx 的故障转移 等等;

    3. 日志记录:
        mdc日志追踪,现有的一些解决插件 : zipkin等;
        
    4. 流量控制:
        漏斗算法,令牌桶等 常见的:google的rateLimiter , Sentinel断路由;
        
    5. k8s的伸缩控制;

    6. 问题查找和定位: 
        各种监控,包括上面的一些日志追踪也算方案之一;
        mysql的druid 监控,一些 接口的性能健康,mysql 的慢sql 查询等等
        
    7. 性能优化解决方案;
        1. 从上到下: 业务处理,CPU密集型,io密集型 ,考虑实用多线程;
         或者更优的算法处理减少时间复杂度和空间复杂度,降低执行的时间;
        2. sql优化;
        3. sdk的升级;
        4. 硬件,网络的升级;
        
    8. 性能优化之查询性能: 
        1. 考虑mysql的查询数据上限;
        2. 适当冗余字段机制 减少关联查询,分库分表,多数据源处理方案(如果仅mysql);
        3. 引入缓存,nosql机制 如mongo,es 等等(采用双写方案);
        
    9. 安全方面: 
        1. 数据的入参简单校验 和  复杂的业务校验;
        2. 安全要求比较高的数据查询权限控制; 这个需要业务统一处理,或者单个判断;
        3. 软删除,持久化删除前的日志;
        4. 加密、脱敏(顺丰是这样做的),全链路保护 客户的隐私;
        5. 备份,持久化 删改机制;

    10. 安全之数据一致性保证:
        CAP 的 AP 最终一致性解决方案: 定时任务,手动重试补偿;
        
    11. 拓展性
        采用合理的 设计模式 于 spring 的实用结合起来,提升 代码结构性和 可读性;
    
    
八: 最重要的是要有自己的方法论,总结和思考问题以及解决方案
     1. 看一些书籍,比如 《凤凰架构》-- 周志明 (他的书应该都挺好的,评分超高);
     2. 脚手架: 
         尝试摸透一些开源架构:gitee 上 搜索 Lamp (https://tangyh.top/);
     3. 实操:自己用这个做个项目,然后进行总结后,学习精髓;
     4. 总结: 实现属于自己的脚手架,写文档 总结技术;

九: 算法方面: 
     对自己的一些逻辑思考和优化有很大提升,特别是在写 方法的时候 会考虑到复用性和可用性;
     总之,代码往简单的写,往深处去思考,看评论(当然算法我很菜)