Are you going to apply for a software developer’s job at a large tech company and wondering what questions to expect during your technical interview? We have insiders in Top 10 IT companies globally and would like to share with you how they conduct tech interviews with candidates.
While only the interviewer knows the scenario of a technical interview and it can be different in each company, there’re still some common scenarios to keep in mind when getting ready for the interview.
The goal of this article is to focus on the basics and make your tech interview preparation more structured and therefore effective. So what do large IT companies typically ask candidates during the tech interview?
Technical interview: knowledge of OOP
Start with three whales: encapsulation, inheritance, and polymorphism. Further down the SOLID list – principles, rules, settings, a guide to action – whatever you want, but here it should bounce off the teeth. Here is a short guide to the five main principles of object-oriented programming (OOP).
S – The Single Responsibility Principle
Each object should have a single responsibility. If you are writing for an online store, you must have your own class for filling the array, own class for calculating the discount, etc.
O – The Open Closed Principle
Changes to the program should occur when writing new code, not modifying old code.
L – The Liskov Substitution Principle
Objects in the program can be replaced by their heirs without changing the program properties.
I – The Interface Segregation Principle
Many interfaces are better than a universal one.
D – The Dependency Inversion Principle
This principle addresses the hierarchy of dependencies of abstractions and details.
Also, you need to carefully review structures, data types, access modifiers, and garbage collectors. Be sure you don’t have any syntax problems, and try to keep your code clear and readable. Well, and finally, who is an object?
Technical Interview: Design Patterns
They allow you to highlight common problems (remember about SOLID), give them a name and tell you what to do about it – cool, right? Therefore, your technological arsenal should have several well-known, in-demand instances: singleton, adapter, decorator, bridge, observer, abstract factory, builder, etc. You can briefly go over the anti-patterns – nice and useful.
What about frameworks?
If patterns are knowledge and experience, then frameworks are a tool for implementing patterns.
Multithreading, asynchrony within applications. Here we understand what a thread, a queue, a task are, how they work within the framework of asynchrony and multithreading, do not forget to go down to the physical level and see what happens on the chip, how the processor processes it. There is a serial queue in which tasks are executed sequentially (here tasks leave the queue in exactly the same order in which they entered for execution) and a parallel (concurrent) queue in which tasks are executed in parallel (several processes at one moment time).
We don’t recommend going too far, but sorts and KMP shouldn’t scare you. We urge you to devote time to this section, as such questions cannot be avoided in large companies.
How does memory work?
It is necessary to know what is happening outside the software shell in which you are used to working. What for? To be able to manage it: save computing resources of the machine and the user’s time. Remember the stack and the managed heap (memory partitions), strong and weak links. In short, the stack is fast memory, providing fast event processing and controlled by the processor, but limited in size, due to which its performance is achieved. The managed heap is limited only by physical memory, but not as fast.
Regarding references: strong references are created in memory and do not allow the garbage collector to delete the object while it is in use, while weak references do. Also read about caches and virtual memory, and most importantly, how to use all this to optimize product performance.
It is clear that the requirements for everyone are different. They mostly depend on the position you are applying for. If you are a junior trainee, you need to be able to write code inside the class and know OOP. Remember that your top quality should be the ability to learn and the desire to develop! Take a technical interview with a mid-level developer – you can omit multithreading and asynchrony, plus some patterns from our list. Senior developer’s candidate should be able to work with all of the above: not only the quality of the code is important, but also its performance.
Finally, remember that often in a technical interview they try to reveal not only theoretical knowledge and practical skills, but also look at how you approach solving non-standard problems, and also try to learn about your life outside the office chair.
So the tricky question is: who is John Gault?
Stay tuned with Software Focus!