问题

蚂蚁金融面试题总结

题库小秘书

发表于 2019-03-31 12:07:21

技术相关顺序可能存在问题

1.你理解的线程安全是什么

2.线程池说下相关参数和原理

3.说说你对volatile的理解一般怎么用

4.AQS了解多少

5.jvm内存结构

6.GC过程

7.实际什么时候出现过GC?

8.自己调优的过程是什么样的

9.stop the world 了解吗?(当时的我是知道stw这个懵逼了

10.hashmap concurrentHashMap 的区别

11.concurrentHashMap 的实现原理

12spring aop 声明式事务

13工作中的体现的亮点是什么

14 自我介绍

项目相关

根据你的业务问你如何用分布式的技术实现的比如我说了zk,就会问你paxos,2pc 3pc cap base 以及 实际项目分布式事务的实现方式等。

总结

技术一步步深入项目实现的 优势。项目要有很大的亮点

聊了一个多小时中间他做记录你自己就知道答的好不好的结果了。

备注:(达到百分之..吧,作者失败在项目和jvm上了)

题库小秘书

发表于 2019-03-31 12:11:02

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。

二者如何取舍

非线程安全是指多线程操作同一个对象可能会出现问题。而线程安全则是多线程操作同一个对象不会有问题。

线程安全必须要使用很多synchronized关键字来同步控制,所以必然会导致性能的降低。

所以在使用的时候,如果是多个线程操作同一个对象,那么使用线程安全的Vector;否则,就使用效率更高的ArrayList。

非线程安全!=不安全

有人在使用过程中有一个不正确的观点:我的程序是多线程的,不能使用ArrayList要使用Vector,这样才安全。

非线程安全并不是多线程环境下就不能使用。注意我上面有说到:多线程操作同一个对象。注意是同一个对象。比如最上面那个模拟,就是在主线程中new的一个ArrayList然后多个线程操作同一个ArrayList对象。

如果是每个线程中new一个ArrayList,而这个ArrayList只在这一个线程中使用,那么肯定是没问题的。

线程安全的实现

线程安全是通过线程同步控制来实现的,也就是synchronized关键字。