(please note this is not an exhaustive list, but a good starting point I used to prep for my product manager interviews)
- General CS Competency (know-how of how it works)
- Algorithms and data structures (how would you solve a problem in the most optimal way)
- Systems Design (how would you architect an app or feature)
- Prioritization (how would you choose what to build)
- Your Current Product (be able to describe your tech stack and its design)
Hardware has three major components, CPU, Memory, and Storage. Operating systems bridge between the hardware and application layer on top. Each computer or server can communicate with other servers, i.e. networking. As this occurs, the need for data to transfer efficiently and securely becomes even more critical.
- History of Silicon Valley, the integrated circuit
- CPU
- Main Memory
- Storage
- Networking
- Input/Output
- Operating Systems
- Bits and Bytes
- Digital Images
- Analog vs. Digital
- Computer Security
- Text, Image, Audio, and Video Compression
- Many online coding bootcamps offer great intro classes, Python and SQL are great languages to learn as a PM since much of your work will require data analysis
- I took/am taking the following classes at Cal Poly to build up my CS foundation:
- CPE 101 (Python)
- BUS 392 (Java)
- BUS 393 (SQL)
- CodePath Software Engineering Technical Interview Bootcamp
- Computer Networking
- How the web works
- Anatomy of a URL
- DNS
- HTTP
- Routing and TCP/IP
- Web servers
- Web browser
- HTML
- CSS
- JavaScript
For each algorithm, you should know how they work, what their space-time efficiency is, (i.e. Big O) and how to optimize them
- Linear Search, Binary Search
- Selection Sort, Bubble Sort, Insertion Sort, Merge Sort, Heap Sort, QuickSort
- Array, Linked list, Stack, Queue, Binary Tree, Binary Search Tree, Heap, Hashing, Graph
- SQL or NoSQL (non-relational)
System design questions are very relevant for Product Managers who often need to consider tradeoffs with the engineering team when designing the system, especially as it scales. Here are some topics you should become familiar with as well as know-how to design popular apps.
- Redundancy and Replication, Load Balancing, Caching, Consistent Hashing, Long-Polling vs, WebSockets
- Dropbox, Yelp, Uber, Facebook Newsfeed, Netflix, YouTube, Facebook Messenger/WhatsApp, Twitter Search
- It's helpful to know framworks like RICE or MECE (https://www.intercom.com/blog/rice-simple-prioritization-for-product-managers/)
Make sure you can explain all the fundamental concepts verbally. Practice this with a mock partner. For system design and many technical concepts, it is also essential to draw out the response in a structured manner on a whiteboard. This will ensure your interviewer can follow you and understand your logic.