1. 业务管理类系统的技术选型应该注意哪些?有现成的脚手架项目可参考吗?
    1. k8s中部署 springcloud,最外层是 Ingress nginx。里面使用 gateway 做网关,通过服务名调用。现在遇到的问题是每次服务重启会无法访问,需要重启 gateway 才能访问到。我的理解是 ingress nginx 应该只是代理指向到 gateway 实例,然后由 gateway 再次路由。gateway 是通过 eureka 获取的服务信息,动态转发请求,为什么会出现这种情况啊?
    • gateway 是需要通过 eureka 来获取服务信息的,存在秒级的延迟(gateway也存在缓存)
    • eureka 中也存在缓存,可以减少缓存时间或者关闭缓存。
    • 可以通过查看 gateway 所在服务日志来判断具体问题。
    1. 新入职的公司,给安排都是需要沟通,需求不明确,又繁杂的事情,比如数据迁移,作为一个对业务不熟的新人,应该做好哪几点,才能尽快做好本职工作,谢谢解答。
    • 问问题之前自己要先有准备,知道自己具体要问的是什么,自己有没有粗略的方案。
    • 积极主动,要学会主动向领导汇报。
    1. 面试时曾被问个过的问题,创建一个联合索引,字段分别为a、b、c,如何在查询条件为b、c时使索引生效?
    • 考察的是索引的最左原则,当查询 a, ab, abc 时索引会生效。(技术)
    • 面试时要确定题目的前提条件,比如是否是 Mysql 数据库。(审题)
    • 如果对自己的答案很自信,面试官还是说是错的,可以坚持自己的想法,因为此时可能是面试官想考察面试者的心理素质。(心理)
    1. 请问应该如何给下属合理安排任务,我们现在有很多任务,我期望尽量将任务进度向前赶,因为越往后风险越高,可能与后续任务抢占资源,但是如何评估一个开发人员完成多少任务是符合其能力的呢,比如同样是5个接口, 有的人需要加班到10点,有的人下班前就完成了,那还应不应该给做的快的人增加任务呢。如果不增加,每天都不加班,但是来了新的任务又说饱和了,接不了。如果增加,那谁还会提高效率呢?
    • 组内梯队建设、不同梯队分配相应难度的任务
    • 任务分优先级
    • 要优先做对自己团队有收益的需求、没收益的可以拒绝。
    • 通过绩效激励优秀的同学多做事
    1. 星辰教练好,在进行查看AQS源码时,释放资源release方法 ,在进行唤醒线程的unparkSUcccessor方法中,为什么要从尾部开始查找未取消的节点?
    • todo (本次直播后解答)
    1. 在分库分表的情况下,对于需要查询多个表的情况,一般都是先查询主表,然后根据主表的id去查询其他表的数据。但有时候主表和其他表都有查询条件,而且还需要进行分页,此时如果不使用多表联查的话,还有什么其他更好的解决方式么?
    • 通用做法 通过监控binlog加工数据到其他存储(ES、ck、hive等),后续查询操作就从 es 中查询。
    • 在分表的时候考虑将同一属性的数据放在同一个库里面,这样也可以使用表关联查询。
    1. 需要设计一个抢单的功能,需要如何设计才能更优雅平滑的应对高并发下带来的问题。我想过用分布式锁或者乐观锁实现,但是感觉还是有点迷茫。虽然这个功能暂时真实并发不会太高,但是想尽量设计得能抗能打一点。
    • redis做一个分布式队列,MQ异步做业务处理
    1. 最近在看MySQL事务这块,发现MySQL事务并不能解决高并发情况余额扣减为负数或秒杀超卖的问题(除了串行化,但效率太低),像在实际的高并发场景中,余额的扣减或是库存的扣减通常用那些方案比较可靠又性能好一些。
    • 通过乐观锁+条件判断/时间戳/版本号 解决
    • 使用 redis 分布式锁
    1. 使用Gateway验签,但是一直验签失败,我排查问题发现别人的等签名字符串和我收到的参数不一样。例如:

    {“userId”:”1”,”userName”:”杨红利”,”age”:25}
    别人是这样去签名的,然后我收到的请求体就成了
    {“age”:25,”userId”:”1”,”userName”:”杨红利”}

    • 因为在传输过程中字符串是不保证顺序的,但是在签名验证的时候要约定顺序。
    • 可以把键值按照ASCII顺序排序进行取值
    • 这种业务场景最好在开发之前就和接入方约定序列化或者其他能保证顺序的方式。


    1. 在做订单号生成的时候,想有一定的规律,代表时间 、品类、业务线,又不想是自增,容易被猜出规律,但是增加随机数字,又怕生成相同的随机数导致订单号重复,一开始用的是在数据库预先生成一堆随机数,每次用的时候随机取。但是这样效率太低,后来改了一下实现,就是先生成,然后直接插入,如果异常再重新生成。想知道有什么好的设计实现。
    • 雪花算法自增(使用自增可以提高查询效率)
    • 团单时避免核销了别人的单,可以在核销逻辑中加上验证操作
    • 在生成的单号里面增加校验位