Adaface is the most candidate friendly skills assessment tool on the market. Learn more.

C# & JavaScript

The C# & JavaScript is preferred by recruiters to assess on-the-job skills of candidates before an interview. It reduces technical screening time by 80% by enabling employers to identify qualified candidates.

🕒 Allotted Time: approx 40 mins

🧐 Questions:

  • 5 C# MCQs
  • 5 JavaScript MCQs
  • 1 Coding Question

⚙️ Customized Based On:

  • Experience/ difficulty level
  • Multiple skills in 1 assessment
  • Job description/ role requirements

🧪 Test Options:

  • Preset test: 0 setup time
  • Customized test: < 48 hour setup time

📝 Topics:

Null-Conditional Operator
Static Using Syntax

Using expression bodies you can create the expression bodies for the function/method, property and reduce the code.

Expression Bodied Function & Property
Boolean Comparison Operator
Increment Operators

In C#, Regular Expression is a pattern which is used to parse and check whether the given input text is matching with the given pattern or not.

Regular Expression
Disposal and Garbage Collection

Extension methods allow you to inject additional methods without modifying, deriving or recompiling the original class, struct or interface.

Extension methods
See full list

Sample Adaface C# & JavaScript Questions

These are just a small sample from our library of 10,000+ questions. The actual questions on this C# & JavaScript will be non-googleable.

🧐 Question🔧 Skill💪 Difficulty⌛ Time
Async Await Promises - What will the following code o
Promises Async-Await
JavaScriptMedium2 min
Classes and Constructors - What is the output of the foll
C#Medium2 min
Arrays and Exceptions - What is the output of the foll
Arrays Exceptions
C#Easy2 min
Multiple Namespaces - Class Student exists in both f
C#Medium2 min
Static and constructors - What is the output of the foll
C#Medium3 min
Prototypes and Scope - What will the following code o
JavaScriptMedium2 min
Promise Resolve - What does the following code o
Promises Async-Await
JavaScriptEasy2 min
Throw, Try, Async - What does the following JS cod
Promises Async-Await
JavaScriptEasy2 min

How to use the Adaface C# & JavaScript

Start screening candidates within minutes with the ready-to-go C# & JavaScript

1. Choose the most appropriate test for your role

2. Start inviting candidates to complete the assessment

3. Receive real time notifications and shortlist the best candidates

OR Customize the Adaface C# & JavaScript according to your job description

1. Get a custom assessment from our library of 700+ skills within 48 hours

2. Start inviting candidates to complete the assesment

3. Receive real time notifications and shortlist the best candidates

Adaface C# & JavaScript is trusted by enterprises worldwide

Morgan Stanley
SG Government
Ernst and Young
Optimum Solutions
United Nations
Love Bonito

About the Adaface C# & JavaScript


Null-Conditional Operator
Static Using Syntax

Using expression bodies you can create the expression bodies for the function/method, property and reduce the code.

Expression Bodied Function & Property
Boolean Comparison Operator
Increment Operators

In C#, Regular Expression is a pattern which is used to parse and check whether the given input text is matching with the given pattern or not.

Regular Expression
Disposal and Garbage Collection

Extension methods allow you to inject additional methods without modifying, deriving or recompiling the original class, struct or interface.

Extension methods
Bug fixing
Algorithmic thinking
C# basics

Exception filters run when some of the exceptions are unhandled and thrown from an invoked action.

Exception filters

Destructors in C# are methods inside the class used to destroy instances of that class when they are no longer needed.

Data Structures

In C#, all the variables must be declared before they can be used.


A class in C# can only directly inherit from one base class.


C# string interpolation is a method of concatenating, formatting and manipulating strings.

String interpolation

Code refactoring allows you to change the code structure without changing or affecting what the code itself actually does.


Serialization in C# is the process of converting an object into a stream of bytes to store the object to memory, a database, or a file.


C# provides four types of access modifiers: private, public, protected, internal, and two combinations: protected-internal and private-protected.

Field Modifiers

File and stream I/O (input/output) refers to the transfer of data either to or from a storage medium.

Stream I/O

It allows us to initialize properties without creating a constructor.

Auto-property initialization

In C# file operations, normally streams are used to read and write to files.

Pass by Reference

Multithreading helps to reduce the time of execution, and also makes use of the CPU power in an optimum level.


Encapsulation is defined as the wrapping up of data under a single unit. It is the mechanism that binds together code and the data it manipulates.


A string is an object of type String whose value is text.


C# employs automatic memory management, which frees developers from manually allocating and freeing the memory occupied by objects.

Memory Management

The control flow is the order in which the computer executes statements in a script.

Flow control

Use it to run specific builtin objects for mathematical constants and functions


Use it to generate random numbers between 0 and 1 including both


Use it to get the values of variables, objects, conditions, and expressions in terms of true or false


Use it to compare two variables with and without taking the data types into consideration


Use it to execute specific code sections as per conditions being satisfied


Use it to evaluate expressions and identify matching values to a case


Use it and execute statements associated with the case

Loop For

Use it to repeatedly execute the program till the condition becomes false

Loop For In

Use it to execute the code within the for loop once

Loop For Of

Use it to execute the code within the loop a specific number of times

Loop While

Use it to create a loop that executes a specific statement as long as the condition remains true


Use it to exit from a switch statement


Use it to allow Javascript objects to define or customize their iteration behavior


Use for creation of a collection of unique values


Use to iterate over an array and to call function on each and every element of array


Use it to return the type of a variable when called

Type Conversion

Use it to convert one data type to another


Operands as a set of 32-bit binary digits (zeros and ones) and perform actions


Patterns used to match character combinations in Strings


This happens when a script on a web page contains an error or fails to execute correctly


Is a policy that manages the availability of variables


The default behavior of moving all the declarations at the top of the scope before code execution

Strict Mode

It prevents or throws errors when relatively “unsafe” actions are taken

this Keyword

Use it to eliminate the confusion between class attributes and parameters with the same name

Arrow Function

Use it to write functions in Javascript in a concise way


Used as templates to create new objects


Used for serializing and transmitting structured data over a network connection in web applications


Used inside the code to force stop the execution of the code at a breaking point

Style Guide

Provides a set of standards that outline how code should be written and organized

Object Definitions
Object Properties

Simple association between name and value

Object Methods

Used to store various keyed collections and more complex entities

Object Display
Object Accessors

It is a getter and setter for the fullName property

Object Constructors

This is used to create and initialize an object

Object Prototypes

Is used to provide an inheritance

Object Iterable

Is a protocol that allows JavaScript objects to define or customize their iteration behavior


Use it for displaying information on the computer's screen


It is used to control the program flow in JavaScript


It's the set of rules that define a correctly structured JavaScript program


It is used to add warnings, suggestions, and information about the code


Used to store data values that can be changed later on


This allows you to declare variables that are limited to the scope of a block statement


It is a declaration that creates a read-only reference to a value


It is used to compare values, perform arithmetic operations, etc


Used to take numerical values as their operands and return a single numerical value


It is used to assigning a value to a variable

Data Types

It allows you to define a block of code, give it a name and then execute it as many times as you want


It is a collection of properties, and a property is an association between a name (or key) and a value


It is to provide a dynamic interface to a webpage


A primitive data type in JavaScript that lets you work with a series of characters

String Methods
String Search

It is used to search for a match in between regular expressions and a given string object

String Templates

It is used to represent and manipulate numbers

Number Methods

It can be used to convert variables into numbers


It is used to store multiple values in a single variable

Array Methods

These are actions that can be performed on objects

Array Sort

This sorts the elements of an array in place and returns the sorted array

Array Iteration
Array Const

It is a declaration that creates a read-only reference to a value


It is a single moment in time in a platform-independent format

Date Formats
Date Get Methods

It returns the day of the month (from 1 to 31) for the specified date

Date Set Methods

It is used to set the day as a number (1-31)

Object Sets

This allows the creation of collections of unique values

Object Map

It holds key-value pairs and remembers the original insertion order of the keys

Object Reference
Function Definitions

It is a set of statements that performs a task or calculates a value

Function Parameters

These are the names that are defined in the function definition

Function Invocation

It is used to execute the function code

Function Call

It is a request made by a program or script that performs a predetermined function

Function Apply

With this, you can write a method once, and then inherit it from another object

Function Closures

These are created every time a function is created, at the function creation time


These serve as templates or blueprints that help create new objects

Class Intro
Class Inheritance

It enables you to inherit all the methods and properties of another class

Class Static

These are useful for caches, fixed-configuration, or any other data you don't need to be replicated across various instances


It is used to simplify the syntax necessary to consume promise-based APIs


These are a way to handle something after something else has been completed


These are used to handle asynchronous operations in JavaScript


These make it easier to write promises


Browser Object Model allows JavaScript to “interact with” the browser


It holds the information of a browser screen


This holds information about the current URL


It exposes useful methods and properties that let you navigate back and forth through the user's history


It is used to detect the browser and gather information about it

Popup Alert

It is an alert box that ensures that the information has reached the user


It is used to measure time intervals in JavaScript


Works as the store for information between the client-side and server-side in a web browser

Control Flow

It is the order in which a computer executes statements in a script

Error handling

It helps in handling both hardware and software errors in a sophisticated manner and helps execution to resume when interrupted

Data Models

They are used to show the data needed and created by business processes in JavaScript

DOM Manipulation

It is primarily used for non-blocking, event-driven servers, due to its single-threaded nature

Functional Approach
Object-Oriented Approach

It is a way of writing code that allows you to create different objects from a common object


Distribution Of Test Scores

The actual score distributon will vary based on your candidate pipeline quality, but you should typically expect ~20% of the candidates to do well on Adaface assessments.

The score distribution for our assessments follow the normal curve. This is a good sign- standardized tests like SAT and GRE follow the normal distribution (bell curve).

Status quo assessments typically have the exact opposite of the bell curve (too many candidates getting close to 0, too many candidates getting close to 100 and too few candidates in the middle). This is typically because they focus on theoretical questions or trick questions, which are very binary in nature- either you know the trick/ theory or you don’t.

How Adaface Is Different

Adaface conversational assessments are reflective of on-the-job skills and see an 86% completion rate as compared to ~50% for traditional assessment platforms.



Theoretical questions/ puzzles

Feels like a test

One-size-fits-all assessments




Questions for on-the-job skills





What is a custom assessment?

Every role is different and requires a custom assessment to identify top candidates efficiently. Adaface subject matter experts understand your job description/ role requirements and pick the most relevant questions from our library of 10000+ questions to create a technical assessment that helps you find the qualified candidates in your candidate pipeline quickly. All custom assessments are set up based on the job description, role requirements, must-have skills, experience level and salary range within a maximum of 48 hours and you will get an email notification once it goes live.

Check out a sample assessment here (no credit card required).

Can I combine multiple skills into one custom assessment?

Yes, absolutely. Custom assessments are set up based on your job description, and will include questions on all must-have skills you specify.

How is Adaface different from other assessment tools?

We believe that status quo tech assessment platforms are not a fair way for companies to evaluate engineers because they focus on trick questions/ puzzles/ niche algorithms. We started Adaface to help companies find great engineers by assessing on-the-job skills required for a role. Read more about why we started Adaface.

Here's what's different with Adaface:

  • High quality non-googleable questions that test for on-the-job skills as opposed to theoretical knowledge.
  • A friendly conversational assessment with a chatbot, instead of sending a "test" to a candidate. This translates to a higher completion rate. Adaface assessments (86% candidate completion rate), as opposed to traditional tests (40-50% candidate completion rate)
  • Customized assessments for 700+ skills at different experience levels.
Do you have any anti-cheating or proctoring features in place?

We have the following anti-cheating features in place:

  • Web proctoring
  • Webcam proctoring
  • Plagairism detection
  • Non-googleable questions
  • Secure browser

Read more the proctoring features.

How do I interpret test scores?

The primary thing to keep in mind is that an assessment is an elimination tool, not a selection tool. As in an assessment is optimizing to help you eliminate candidates who are not technically qualified for the role, it is not optimized to help you find the best candidate for the role. So the ideal way to use an assessment is to decide a threshold score (typically 60%, we help you benchmark) and invite all candidates who score above the threshold for the next rounds of interview.

What experience level can I use this test for?

Each Adaface assessment is customized to your job description/ ideal candidate persona (our subject matter experts will pick the right questions for your assessment from our library of 10000+ questions). This assessment can be customized for any experience level.

Does every candidate get the same questions?

Yes, it makes it much easier for you to compare candidates. Options for MCQ questions and the order of questions are randomized. We have anti-cheating/ proctoring features in place. In our enterprise plan, we also have the option to create multiple versions of the same assessment with questions of similar difficulty levels.

I'm a candidate. Can I try a practice test?

No. Unfortunately, we do not support practice tests at the moment. However, you can use our sample questions for practice.

What is the cost of using this test?

You can check out our pricing plans.

Can I get a free trial?

The platform is completely self-serve, so here's one way to proceed:

  • You can sign up for free to get a feel for how it works.
  • The free trial includes one sample assessment (Java/ JavaScript) that you will find in your dashboard when you sign up. You can use it to review the quality of questions, and the candidate experience of a conversational test on Adaface.
  • To review the quality of questions, you can also review our public questions for 50+ skills here.
  • Once you're convinced that you want to try it out with real assessments and candidates, you can pick a plan according to your requirements.
I just moved to a paid plan. How can I request a custom assessment?

Here is a quick guide on how to request a custom assessment on Adaface.

With Adaface, we were able to optimise our initial screening process by upwards of 75%, freeing up precious time for both hiring managers and our talent acquisition team alike!

Brandon Lee, Head of People, Love, Bonito

hashtag image heart icon Brandon
Have any questions about the Adaface C# & JavaScript?
Have any questions about the Adaface C# & JavaScript?
Chat with us ✨
Terms Privacy Trust Guide