1.高并发超库存卖问题.md

数据库行级锁和事务一致性保证

执行sql:

beginTranse(开启事务)

try{

    //quantity为请求减掉的库存数量
    $dbca->query('update s_store set amount = amount - quantity where amount>=quantity and postID = 12345');

}catch($e Exception){

    rollBack(回滚)

}

commit(提交事务)

其他措施

从技术方面剖析,很多人肯定会想到事务,但是数据库事务是控制库存超卖的必要条件,但不是充分必要条件。


秒杀场景

1、缓存秒杀(秒杀场景)
商品库存预先放到缓存中。
先将商品数量递减(加锁/解锁)后再进行其他方面的处理,
处理失败在将数据递增1(加锁/解锁),否则表示交易成功。
当商品数量递减到0时,表示商品秒杀完毕,拒绝其他用户的请求。

2、排队方案(秒杀场景)
限制最多10000个人进来,最后排队,取出前100的人才能下单成功,
适合:不能粗糙限流的场景,12306。或者一次性要处理完,又不能限流。

重要:秒杀服务单独部署


非秒杀场景

1、通过服务端的内存锁(锁主键,起始就是商品id的分布式锁),按顺序一个一个,非秒杀场景,无需限流(缓存支持的最大并发)。
当某个用户要修改某个id的数据时,把要修改的id存入memcache,加上超时,
若其他用户触发修改此id的数据时,读到memcache有这个id的值时,等待三次,每次1秒,或者直接拒绝重新下单。
如:incre = 1,执行完,del。

2、库存操作进队列,库存扣减采用消息,扣减里面有订单号,和扣减状态,更新订单库存可支付状态。(要限流)
a)查询库存操作数和实际库存,实际库存》库存操作数才执行,否则拦截,
b)生成订单,支付时候,查询订单库存可支付状态执行后续操作。
这是库存总是动态算出来的,可能会慢,而且消费一定要保证,但是不需要更新缓存和DB,保持缓存和DB一致性也是问题。

实际应用中,并不是让mysql去直面大并发读写,会借助“外力”,
比如缓存、分布式锁、队列写入等方法来降低并发读写。


2.一个好的问题比答案重要.md

  1. Random实现原理?安全吗?

3.前端题库.md

集绵

80道前端面试选择题


4.后端题库.md

集绵

JavaFamily
后端架构师技术图谱

设计模式面试题

  • 访问者模式结合业务说下(提醒:instanceof)

Java面试题

  • Java functional interface
  • CompletableFuture
  • wait notify notifyAll 的用处
  • Java 进程 CPU很高,如何排查
  • Volatile的作用
  • ConcurrentHashMap原理
  • 新生代垃圾回收使用什么算法,垃圾回收的时候,线程是否会停
  • Integer源码问题
        Integer A = 128;
        Integer B = 128;

        Assert.assertEquals(true,A!=B);

        Integer C = 2;
        Integer D = 2;
        Assert.assertEquals(true,C==D);
  • 线程池几个参数?拒绝策略默认有哪几种

  • int和long各占多少字节

  • java系列化,hessian序列化原理?序列化反序列化过程?

  • 什么是ABA问题,出现ABA问题,JDK是如何解决的。

  • 假设现在是 20018-12-03 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 20018-12-03 12:00:01.000 的时候,这个线程会不会被唤醒?

  • 某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?

  • 为什么HashMap,长度使用2的倍数

    位运算(&)效率要比取模运算(%)高很多,主要原因是位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。

分布式和常用框架面试题

  • Hystrix的熔断策略有哪几种
  • Spring Boot单独打包业务代码
  • Spring Boot生命周期
  • TiDB使用场景

大数据面试题

  • RDD是如何管理它的血缘关系的
  • Kafka how to implement exactly once sementics
  • What's the difference between kafka streams and other
  • What's the difference between kafka and some other message queue system.
  • Kafka consumer reblance的过程
  • elasticsearch 调优方法有哪些
  • Kafka 小消息大并发,Kafka 大消息小并发优化策略

系统调优面试题

  • 什么是封包,解包

排错面试题

  • 内存正常,cpu不高,或者忽高忽低,但是吞吐量上不去,怎么办?

架构方案面试题

  • 快递等订单数据库分库分表策略,满足多种查询条件
  • 订单服务调用第三方支付接口获取支付状态失败,但实际用户已经支付成功,怎么保证服务正常?
  • 有状态服务如何支持伸缩
  • 100个长连接,A->B ,B的处理耗时是10ms,评估下QPS

数据结构和算法面试题

  • 几个G的数据,如何寻找中位数
  • 快速排序如何实现,时间复杂度
  • skiplist的层级算法是?
  • 1000万ip限流,2MB内存如何处理?

Redis面试题

  • setnx、setex有什么区别
  • set和hset相比,hset的优势
  • hyperlog原理

数据库面试题

  • mysql覆盖索引实现机制
  • mysql和Hbase数据或者索引不同点,行式和列式的区别
  • select a from a =1 and b=2 order by c 怎么建索引,select a from b=2 and a=1 order by c呢?
  • select * from table a =1 for update ? select * from table ? select * from table a>1 and a<10 for update ?锁的行数。

史上最全 50 道 Redis 面试题

来源

1、什么是Redis?
2、Redis相比memcached有哪些优势?
3、Redis支持哪几种数据类型?
4、Redis主要消耗什么物理资源?
5、Redis的全称是什么?
6、Redis有哪几种数据淘汰策略?
7、Redis官方为什么不提供Windows版本?
8、一个字符串类型的值能存储最大容量是多少?
9、为什么Redis需要把所有数据放到内存中?
10、Redis集群方案应该怎么做?都有哪些方案?
10、Redis集群方案应该怎么做?都有哪些方案?
11、Redis集群方案什么情况下会导致整个集群不可用?
12、MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
13、Redis有哪些适合的场景?
14、Redis支持的Java客户端都有哪些?官方推荐用哪个?
15、Redis和Redisson有什么关系?
16、Jedis与Redisson对比有什么优缺点?
17、Redis如何设置密码及验证密码?
18、说说Redis哈希槽的概念?
19、Redis集群的主从复制模型是怎样的?
20、Redis集群会有写操作丢失吗?为什么?
21、Redis集群之间是如何复制的?
22、Redis集群最大节点个数是多少?
23、Redis集群如何选择数据库?
24、怎么测试Redis的连通性?
25、Redis中的管道有什么用?
26、怎么理解Redis事务?
27、Redis事务相关的命令有哪几个?
28、Redis key的过期时间和永久有效分别怎么设置?
29、Redis如何做内存优化?
30、Redis回收进程如何工作的?
31、Redis回收使用的是什么算法?
32、Redis如何做大量数据插入?
33、为什么要做Redis分区?
34、你知道有哪些Redis分区实现方案?
35、Redis分区有什么缺点?
36、Redis持久化数据和缓存怎么做扩容?
37、分布式Redis是前期做还是后期规模上来了再做好?为什么?
38、Twemproxy是什么?
39、支持一致性哈希的客户端有哪些?
40、Redis与其他key-value存储有什么不同?
42、都有哪些办法可以降低Redis的内存使用情况呢?
43、查看Redis使用情况及状态信息用什么命令?
44、Redis的内存用完了会发生什么?
45、Redis是单线程的,如何提高多核CPU的利用率?
46、一个Redis实例最多能存放多少的keys?List、Set、Sorted Set他们最多能存放多少元素?
47、Redis常见性能问题和解决方案?
48、Redis提供了哪几种持久化方式?
49、如何选择合适的持久化方式?
50、修改配置不重启Redis会实时生效吗?

参考资历

搜云库技术团队,面试必备的技术干货
想进大厂?50个多线程面试题,你会多少?(一)
金三银四跳槽季,Java面试大纲,冲击年薪70W
史上最全阿里 Java 面试题总结
小马哥每日一问
小马哥技术周报


5.算法题库.md

集绵

algorithm-base


9.面经.md

面经

面经手册 · 开篇《面试官都问我啥》


Copyright © 2018 INSTALL.REN