VLADISLAV POZNIAK
Senior Web 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.
Web Development is the designing, creating and maintaining web applications or web pages for the internet, or an intranet. It has a vast scope ranging from web designing, web programming to database management. There are a wide variety of tools used by developers to carry out different tasks in the world of web development.
If you’re looking for a freelance web developer, this guide will come in handy. We’ve included everything you need to know about hiring a freelance Web developer.
We have broken the sections into the following parts:
1. Let's introduce Web development to you.
2. Why is Web development widespread?
3. What are the tools used by Web developers?
4. Writing the Job Description to hire a freelance Web developer
5. Interview Questions for hiring a Web developer
- Basic Questions
- Advanced Questions
- Data Structures/Algo Questions
The following are some of the tools used by Web developers at various stages of development:
1. Chrome DevTools
Chrome DevTools is a set of web authoring and debugging tools built directly into the Google Chrome browser. It allows a developer to create, test and debug software.
2. Lighthouse
Google Lighthouse is an open-source, automated tool for measuring and improving the quality of web pages. It has audits for performance, accessibility, progressive web apps, SEO, and more.
3. Sketch
The sketch is the all-in-one platform for digital design. Its main usage is UI and UX Design for mobile, web, desktop, and wearables. It is vector-based, thanks to this, all graphics are easily scalable.
4. Adobe Experience Manager
Adobe Experience Manager (AEM) is a content management solution for building websites. It makes it easy to manage the developer's marketing content and assets.
5. Sublime Text
Sublime is a cross-platform text editor for code, markup, and prose with tons of plugins. It supports many programming and markup languages.
6. Figma
Figma is a cloud-based vector graphics editor tool that helps developers to create anything: websites, applications, logos, and much more.
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 Web developer should be comfortable with. You can check out some interview questions related to web development here.
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 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.
-g Flag
While installing npm modules using “npm install”, some of them are installed with a “-g” flag. This stands for global. Generally, an npm module is saved in your local project folder or repository, but in certain cases when we want to save it globally the “-g” flag is used.nodemon : The term 'nodemon' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + nodemon node app.js + ~~~~~~~ + CategoryInfo : ObjectNotFound: (nodemon:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
[nodemon] 2.0.5 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node node app.js` server is up [nodemon] clean exit - waiting for changes before restart
--save-dev Flag
By default, npm packages which are installed are saved in node_modules as project dependencies. When someone is trying to clone or recreate your project, they would have to download your project’s dependencies. To do this “npm install” is run and all the dependencies which are listed in the package.json are installed."dependencies": { "jest": "^26.5.3" }, "devDependencies": {}
"dependencies": {}, "devDependencies": { "jest": "^26.5.3" }
{ "flexiple": { "top": "1%", "location": "remote" }, "blog": { "topic": "engineering", "title": "What are stable coins and how do they work?" } }
<?xml version="1.0" encoding="UTF-8"?> <root> <blog> <title>What are stable coins and how do they work?</title> <topic>engineering</topic> </blog> <flexiple> <location>"remote"</location> <top>1%</top> </flexiple> </root>
Valid JSON
Few of the rules to remember while handling JSON are that:{"name":"John Doe","age":32,"title":"Vice President of JavaScript"} ["one", "two", "three"] // nesting valid values is okay {"names": ["John Doe", "Jane Doe"] } [ { "name": "John Doe"}, {"name": "Jane Doe"} ] {} // empty hash [] // empty list null { "key": "\uFDD0" } // unicode escape codes
{ name: "John Doe", 'age': 32 } // name and age should be in double quotes [32, 64, 128, 0xFFF] // hex numbers are not allowed { "name": "John Doe", "age": undefined } // undefined is an invalid value // functions and dates are not allowed { "name": "John Doe", "birthday": new Date('Fri, 26 Jan 2019 07:13:10 GMT'), "getName": function() { return this.name; } }
JSON.stringify()
It takes a Javascript object or array as input and returns a serialised string form of it.const obj = { name: "Flexiple", city: "Bengaluru" } const jsonStr = JSON.stringify(obj) console.log(jsonStr) // output is {"name":"Flexiple","city":"Bengaluru"}
let cost = { candy: 5, bread: 20, cheese: 100, milk: 15 } let func = (key, value) => { if (value < 15) { return undefined } return value } let arr = ['candy', 'bread'] let jsonStrWithFunc = JSON.stringify(cost, func) console.log(jsonStrWithFunc) // Output is {"bread":20,"cheese":100,"milk":15} let jsonStrWithArr = JSON.stringify(cost, arr) console.log(jsonStrWithArr) // Output is {"candy":5,"bread":20}
let cost = { candy: 5, bread: 20, cheese: 100, milk: 15 } let jsonStrWithNum = JSON.stringify(cost, null, 2) console.log(jsonStrWithNum) // Output is // { // "candy": 5, // "bread": 20, // "cheese": 100, // "milk": 15 // } let jsonStrWithStr = JSON.stringify(cost, null, 'xx') console.log(jsonStrWithStr) // Output is // { // xx"candy": 5, // xx"bread": 20, // xx"cheese": 100, // xx"milk": 15 // }
const obj = { "nest1": { "ex": "ex", "nest2": { "nest3": { "ex": "ex", } } } } console.log(obj) // Output is { nest1: { ex: 'ex', nest2: { nest3: [Object] } } }
const obj = { "nest1": { "ex": "ex", "nest2": { "nest3": { "ex": "ex", } } } } console.log(JSON.stringify(obj,null,2)) // Output is // { // "nest1": { // "ex": "ex", // "nest2": { // "nest3": { // "ex": "ex" // } // } // } // }
JSON.parse()
It takes a JSON string and converts it into its respective data structureconst jsonStr = '{"name":"Flexiple","city":"Bengaluru"}' const obj = JSON.parse(jsonStr) console.log(obj) // output is { name: 'Flexiple', city: 'Bengaluru' }
Cloning Objects in Javascript
These 2 functions of JSON can be used together to clone javascript objects.const obj = { "prop1": { "ex": "ex", "prop2": { "ex": "ex" } } } const objCopy = JSON.parse(JSON.stringify(obj)) console.log(objCopy) // Output is { prop1: { ex: 'ex', prop2: { ex: 'ex' } } }
ESLint
ESLint is one the most popular lints available for Javascript. Let us go into the basics of using ESLint. This is going to the most basic version of ESLint, remember you can install it with different code style plugins as per your choice.√ How would you like to use ESLint? · style √ What type of modules does your project use? · commonjs √ Which framework does your project use? · none √ Does your project use TypeScript? · No / Yes √ Where does your code run? · node √ How would you like to define a style for your project? · guide √ Which style guide do you want to follow? · standard √ What format do you want your config file to be in? · JSON
const obj = { "prop1": { "ex": "ex", "prop2": { "ex": "ex" } } } const objCopy = JSON.parse(JSON.stringify(obj)) console.log(objCopy)
2:1 error Expected indentation of 2 spaces but found 4 indent 2:5 error Strings must use singlequote quotes 2:5 error Unnecessarily quoted property 'prop1' found quote-props 3:1 error Expected indentation of 4 spaces but found 8 indent 3:9 error Unnecessarily quoted property 'ex' found quote-props 3:9 error Strings must use singlequote quotes 3:15 error Strings must use singlequote quotes 4:1 error Expected indentation of 4 spaces but found 8 indent 4:9 error Strings must use singlequote quotes 4:9 error Unnecessarily quoted property 'prop2' found quote-props 5:1 error Expected indentation of 6 spaces but found 12 indent 5:13 error Strings must use singlequote quotes 5:13 error Unnecessarily quoted property 'ex' found quote-props 5:19 error Strings must use singlequote quotes 6:1 error Expected indentation of 4 spaces but found 8 indent 7:1 error Expected indentation of 2 spaces but found 4 indent 11:1 error Trailing spaces not allowed no-trailing-spaces 12:21 error Newline required at end of file but not found eol-last ✖ 18 problems (18 errors, 0 warnings) 18 errors and 0 warnings potentially fixable with the `--fix` option.
const obj = { prop1: { ex: 'ex', prop2: { ex: 'ex' } } } const objCopy = JSON.parse(JSON.stringify(obj)) console.log(objCopy)
For example, let’s assume that the front end is hosted on https://a-domain.com and the backend on https://b-domain.com. In such a case, if the front end makes a GET request to https://b-domain.com/posts, it will receive the following error in the console:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://b-domain.com
// declaring app to use express framework let app = express() // this is using wildcard character app.use(cors()) // this is specifying origin app.use(cors({ origin: 'https://a-domain.com' })) // this is specifying cors for specific route app.get('/', cors(), (req, res) => { });
Difference between Cookie and Local Storage
Primarily both function in similar ways - i.e. both involve persistent storage in the browser. The differences come in slight nuances of their functioning:Vulnerabilities
Local storageimport java.util.Scanner; public class Palindrome { public static void main (String[] args) { String original, reverse = ""; Scanner in = new Scanner(System.in); int length; System.out.println("Enter a number or a string"); original = in.nextLine(); length = original.length(); for (int i =length -1; i>;=0; i--) { reverse = reverse + original.charAt(i); } System.out.println("The reverse is: " +reverse); if(original.equals(reverse)) System.out.println("The string is a palindrome"); else System.out.println("The stringis not a palindrome"); } }
class ValidParenthesesF { func isValid(_ s: String) -> Bool { var stg = [Character]() for char in s { if char == "(" || char == "[" || char == "{" { stg.append(char) } else if char == ")" { guard stg.count != 0 && stg.removeLast() == "(" else { return false } } else if char == "]" { guard stg.count != 0 && stg.removeLast() == "[" else { return false } } else if char == "}" { guard stg.count != 0 && stg.removeLast() == "{" else { return false } } } return stg.isEmpty } }
The above code will input 0(false).
var i = 10; var f = 5; var g = 3; if (i / f / g) document.write("hi"); else document.write("hello");
The answer is A because the floating-point division returns a non zero value = 0.66 which evaluates to true and outputs ‘hi’.
As discussed, it isn't easy to find a quality freelance Web developer but this guide makes the process easier for you. To offload the entire hiring process, reach out to us at Flexiple. We've designed a high-quality, 6-step screening process to find the top 1%, freelance developers. You can find the best freelance Web developers here. We've already served over a hundred clients, earning great reviews for the quality of service.
Lastly, to quickly summarize the process of hiring a freelance web developer for you:
1. Note your project requirements and hire accordingly. Do not go for the lowest or the highest-paid developer.
2. Don’t hire without vetting- consider asking questions right from the basics to advanced to logical questions.
3. Look for companies like Flexiple that help you find the perfect fit.
That is everything you need to know about hiring a freelance Web developer. Happy hiring! :)