拼多多服务端一面:HashMap、文件 IO 与数组移除
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 实习中最有挑战的工作是什么,自己怎样完成?
- HashMap 查找元素的流程是什么,数组索引如何计算?
- Java 日常文件读写使用什么 IO 方式?
- 笔试题当时使用了什么思路,为什么这样做?
- 给定数组与 k,怎样把不等于 k 的元素移到左边,并返回有效元素数量?
《参考解析》
原地移除元素
用读指针遍历数组,写指针记录下一处有效位置。读到不等于 k 的值就写入,再移动写指针。结束后写指针就是数量,前面这段数组包含有效结果;后面的内容不用额外清零,除非题目另有要求。时间 O(n),额外空间 O(1)。
HashMap 查询
先由键的哈希值定位桶,再在桶中比较哈希和键的相等性。哈希碰撞并不代表两个键相同;自定义键对象需要保持 equals 与 hashCode 的约定,放入以后再修改参与计算的字段,会使后续查询找不到原条目。