1、青蛙跳跳
n块石头,一只青蛙一次可以跳一块石头,也可以跳两块石头,请问这只青蛙有几种跳法?
n块石头 | 跳法枚举 | 总共T(n) |
---|---|---|
1 | () | 0 |
2 | (1) | 1 |
3 | (1,1)(2) | 2 |
4 | (1,1,1)(1,2)(2,1) | 3 |
5 | (1111)(112)(121)(211)(22) | 5 |
由上表可知,第k次的跳法是在第k-1次跳法中插入1和与1加1之和。例如:当k=3时,k-1=2,
* 第2次的跳法(1)插入1,即(1,1);
* 第2次跳法的1加1,即(2);
k=3的总跳法即(1,1)(2)。
n=6时,T(n)=8;n=7时,T(n)=12;则可以假设T(n)=T(n-1)+n-3。
当n≥4时,
T(4)-T(3)=1
T(5)-T(4)=2
……
即T(n)-T(3)=1+2+…+n-3=(n-3)(n-2)/2
所以T(n)=(n-3)(n-2)/2+2
利用数学归纳法可证明此等式成立。
SQL查询
1、给出一张表T,
id | user_id | money | time |
---|---|---|---|
1 | a | 10 | 123 |
2 | b | 8 | 334 |
3 | a | 22 | 345 |
4 | c | 32 | 89 |
5 | b | 23 | 786 |
列出每个用户最近上线收到的红包。 | |||
select * from T a where exists (select user_id, max(time) as mt from T b group by user_id having a.user_id=b.user_id and a.time=mt) |
因为没怎么用过exist语句,所以当时没写出来,后来查了一下exist,了解了exist和in的区别,发现exist确实比较实用。
session共享
分布式系统需要考虑
防表单重复提交
在表单中增加隐藏字段uuid,如果不一致就是重复提交。
session持久化
拿tomcat的实现类StandardSession来说,它在catalina.jar中,实现了Serializable,所以可以持久化。
锁定Integer管用吗
Integer和String一样,都是final修饰的类,内部字段也是final修饰,所以synchronized(Integer a)起不到同步的效果。
哇,感觉自己面试中傻傻的,恐怖!