# Software Engineer Interview Cheat Sheet: Tips, Tricks and Advice

Aced (formerly Exponent) publishes a public search API over its indexed pages; the guide is at https://www.aced.io/agents/agent-access.

Source: https://www.aced.io/blog/software-engineer-interview-cheat-sheet
Source observed: 2026-11-05T00:47:06.845Z
Last checked: 2026-11-05T00:47:06.845+00:00
Indexed: 2026-11-07T03:53:09.035+00:00

---

# Software Engineer Interview Cheat Sheet: Tips, Tricks and Advice

**Aced (formerly Exponent)** provides this Software Engineering guide for preparing for technical interviews. We cover core data structures, algorithms, system-design principles, programming-language choices, interview behavior, follow-up steps, and practice resources. The article is associated with [Software Engineering](https://www.aced.io/blog/tag/swe) and is credited to Anthony Pellegrino. It was last updated a month ago.

## At a glance

Use this guide to review:

- [Arrays](https://www.aced.io/blog/software-engineer-interview-cheat-sheet#arrays)
- [Linked Lists](https://www.aced.io/blog/software-engineer-interview-cheat-sheet/?ref=exponent-blog.ghost.io#linked-lists)
- [Hash Tables](https://www.aced.io/blog/software-engineer-interview-cheat-sheet/?ref=exponent-blog.ghost.io#hash-tables)
- [Graphs & Trees](https://www.aced.io/#graphs-&-trees)
- [Stacks & Queues](https://www.aced.io/blog/software-engineer-interview-cheat-sheet/?ref=exponent-blog.ghost.io#stacks-&-queues)
- [Sorting](https://www.aced.io/blog/software-engineer-interview-cheat-sheet/?ref=exponent-blog.ghost.io#sorting)
- [System Design Principles](https://www.aced.io/blog/software-engineer-interview-cheat-sheet/?ref=exponent-blog.ghost.io#system-design)
- [Load Balancers](https://www.aced.io/blog/software-engineer-interview-cheat-sheet/?ref=exponent-blog.ghost.io#what-are-load-balancers)
- [Time and Space Complexity](https://www.aced.io/blog/software-engineer-interview-cheat-sheet#time-and-space-complexity)
- Programming languages to use
- Coding-interview dos and don’ts
- Additional coding-interview practice questions

We also offer a [Software Engineering Interview Course](https://www.aced.io/courses/software-engineering?src=nav&ref=exponent-blog.ghost.io).

## Arrays

An **array** is an ordered list of data accessible through a numerical index. Engineers often allocate arrays up front as one block of memory sized for the required elements and data types. This lets programs read and write elements efficiently because each element’s location is known.

For interviews:

- Arrays are optimal for indexing, but less suitable for searching, inserting, and deleting.
- Linear arrays are the simplest array type.
- Dynamic arrays resemble one-dimensional arrays but reserve additional space for extra elements.

### Common array questions

- [Find Triplet with given sum in an array](https://www.aced.io/questions/1127/find-triplet-with-given-sum?ref=exponent-blog.ghost.io)
- [Find maximum product of two integers in an array](https://www.aced.io/questions/967/maximum-product-of-two-integers?ref=exponent-blog.ghost.io)
- [Move all zeros present in an array to the end.](https://www.aced.io/questions/968/move-zeros-to-end-array?ref=exponent-blog.ghost.io)
- [Sort a binary array in linear time.](https://www.aced.io/questions/971/sort-binary-array-linear-time?ref=exponent-blog.ghost.io)
- [Merge two sorted arrays.](https://www.aced.io/questions/966/merge-two-sorted-lists?ref=exponent-blog.ghost.io)
- [Given an unsorted array of integers, find a pair with the given sum in it.](https://www.aced.io/questions/1164/find-two-sum?ref=exponent-blog.ghost.io)
- [Partition an array into two sub-arrays with the same sum.](https://www.aced.io/questions/969/partition-array-equal-sum?ref=exponent-blog.ghost.io)

Additional resources:

- [Array Interview Questions in Java](https://medium.com/javarevisited/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0?ref=exponent-blog.ghost.io)
- [Technical Interview Cheat Sheet](https://gist.github.com/TSiege/cbb0507082bb18ff7e4b?ref=exponent-blog.ghost.io) by TSiege on GitHub

## Linked Lists

A linked list lets engineers insert or remove elements without reallocating or moving the other elements. Linked lists use nodes connected by [pointers](https://en.wikipedia.org/wiki/Pointer_\(computer_programming\)?ref=exponent-blog.ghost.io), rather than storing data in contiguous memory. They can serve as building blocks for more complex data structures.

Use linked lists when insertion or deletion matters, especially when the list size must remain flexible. Arrays are better for indexing, while hash tables are better for searching.

### Common linked-list questions

- [Merge K sorted linked lists](https://www.aced.io/questions/1167/merge-k-sorted-linked-lists?ref=exponent-blog.ghost.io)
- [Sort a Doubly Linked List using Merge Sort](https://www.aced.io/questions/1166/sort-doubly-linked-list-merge-sort?ref=exponent-blog.ghost.io)

## Hash Tables

Hash tables are key-value data structures designed for effective searching. They combine:

- Arrays
- Linked lists
- Hashing functions

A hashing function transforms a key into an array index so the value can be looked up efficiently. Hash tables are useful when you need constant-time lookup, insertion, or deletion, but they are not the best choice for storing sorted data.

Important points:

- Hash tables optimize searching, insertion, and deletion.
- A hash collision occurs when a hash function returns the same output for two different inputs; collisions are inherent in every hash.
- Hashes are important for [symbol tables](https://en.wikipedia.org/wiki/Associative_array?ref=exponent-blog.ghost.io) and database indexing.

Sets, objects, and dictionaries commonly use hash tables. Python provides dictionaries and sets; JavaScript provides objects and sets. Memory use varies substantially by language. A typical implementation uses a fixed-size array for the table and linked lists for stored data.

### Hash-table operations

- Insert key-value pairs
- Find a key’s value
- Update a key’s value
- Check whether a key is already used
- Iterate over key-value pairs
- Delete key-value pairs
- Search for values

### Common hash-table questions

- [Find the Most Common Words](https://www.aced.io/courses/software-engineering/swe-practice/most-common-words?ref=exponent-blog.ghost.io)
- [Find the Difference of Arrays](https://www.aced.io/courses/software-engineering/swe-practice/difference-of-arrays?ref=exponent-blog.ghost.io)
- [LRU Cache](https://www.aced.io/courses/software-engineering/swe-practice/lru-cache?ref=exponent-blog.ghost.io)

Additional resources include [hash tables from the Aced SWE team](https://www.aced.io/courses/swe-practice/hash-tables?ref=exponent-blog.ghost.io) and [common hash-table technical interview questions](https://www.quora.com/What-are-common-hash-table-questions-asked-in-a-technical-interview?ref=exponent-blog.ghost.io).

## Graphs & Trees

A graph consists of vertices connected by edges. Edges may be directed or undirected. For example, in a GPS application, roads can represent edges and intersections can represent vertices. Interview prompts often identify graphs directly or provide data consisting of vertices and edges.

A tree is a recursive data structure in which each node references zero or more child trees. Tree nodes can contain multiple pointers to child nodes, unlike linked-list nodes, which generally contain one pointer. Trees are technically a type of graph and are sometimes called directed acyclic graphs. [Breadth-first search and depth-first search](https://www.aced.io/courses/python-graphs-and-trees-practice/graph-search?ref=exponent-blog.ghost.io) are used with graphs and trees.

Key terms:

- **Leaf node:** A node without children.
- **Root node:** The topmost node, often the starting node supplied in an interview problem.
- **Height:** The distance between the root and the lowest leaf.
- **Subtree:** A node beneath the root together with all its children.

### Common graph and tree questions

- [Print left view of a binary tree.](https://www.aced.io/questions/1473/print-left-view-binary-tree?ref=exponent-blog.ghost.io)
- [Determine if given Binary Tree is a BST or not](https://www.aced.io/questions/1158/determine-binary-tree-bst?ref=exponent-blog.ghost.io)
- [Construct a Binary Tree from Ancestor Matrix](https://www.aced.io/questions/1159/construct-binary-tree-from-ancestor-matrix?ref=exponent-blog.ghost.io)
- [Check if two given binary trees are identical or not](https://www.aced.io/questions/1152/check-identical-binary-trees?ref=exponent-blog.ghost.io)
- [Find Lowest Common Ancestor (LCA) of two nodes in a binary tree](https://www.aced.io/questions/1156/lowest-common-ancestor-binary-tree?ref=exponent-blog.ghost.io)

## Stacks & Queues

Stacks and queues store lists of elements. A queue follows **first-in, first-out (FIFO)** behavior: the first element added is the first removed. A stack follows **last-in, first-out (LIFO)** behavior: the most recently added element is removed first. Stacks and queues are commonly implemented with arrays or linked lists and support many basic algorithms.

Use queues when items must be processed in arrival order, and stacks when items must be processed in reverse order. Common applications include graph searches, web crawlers, and application history.

Interview concepts include enqueuing, dequeuing, pushing, popping, iteration, peeking at the top, reversing a stack, and obtaining stack or queue size.

Practice:

- [Number of Islands](https://www.aced.io/courses/software-engineering/swe-practice/number-islands?ref=exponent-blog.ghost.io)
- [Reverse a Sentence](https://www.aced.io/courses/software-engineering/swe-practice/sentence-reverse?ref=exponent-blog.ghost.io)
- [Find the Shortest Cell Path](https://www.aced.io/courses/software-engineering/swe-practice/shortest-cell-path?ref=exponent-blog.ghost.io)

Learn more from Aced in [Stacks & Queues](https://www.aced.io/courses/swe-practice/stacks?ref=exponent-blog.ghost.io).

## Sorting

Sorting is fundamental to software engineering and technical interviews. An interviewer may provide sorted data and ask for a more efficient approach, give a problem that requires sorting, or require a sorting algorithm to manage the data.

| Algorithm | Characteristics |
|---|---|
| Insertion sort | Best for short lists; stable and in-place. |
| Quicksort | Often fastest in practice; can be in-place but is not stable. |
| Mergesort | Stable but not in-place. |
| Heap sort | In-place and has better worst-case runtime than quicksort. |

Learn more about [Sorting](https://www.aced.io/courses/algorithms/sorting-algorithms?ref=exponent-blog.ghost.io).

## System Design

The guide identifies five system-design fundamentals:

- **Scalability:** Handling increased traffic while remaining efficient.
- **Reliability:** Continuing to perform necessary functions, including in the face of user mistakes, while preventing unauthorized abuse or exploits.
- **Availability:** Performing necessary functions over time; expressed as uptime divided by total time.
- **Efficiency:** Functioning quickly.
- **Maintainability:** Remaining straightforward for other engineers to operate, modify, and maintain.

We also provide a [full guide to the system design interview](https://www.aced.io/blog/system-design-interview-guide?ref=exponent-blog.ghost.io).

### Load balancers

Load balancers distribute incoming traffic so a system can maximize total capacity and reduce queuing time. They become more important as a system scales. In an interview, consider a load balancer when the system needs additional capacity, particularly during growth. Load balancers are commonly placed between external traffic and application servers.

Learn more about [System Design](https://www.aced.io/courses/fundamentals-system-design/intro-system-design?ref=exponent-blog.ghost.io).

## Time and Space Complexity

Different solutions to the same coding problem can have different performance. **Time complexity** describes how long an algorithm takes as a function of input length. **Space complexity** describes how much memory it needs to process that input.

Further reading:

- [Time and Space Complexity Tutorial from Hacker Earth](https://www.hackerearth.com/practice/basic-programming/complexity-analysis/time-and-space-complexity/tutorial/?ref=exponent-blog.ghost.io)
- [Big O Cheat Sheet](https://www.bigocheatsheet.com/?ref=exponent-blog.ghost.io)

## Choosing a programming language

Use the language you know thoroughly. Dynamic languages such as JavaScript, Ruby, and Python are common in interviews because they offer compact syntax, fast typing, and hash and list literals. Tell the interviewer about other languages in which you are fluent.

Experience with lower-level languages such as C, C++, Rust, or Go can help distinguish candidates. We recommend avoiding Java, C#, and PHP for interviews; the guide cites Triplebyte’s observation that candidates using those languages advanced at lower rates. Continue demonstrating adaptability by discussing languages you know well and projects built with them.

## What to do during the interview

- Use clean, understandable code and identifiable variable names.
- Do not type so quickly that the interviewer cannot follow your work.
- Ask whether you may use trivial functions to save time.
- Clarify anything you do not understand.
- Manage whiteboard space clearly and demonstrate that you have considered multiple scenarios.

## What not to do

- Do not copy and paste code without discussing it; variables may need renaming or other changes.
- Do not ignore hints from the interviewer.
- Do not remain silent: explain your reasoning aloud.
- Do not use strange or obscure variable names.
- Do not keep this cheat sheet open in another tab during the interview.

## After the interview

1. Thank the interviewer.
2. Ask whether they have questions about your project or technical decisions.
3. Ask what to expect next in the process, or review our company interview guides before starting.
4. Send a follow-up thank-you email.
5. If you do not receive an offer, ask whether the interviewer can share objective feedback.

## Additional coding-interview practice questions

- Design a fire alarm for the deaf.
- Write functions to serialize and deserialize a list of strings.
- Store a list of numbers as a single number.
- Given an `n x n` grid of 1s and 0s, return the number of islands.
- Merge K sorted linked lists.
- Find a triplet with a given sum in an array (3-sum).
- Explain how an HTTP request works.
- Sort a binary array in linear time.

Browse more [Software Engineering Interview Questions](https://www.aced.io/questions?page=1&role=swe&ref=exponent-blog.ghost.io).

## Software Engineering resources from Aced

We offer:

- Sample Software Engineer [interview questions](https://www.aced.io/questions?role=swe&ref=exponent-blog.ghost.io)
- Software Engineering [interview guides](https://www.aced.io/guides?role=software-engineering&ref=exponent-blog.ghost.io)
- An [interview practice tool](https://www.aced.io/practice?ref=exponent-blog.ghost.io) for behavioral and interpersonal practice
- A complete Software Engineering [interview course](https://www.aced.io/courses/software-engineering?src=nav&ref=exponent-blog.ghost.io)

### Browse questions and coaching

- [Browse software engineer interview questions](https://www.aced.io/questions?role=swe&src=blog): review recently asked questions and answers from real candidates.
- [Book time with a Software Engineer coach](https://www.aced.io/coaching?role=swe): mock interviews, career coaching, and resume review.
- [Browse coaches](https://www.aced.io/coaching?role=swe&src=blog).

We list a **96% rating from 5,400 reviews**.

[Create your free account](https://www.aced.io/signup?src=blog).

## Related courses

### [Software Engineering Interview Prep Course](https://www.aced.io/courses/software-engineering)

![Software Engineering Interview Prep Course](https://images.ctfassets.net/x78yjrjc11pq/4VkuYewBHUFIVUS5oJDW5h/02e833439b1289f25f38f13f81cbdca3/adobe_stock_optimized.jpeg?w=800&h=800)

**5 courses · 41,700 students**. Prepare for software engineering roles at Google, Amazon, Microsoft, Meta, Apple, and other top companies with mock interviews, frameworks, senior-candidate advice, data structures, algorithms, system design, people management, behavioral interviews, and more.

### [Amazon Software Development Engineer (SDE) Interview Course](https://www.aced.io/courses/amazon-sde-interview)

![Amazon Software Development Engineer (SDE) Interview Course](https://images.ctfassets.net/x78yjrjc11pq/13J85L9SUOG04YlmBQO22r/60eb5015cca36c6a178bbc0eb148571d/amazon_318003089b.png?w=800&h=800)

**5 courses · 4,600 students**. Prepare data structures, algorithms, and system-design principles with detailed questions and mock interviews focused on Amazon’s leadership principles.

## Related blog posts

- ![How to Ace a Code Review Interview](https://storage.ghost.io/c/a5/f5/a5f5c2f0-4c62-43c7-891b-662a0b6d68b3/content/images/pmlesson/2021/12/abstract-logged-out.png) [How to Ace a Code Review Interview](https://www.aced.io/blog/how-to-ace-a-code-review) — a month ago · 8 min read
- ![How 12 Top Tech Companies Interview Software Engineers](https://storage.ghost.io/c/a5/f5/a5f5c2f0-4c62-43c7-891b-662a0b6d68b3/content/images/pmlesson/2021/11/Screenshot-2021-11-17-at-15-31-13--style-Business-deal-images-in-PNG-and-SVG-Icons8-Illustrations.png) [How 12 Top Tech Companies Interview Software Engineers](https://www.aced.io/blog/how-top-tech-companies-interview-software-engineers) — a month ago · 12 min read
- ![The Top 30 Engineering Manager Interview Questions of 2022](https://storage.ghost.io/c/a5/f5/a5f5c2f0-4c62-43c7-891b-662a0b6d68b3/content/images/pmlesson/2021/10/abstract-1282.png) [The Top 30 Engineering Manager Interview Questions of 2022](https://www.aced.io/blog/top-30-engineering-manager-interview-questions) — a month ago · 8 min read
- ![System Design Interview Prep: CDNs](https://storage.ghost.io/c/a5/f5/a5f5c2f0-4c62-43c7-891b-662a0b6d68b3/content/images/pmlesson/2021/04/nasa-Q1p7bh3SHj8-unsplash-1.jpg) [System Design Interview Prep: CDNs](https://www.aced.io/blog/cdns-content-delivery-networks) — a month ago · 5 min read

---

[Read this page’s summary](https://www.aced.io/agents/api/public/v1/page-tldr?url=https%3A%2F%2Fwww.aced.io%2Fblog%2Fsoftware-engineer-interview-cheat-sheet&trace=t_679ff9ab98f3)

## Ask a follow-up about this page

Need a more specific answer? Ask the exact question you have. It returns a fresh, cited answer from Aced (formerly Exponent)’s knowledge base. No account or API key required.

Open this URL with your own question, URL-encoded. Include your question in q. All research inputs are optional; no account or setup.

`GET https://www.aced.io/agents/agent/faq?q={question}&trace=t_679ff9ab98f3`

[Tool guide and examples](https://www.aced.io/agents/agent-access) · [OpenAPI](https://www.aced.io/agents/api/public/v1/openapi.json) · [Page TLDR form](https://www.aced.io/agents/agent-tools/page-tldr?url=https%3A%2F%2Fwww.aced.io%2Fblog%2Fsoftware-engineer-interview-cheat-sheet). Opening a form does not execute a tool.