Skip to content
Learn Netverks
Company prep Graphcore
Mid-level (3–5 years) Technical deep dive Medium

How does HashMap work internally in Java?

Reported in Graphcore European engineering loops. Java-specific collections question on buckets, hashing, and resize behavior.

Role
Backend Engineer
Location
London, UK
Study track
Java

Often asked in Graphcore loops at European offices (London, Berlin, Amsterdam, Paris, Stockholm, Dublin, and remote EU). Prepare a clear spoken answer plus key trade-offs.

Try answering aloud first

Cover trade-offs, structure, and a concrete example before revealing the baseline response.

Spoiler-free prep mode

How to frame this at Graphcore: Connect your answer to measurable impact, clarity of thought, and trade-offs the team cares about. Below is a strong baseline response you can adapt with your own project examples.

HashMap stores key-value entries in an array of buckets. Index = (n - 1) & hash(key) after spreading high bits to reduce collisions. Collisions chain in linked lists; JDK 8+ converts long chains to balanced trees (≥8 nodes) for O(log n) worst case.

Default load factor 0.75 triggers resize (double capacity) when size exceeds threshold. Resize rehashes all entries—expensive; size buckets appropriately upfront.

equals and hashCode contract: equal keys must share hash codes. Mutable keys are dangerous—changing hash breaks lookup.

Not thread-safe—use ConcurrentHashMap for concurrency (segmented/CAS locks). Contrast with HashTable (legacy synchronized) and LinkedHashMap (insertion/access order).

Comments (0)

Share how this question came up in your loop, or add tips for others preparing.

Log in to comment on this question.