满帮:
spring的配置文件管理:
微服务的集中配置管理
redis高可用的策略 集群 主从 哨兵
后端限流的算法
最后这位面试官跟我说抱歉,说很多人30岁就当上架构师了。又给我提了两点建议,一是看源码如spring,zk,二是学习架构。
京东到家:
两种遍历(for i 与 for each)哪种更好?比如map,比如linkedlist. 在所有数据结构里都是for each更好吗?
set为什么可以去重。
试举hashMap线程不安全的一例。ConcurrentHashMap是怎么加锁的
线程池里等待队列的作用,特点,和普通的Queue有什么区别:
BlockingQueue阻塞队列:
1,线程安全,多个线程可以安全地访问队列
2,当队列为空的时候,消费线程会阻塞等待队列不为空;当队列满了的时候,生产线程就会阻塞直到队列不满。参考了https://zhuanlan.zhihu.com/p/78485730
场景题:一个接口被频繁调用,希望统计它被调用的次数,应该用什么数据类型保存结果,怎么实现?在提示下我想到了volatile和AtomicInteger。问题扩展到分布式下呢?我说用redis。
CAS
spring aop是怎么实现的?答曰两种动态代理。问为什么要用两种,一种不行吗?答曰jdk动态代理的被代理类必须有接口。再深挖就没答上了。
spring声明式事务。spring事务的传播机制。
update库a,然后update库b.这样一系列操作可以放在一个事务里吗?
场景题:银行A的账户a给银行B的账户b转账,怎样保证数据一致性?如果a的钱减了,调B的接口失败了?或者迟迟没有反馈呢?我说回滚或者重试。他说其实b加钱成功,只是因网络等原因a没有收到正确反馈,a回滚? 他给出的答案是延时重试,并保证幂等性。