But the Dark Side and the Light Side have been at war for ages. The time is now for the “Catalyst” to come and bring balance to the Force. This Catalyst is a master of both the ways of the Jedi and the Dark Side and has great knowledge of both front-end and back-end. He is the only one who can bring all stacks together. Together, we hunt for the one, the one who can accomplish more than most.
As we move ahead to finish our series, we just want to take a minute to talk how the modern day full-stack developer (read Anakin) has evolved from being a mere LAMP to a full-fledged MEAN+AWS+Data Scientist role. With the boom of the startup culture, more and more firms want superheroes who can do more than one things at once, and that is where the Full-Stack developer comes in. This position belongs to someone with the skills and the ability to envision something large, scalable and robust while working with strict deadlines and limited resources. This is someone who doesn’t necessarily have to do everything but should have a clear understanding of how everything works.
So we put together our checklist of not the questions you should ask your next Full-Stack Interviewee, but rather what topics you should approach in the interview. Just as in our Back-End Developer article in the series, we are going to give you the areas which you can touch in the interview.
1. Getting started with Architecture
Writing an amazing application is good. But if your full-stack developer cannot envision the entire structure for that, where to put files, where to host them, the structure of the database and how to perform computational tasks and much more, they are basically walking into a fight with a blindfold on their eyes. There will be hundreds of people with the required knowledge of front-end and back-end technologies combined, but the current day Full-Stack is much more. One supposed to work on an application needs to know how to do it and do it right at that.
Here are the topics under Architecture we believe you should be checking:
- Design Principles
- Design Patterns
Here are a few questions on the above-mentioned topics to help get you started:
- What is the difference between 3 tier architecture and 3 layer architecture?
- What is uniform access principle?
2. Web Development and its role in full-stack
Full-Stack or not, web development is a must these days for any developer. With more of the world moving online, the relationship and the lines between back-end developers and databases and server handling are dwindling by the minute. Front-End developers have to work on the web by default. So it can be safely confirmed that a majority of the job descriptions out there go with a default- “I understand that you know how web development works”.
This is even more so in the case of a Full-Stack developer. You expect them to know how the web development and its protocols work.
To help you with that, we put together a few segments that fall under Web Development where you can ask questions from. We have even added a question or two for each segment.
- Security/ Protocols– What is HTTP Strict Transport Security (HSTS)?
- Cookies and sessions– What is a session and persistent cookies, sessionStorage and localStorage?
- APIs– How would you design an API where there’s a lot of data to be returned or data that could take a while to generate?
- Given a log file where some lines contain 2 connected events, how would you find all groups of related events?
- How would you make an application testable, where it has complex client-side logic?
- What are REST APIs?
3. The Database connection
Data runs the world. And for someone who runs your entire application, this data is technically the world. When finalizing the architecture, the first thing that is usually paid attention to is the structure of the database and how it would be based and connected. After choosing the type of database, there are a few other things that define the size and scale of the application and every Full-Stack developer should know these things out-and-out.
- SQL– Questions about joins
- Transactions– What is the importance of ACID Transactions?
- Scalability – What different kinds of methods are available to scale a database?
- Load Balancing– Sticky sessions vs storing sessions in Redis.
4. Cloud- where everything lives
Cloud! It is where all of IT is right now. Would be a real shame if you had to find someone who was amazing with all the groundwork only to know that you needed another engineer to come and deploy and continually take care of things on the cloud, where you entire systems will eventually be. SaaS and PaaS are rapidly growing models and the chances that you are working on one are very high. So it is imperative that you also quiz your next all-rounder on a little bit of Cloud skills.
- Distributed Computing– What is map-reduce?
5. Say no to downtime with Concurrency
The code your developer writes belongs to an application. There will be thousands of threads running simultaneously, with another thousand requests coming in each second. All of this requires careful management so that the resources are allocated properly without leading to a breakdown of your systems.
So get in there asking some of the below questions to ensure that you’re getting someone who knows how to run things smoothly with proper distribution and channelling. This is basically an essential part of what is called Test Driven Development.
- What is a deadlock?
- What is livelock?
- How do you explain starvation?
- What is Race Condition?
- What is a thread-safe function?
6. Staying connected with Networking
Network– Imagine if you had to make an application that never has to be updated or connect to the internet? Sounds like a far cry from reality, right? Exactly, and that is because the entire world is connected via the web. What do you need your Full-Stack “chosen one” to handle in this regard? Well, pretty much everything.
Starting from Operating Systems on which the server is running, down to organizing Virtual Memory and Deploying and Integrating with various services continuously. EVERYTHING. Knowledge of these tools is paramount in staying to-date with the latest technologies and making changes that reflect immediately. Rather than taking a sweet few hours.
- OS– What is the difference between a thread and a process?
- Explain the OSI Model
- Congestion in TCP
- Virtual memory organization
- DevOps– Questions on Docker, A/B Testing
7. Programming Languages and their importance
- Java– Framework and library-based questions- Servlets, Spring, Hibernate
- Python– Questions about Flask and Django.
8. GIT and the importance of version control
Version Control is an indispensable part of any project these days. Unless you want to go on a “RAMBO” mode with a single developer doing everything. The thrills may be satisfying but the results won’t be so much. What we want to tell you, is that collaborating and contributing to a given application is a vital element, especially when teams are spread across the globe these days.
GIT allows you that flexibility, allowing your team to collaborate, backup, and deploy code from any part of the world. And do it with ease.
- Questions on GIT Workflow
- What is a Rebase?
9. QA – Testing
Any application is only as good the limits to which one can push it. If you build an application that crashes at the first sign of traffic, then there is no point in it. Likewise, you have to ensure that there is a constant testing throughout the production phase. Without constant testing and checking, the number of bugs becomes insurmountable and eventually become too much to handle. Here is our pick of questions that any Full-Stack developer should be able to handle with ease.
- What are the differences between a stub and mock?
- How to test multithreading code?
10. Securing your applications and data
Any application is only as good as its security. That being that, it’s not as simple as buying a lock and securing it. Wish it were, but unfortunately, goes way further than that. And for a good reason. We expect every application to be robust and secure from all possible cyber attacks.
- Public Key Cryptography
- Encryption Algorithms
We tried to cover the most general areas that you can make use of, for your next interview. Please do keep in mind that you will have to mould these topics based on your team’s strengths and requirements. In case you do need some help in finding the right people to interview, do give us a shout-out at [email protected]
Note: If you want to be notified about similar posts in the future, make sure you subscribe to our newsletter. We only mail you once a week. Happy Star Wars Weekend.
May the force be with you