TRI NGUYEN
Senior Fullstack Developer
PREVIOUSLY AT

Flexiple spent good amount of time understanding our requirements, resulting in accurate recommendations and quick ramp up by quality developers.
Overall Flexiple brought in high-level of transparency with quick turnarounds in the hiring process at a significantly lower cost than any alternate options.
Flexiple has been instrumental in helping us grow at a fast pace. Their vetting process for engineers is top notch and they connected us with quality talent quickly.
Flexiple Developers are reviewed on their experience and complexity of products built. Those who display depth and have worked on end-to-end projects are given an introductory call.
Over a call, the developer’s ability to communicate in an articulate manner is tested. A deeper understanding of the candidate’s technical experience and also motivation to freelance is achieved.
Over one or more F2F interviews, the developer’s involvement and performance in building complex software products are assessed. This sets the platform to delve deeper into technology-specific discussions.
Developers' mental agility and problem-solving abilities are tested through a coding test involving algorithmic as well as skill-specific problems. A mixture of live evaluation and timed coding tests is used.
The live experience of working with developers is verified by reaching out to past clients and/or employers. Inputs on various qualitative factors such as reliability, punctuality, communication and responsiveness are received.
Performance during each engagement is continually assessed. Our developers are expected to maintain Flexiple standards across all engagements with our customers.
The concept of Full stack development has existed since the beginning of programming, but the meaning of the term in its current context is not the same as it was before. The current definition of full stack development only came to light in 2008, when both web and mobile development became mainstream. Back then, there was no difference in programmers as such.
A programmer was responsible for handling both hardware and software end of operations.
Over time, the distinction between both ideologies grew, and two different streams of application came into the picture, frontend and backend development. Full stack gained momentum in 2008 and has now become one of the most in-demand job roles.
If you’re looking for a freelance full stack developer, this guide will come in handy. We’ve included everything you need to know about hiring a freelance full stack developer.
We have broken the sections into the following parts:
1. So what is full stack programming?
2. Why is full Stack development widespread?
3. What are the tools used by full stack developers?
4. Writing the Job Description to hire a full stack developer
5. Interview Questions for hiring a full stack developer
- Basic Questions
- Advanced Questions
- Data Structures/Algo Questions
Fullstack developers make use of a broad range of tools. Some of these are as follows:
1. Fullstack development IDE - VSCode
Visual Studio Code or VSCode has been rated as one of the best JavaScript IDEs available for development. It has in-built support for JS languages as well as extensions for other programming languages like Python, PHP, and C#.
2. API Testing - Postman
Postman is a reliable API testing tool that makes of easy-to-use configuration. It is particularly great for REST API testing.
3. CI/CD - Jenkins
This is an open-source automation software tool. Fullstack developers as well as others alike use this tool for building, testing, and deploying their apps. Getting familiar with the Jenkins pipeline is quite crucial for fullstack developers.
4. Version Control - GitBash
GitBash allows for easy source control management. The tool uses versioning and commit history to make the code management process simpler.
Below are some key points that we at Flexiple have learned through trial and error - a process of filtering through over 15,000 developers.
Now that you have made a quality JD, it can still be tricky to evaluate the skills of your applicants. To help you with that, we have created a pool of questions that a good Full Stack developer should be comfortable with.
It is important to note that the ability to answer these questions doesn't imply that you have a top quality candidate. But it definitely is a big step in that direction.
To help you navigate through these questions, we’ve categorized the interview questions in 3 parts:
A. Basic concepts: Includes all basic concepts used across languages. This section will give you an understanding of how strong their programming foundation is.
B. Advanced concepts: Includes all concepts that someone with higher expertise should know.
C. DS/Algorithm questions: To test the logical capability of the candidate.
Observables are used to pass messages between various parts of your Angular application. Observables are declarative and are used to deliver multiple values of any type.
Observables are commonly used in asynchronous programming and to handle multiple values.
A few noteworthy advantages of using MySQL are
This Maven plugin provides Spring Boot support to Apache Maven. This allows users to create and package an executable jar or war archives. It also allows you to start your application before running integration tests.
To add the plugin to your project, add this XML code in the plugin section in your pom.xml as shown below.
The following code can be used to configure a MySQL database and is the answer to the aforementioned Spring Boot interview question:
<project> <modelVersion>4.0.0</modelVersion> <artifactId>getting-started</artifactId> <!-- ... --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Cache-control headers help attain caching ability and are also used to control caching.
The most commonly used cache-control headers are:
class ValidParenthesesFunc { func isValid(_ s: String) -> Bool { var stk = [Character]() for char in s { if char == "(" || char == "[" || char == "{" { stk .append(char) } else if char == ")" { guard stk.count != 0 && stk.removeLast() == "(" else { return false } } else if char == "]" { guard stk.count != 0 && stk.removeLast() == "[" else { return false } } else if char == "}" { guard stk.count != 0 && stk.removeLast() == "{" else { return false } } } return stk.isEmpty } }
The above code will input 0(false).
function palindrome(myString){ var removeChar = myString.replace(/[^A-Z0-9]/ig, "").toLowerCase(); var checkPalindrome = removeChar.split('').reverse().join(''); if(removeChar === checkPalindrome){ document.write("<div>"+ myString + " is a Palindrome<div>"); }else{ document.write("<div>" + myString + " is not a Palindrome <div>"); } } palindrome('"Madam"') palindrome('"Star Wars"') palindrome('"7,10,7,8,9"')
The output of the above code will be: "Madam" is a Palindrome "Star Wars" is not a Palindrome. "7,10,7,8,9" is not a Palindrome.
var x = 10; var y = 5; var z = 3; if (x / y / z) document.write("hi"); else document.write("hello");
The answer is A, the floating-point division in JS returns a non zero value = 0.66 which evaluates to true and outputs ‘hi’.