The Technical Interview

Practice practice practice

Jordan Chou

What is the technical interview?

A technical interview involves the assessment of your technical knowledge, abilities, and, your thought-process when you're solving problems.

A techncial interview can be a coding interview which involves solving a problem that the interviewer gives you, or it can be a programming interview where you answer theory questions or it could be a language specific interview which involves questions about a programming language you claim to know, e.g. "How do you achieve concurrency in Java?" or it could be a combination of all three!

Study Areas

It's always tempting to study material from all of your units but sometimes not all of the content is applicable. I suggest that you focus on a few key study areas and expand from them once you feel ready.

Data Structures (COMP1002) Operating Systems (COMP2003) Networking (CNCO2000) Algorithms (COMP3001) Security
Linked Lists (double ended, doubly linked etc.) Multithreading and Multiprocessing OSI Model Complexity Analysis (Big-O notation) SQL Injections
Stacks and Queues Concurrency (deadlock, starvation, critical) TCP IP Search algorithms (linear, binary etc.) XSS
Hash Tables Memory organisation TCP vs. UDP Tree/graph traversals General web security
Priority Queues, Heaps HTTP Breadth First Search, Depth First Search Common exploits
Trees (binary search etc.) TCP Handshakes Rabin-Karp
Dijkstra's Algorithm
Prim's Algorithm
Divide and Conquer
Dynamic Programming

You should also know one or two languages that you can write code in. This means understanding how to use standard libraries, knowing how to do I/O (console and file). You should also look at doing common things such as database connections and concurrency in your language of choice.



You must practise, you should go through different online resources. Many people have compiled or collated documents that intend to be a one stop resource for technical interviews. For physical resource the "Cracking the Coding Interview" I found to be helpful. It can also be good to practise things on HackerRank and Leetcode to get used to a time-pressured coding environment.

You should also be prepared with your previous projects and the different technology stacks that you used for them. If you can, try and justify why you chose certain technology stacks to go with your projects, i.e. I wanted to try out Python so I decided to use it for this project, or I really wanted to utilise libraries such as PyTorch and Tensor Flow, so I decided on Python. Always try and justify your decisions.