葵花宝典(一稿)

时间:2021-08-29 22:08:30

以下面经总结自很多同学、同事高工的面试经历。

1、问到了redis 原子性

2、ArrayList内部实现,以及对于原生数组的优势(扩容,线程安全等)

3、多线程,分布式锁,分布式事务

ps:

        问:如果保证3个线程都结束之后再继续执行业务?

        答:我说用线程的栅栏;或者3个flag,while去判断。

        问:多个线程同时访问数据库,如何保证多个线程同时成功,同时失败;如何保证同时操作数据库的时候,不发生写的覆盖?

        答:若在主线程加事务,则线程结束后一起提交,性能上不是最优选项;可以在事后处理,通过日志发现哪些写操作有问题,然后补偿到数据库(部分场景适用);可以在数据库级别加锁(引出mysql隔离级别),默认写锁;redis的原子性也可以考虑是否可以解决类似问题。

4、redis

5、mysql隔离级别

6、jvm相关

https://blog.csdn.net/stanlee_0/article/details/51171382

https://blog.csdn.net/luomingkui1109/article/details/72820232

java8的JVM有变化,持久代(PSPermGen)被元空间(Metaspace)取代

    https://blog.csdn.net/yechaodechuntian/article/details/40341975

这篇博文提到了GC()算法,略有晦涩

    https://blog.csdn.net/hui_yan2012/article/details/70194449

一系列JVM博客,包括GC()算法,这个讲的比较清爽

    http://www.importnew.com/23752.html

----

静态常量是存放在方法区的

7、map内部实现(扩容,线程安全等)

8、String内存问题,Long内存问题等

9、== 和 equal 的区别

10、shell命令