今年端午,拼多多的放足了三天假。卷王这是不卷了吗?
说到 11-11-6 ,大家第一反应都是pdd。这回突然放满法定节假日,对牛马打工人来说,属实是意料之外的惊喜。
对很多拼多多的老员工来说,这也是第一次在端午放足 3 天假。虽然还是有同学需要值班,但已经比往年好太多了。
拼多多被很多同学望而却步的原因之一就是内卷,这次连卷王都开始放假,不知道算不算是继小红书取消大小周、大疆规定 9 点下班后,又一个反内卷的预兆。
不过话又说回来,拼多多卷是卷,给的也是真的多。去年校招开奖,给的真不算少:
项目 | 薪资 |
---|---|
算法 | 40k * 18 |
后端 | 38k * 18 |
服务端开发 | 34k * 18 |
市场管培 | 22k * 18 |
运营管培 | 14k * 18 |
加上年终奖,有的岗位总包能到 50w+。
是不是有同学也心动了?
今天分享一篇拼多多 java 校招一面面经,感受一下:
1,Java中的HashMap
HashMap
是基于哈希表的数据结构,用于存储键值对(key-value
)。其核心是将键的哈希值映射到数组索引位置,通过数组 + 链表(在 Java 8 及之后是数组 + 链表 + 红黑树)来处理哈希冲突。
HashMap
使用键的 hashCode()
方法计算哈希值,并通过 indexFor
方法(JDK 1.7 及之后版本移除了这个方法,直接使用 (n - 1) & hash
)确定元素在数组中的存储位置。哈希值是经过一定扰动处理的,防止哈希值分布不均匀,从而减少冲突。
HashMap
的默认初始容量为 16,负载因子为 0.75。也就是说,当存储的元素数量超过 16 × 0.75 = 12 个时,HashMap
会触发扩容操作,容量x2并重新分配元素位置。这种扩容是比较耗时的操作,频繁扩容会影响性能。
2,TreeMap 了解吗?查询写入的时间复杂度是多少?
TreeMap 内部是通过红黑树实现的,可以让 key 的实现 Comparable 接口或者自定义实现一个 comparator 传入构造函数,这样塞入的节点就会根据你定义的规则进行排序。
基本特性:
- 数据结构:TreeMap 基于红黑树实现,红黑树是一种自平衡的二叉查找树,能够保证基本操作(插入、删除、查找)的时间复杂度为 O(log n)。
- 键的有序性:TreeMap 中的键是有序的,默认按自然顺序(键的 Comparable 实现)排序,也可以通过构造时提供的 Comparator 进行自定义排序。
- 不允许 null 键:TreeMap 不允许键为 null,但允许值为 null。
这个用的比较少,我常用在跟加密有关的时候,有些加密需要根据字母序排,然后再拼接成字符串排序,在这个时候就可以把业务上的值统一都塞到 TreeMap 里维护,取出来就是有序的。
3,HashMap在多线程环境下会有什么问题?
会有线程安全问题,且可能会产生死循环。
更详细的答案可以到面试鸭 《说说 Java 中 HashMap 的原理?》扩展知识中观看:www.mianshiya.com/question/18…
4,如何保证 HashMap 线程安全?用 synchronized 可以吗?
5,ConcurrentHashMap get操作需要加锁吗,为什么?
6,volatile的作用是什么?底层是如何实现的?在多核CPU下如何保证可见性?
7,算法题:
有一个环形的公路,上面共有n
站,现在给定了顺时针第i
站到第i+1
站之间的距离(特殊的,也给出了第n
站到第1
站的距离)。小美想沿着公路第x
站走到第y
站,她想知道最短的距离是多少?
更多面试题解和大厂面经,欢迎来面试鸭:www.mianshiya.com/