面灵AI

拼多多服务端一面:HashMap、文件 IO 与数组移除

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 实习中最有挑战的工作是什么,自己怎样完成?
  2. HashMap 查找元素的流程是什么,数组索引如何计算?
  3. Java 日常文件读写使用什么 IO 方式?
  4. 笔试题当时使用了什么思路,为什么这样做?
  5. 给定数组与 k,怎样把不等于 k 的元素移到左边,并返回有效元素数量?

《参考解析》

原地移除元素

用读指针遍历数组,写指针记录下一处有效位置。读到不等于 k 的值就写入,再移动写指针。结束后写指针就是数量,前面这段数组包含有效结果;后面的内容不用额外清零,除非题目另有要求。时间 O(n),额外空间 O(1)。

HashMap 查询

先由键的哈希值定位桶,再在桶中比较哈希和键的相等性。哈希碰撞并不代表两个键相同;自定义键对象需要保持 equals 与 hashCode 的约定,放入以后再修改参与计算的字段,会使后续查询找不到原条目。