What is a Full-Stack Developer?
A full-stack developer is simply someone who is familiar with all layers in computer software development. Although, some may argue and would say that -stack developers aren't experts at everything, or they simply have a functional knowledge and ability to take a concept and turn it into a finished product. We can't deny the fact, that building software with these developers is much easier as they understand how everything works from top to bottom and can anticipate problems accordingly.
It takes years of work experience in different languages, roles, and industries to reach this level of qualification. Just a decade ago, knowing Python, PHP and some HTML would be enough to call someone a full stack dev. But not anymore. Today it involves more areas and more technologies to be able to work with. A full-stack developer should have the following skills:
CSS preprocessors like Sass or LESS
Libraries like jQuery or Backbone.js
Front-end (CSS) frameworks like Foundation or Bootstrap
API design and development
CRUD (Create, Read, Update, Delete)
Database technologies like MySQL, Oracle, PostgreSQL, and MongoDB.
Web server technologies like Node.js, J2EE, Apache, Nginx, ISS, etc.
Frameworks related to their server-side language of choice like: Express.js, Ruby on Rails, CakePHP, etc.
Full stack engineering interviews consist primarily of technical questions. Because full stack developers work with both back-end and front-end code, you should be comfortable asking a variety of languages ranging from databases and web servers to HMTL and UI implementation. Here are the example questions and answers:
What is polymorphism?
Variable of type Shape could refer to an object of type Square, Circle... The ability of a function to handle objects of many types.
What is encapsulation?
It is a process of packing of data and functions into a single component.
What is an inversion of control?
A design in which custom-written portions of a computer program receive the flow of control from a generic, reusable library.
What is tail recursion?
A tail call is a subroutine call performed as the final act of a procedure.
What is dynamic binding?
It is the actual method implementation invoked is determined at runtime based on the class of the object, not the type of the variable or expression.