java工程师面试题,拼多多面试题分享(java一面)

KLQ 2020-04-17 11:07:43 java常见问答 7186

下面要给大家分享的是拼多多java工程师一面的面试题内容,有要去拼多多面试的小伙伴可以来看看这个一面面经哦。

一面面试题:

1、解释一下Java当中的HashMap、TreeMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射......。

TreeMap 是一个有序的key-value集合,它是通过红黑树实现的......。

2、TreeMap查询写入的时间复杂度多少?

3、HashMap多线程有什么问题?

hashmap并发问题的症状:

hashmap多线程操作同时调用put()方法后可能会导致get()死循环,从而使CPU使用率达到100%,从而使服务器宕机。

4、CAS和synchronize的区别是什么?都用synchronize不可以吗?

(1)synchronized为锁机制隐含着获锁和解锁的操作。(利用操作系统提供支持实现访问竞争资源的顺序性,早期JDK版本未对synchronized优化并发效率低。后期引入轻量级锁、偏向锁等概念,大大优化性能。优势在于使用简单,维护成本低)

(2)cas实现了lock-free的概念,不引入锁也可以很好的解决并发场景问题。

假如单纯的使用cas,那么可能会导致多重副作用,高级并发包下配合AQS一起可提升并发效率。

(3)假如单独使用,CAS和synchronize都偏向并发量不高或者业务简单的场景。

例:单体web应用单调计数场景。

5、如何保证线程安全?

(1)对非安全的代码进行加锁控制;

(2)使用线程安全的类;

(3)在多线程并发的情况之下,线程共享的变量改成方法级的局部变量。

6、ConcurrentHashMap如何实现线程安全?

7、get要加锁么,原因是什么?

8、volatile的作用

volatile让变量每次在使用时,都从主存中取,而不是从各个线程的工作内存。

volatile具有synchronized关键字的可见性,但是,它没有synchronized关键字的并发正确性,也就是不保证线程执行的有序性。

即,volatile变量对于每次使用,线程都能得到当前volatile变量的最新值,可是volatile变量并不保证并发的正确性。

9、底层如何实现?

10、在多核CPU下,如何保证可见性?

项目

聊了一下项目


11、系统之间是怎么交互的?

12、系统并发多少,如何进行优化?

其他:

给了一张纸,画了一个九方格,都填了数字,给一个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低

面试官表示可以先说一下自己的思路

最后

13、有什么想问我(面试官)的?

以上的拼多多java一面面试题大家都了解了吗?更多拼多多java面试题面经,请继续关注本站的面试题专栏了解吧。