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!
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|
|Divide and Conquer|
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.