0% found this document useful (0 votes)
7 views20 pages

Interview Benchmark Guidelines

This document provides interview benchmark guidelines for assessing candidates' skills in .Net web applications at Persistent Systems Limited. It outlines a rating scale from 1 to 5 for various competencies, including CS fundamentals, OOPS, programming, design principles, and communication, along with specific cut-off levels for different job roles. The guidelines aim to ensure consistency and clarity in the interview process across various job descriptions.

Uploaded by

Rakesh Kumar
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views20 pages

Interview Benchmark Guidelines

This document provides interview benchmark guidelines for assessing candidates' skills in .Net web applications at Persistent Systems Limited. It outlines a rating scale from 1 to 5 for various competencies, including CS fundamentals, OOPS, programming, design principles, and communication, along with specific cut-off levels for different job roles. The guidelines aim to ensure consistency and clarity in the interview process across various job descriptions.

Uploaded by

Rakesh Kumar
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

PERSISTENT SYSTEMS LIMITED

Interview Benchmark Guidelines – .Net (Web


Applications)

Page 1 of 20
PERSISTENT SYSTEMS LIMITED

Introduction
This document describes a set of guidelines which can be used by interviewers to rate the different
skills and competencies of candidates on a scale of 1 to 5.

The objective of this activity is to bring in uniformity and consistency in the interview process for
various job descriptions. This will help to bring all the stakeholders on the same page regarding
expectations of competencies and different skills by the candidates.

Guidelines for defining skill and competencies benchmark

This section defines a general guideline around which benchmarks for various competencies and skills can be
defined. The rating scale is kept similar to the one followed by PSL IFF template.

PSL IFF Template Competency Scale: (1= Poor, 2= Average, 3= Good, 4=Very Good, 5=Outstanding)

Guidelines for benchmarking:

Competency Level Guideline around expectations

1 Candidate has only basic elementary knowledge

2 Candidate understands certain concepts not classified as elementary related to


the skills

3 Candidate can demonstrate working knowledge of the above concepts

4 Candidate understands advanced concepts related to the skill

5 Candidate can demonstrate working knowledge of the advanced concepts

The above are general guidelines, however there could be exceptions towards above based on specific
skills requirement.

Page 2 of 20
PERSISTENT SYSTEMS LIMITED

Applicable Job Descriptions


Below is the list of Job Descriptions currently supported by this document.

Tech Lead:

Lead (5.3/7.x)

Design
CS Fundamentals OOPS Programming Communication
principles

Cut Off capabilities level for different skills

Skills Cut Off


CS Fundamentals 3 (Good)
OOPS 4 (Very Good)
Programming 4 (Very Good)
Design Principles 4 (Very Good)
Communication 4 (Very Good)

Developer:

Developer (3.x/5.2)

Design
CS Fundamentals OOPS Programming Communication
principles
Cut Off capabilities level for different skills

Skills Cut Off


CS Fundamentals 3 (Good)
OOPS 4 (Very Good)
Programming 4 (Very Good)
Design Principles 3 (Good)
Communication 4 (Very Good)

Page 3 of 20
PERSISTENT SYSTEMS LIMITED
CS Fundamentals (Data Structures and Problem Solving)
Note: Candidates can use their preferred programming language but not allowed to use built-in methods AFAP.

Competency (1 Description
- 5)
1 (Poor) Person has not used data structures

2 (Average) Person understands data structures but has not used in a project, or unable to solve the
coding assignment
3 (Good) Person can write programs to traverse collections and understands time and space
complexity

Examples
1. Write a program to traverse a linked list to find smallest and largest number
2. Write a program to add n (say n=10) integer elements to the queue from rear and
consume k (say k=3) elements from the front. Sort the consumed elements in desc
order and print.
INPUT: q = [1,2,3,4,5,6,7,8,9,9]
q1 = [8,9,9]
q2 = [9,9,8]
3. Input: List with a dictionary of album name and band name
INPUT: arr = [{‘metal’, ‘rock’}, {‘metallica’, ‘masti’}, {‘master’, ‘masti’}, {‘blaster’, ‘rock’}]
Find all band names whose album names start with metal.
OUPUT: [rock, masti]
4. Find nearest elements to a given element by +/- 10%
Input: [100, 120, 80, 90, 110]
k = 100
output: [90, 100, 110]
5. Find variations wrt min or max value
Input: [100, 120, 80, 90, 110]
min = 80
variation_min: [+25%,+50%,0%,12.5%,37.5%]
max = 120
variation_max: [-16%,0%,33%,-25%,-8%]

4 (Very Good) Person can apply different data structure concepts and use them to solve problems
describing certain scenarios

Examples
1. Given an array of integers, create a 2-dimensional array where the first element is a
distinct value from the array and the second element is with the value's frequency
within the array. Sort the resulting array descending by frequency. If multiple values
have the same frequency, they should be sorted ascending.
2. Bucket and sort the elements to get topper in each subject. Assume suitable data
structure.
Input data below

Student Exam Grade


John Phy 45
Dave Phy 67
Dave Maths 82
John Maths 91
Chris Eng 70

Page 4 of 20
PERSISTENT SYSTEMS LIMITED
John Eng 88

Expected output
Student Exam Grade
Phy Dave 67
Maths John 91
Eng John 88

3. Input: 2 arrays with varying number of integer elements


Arr1 = [2,4,5,6]
Arr2 = [5,6,7,8,9]
Write a program to output elements which are there in arr1 but not in arr2 and
present in arr2 but not in arr1.
Expected Output: [2,4,7,8,9]
4. Input: Array1 = [1,2,3,4,5,5,3,4,4,4,4,4,5,5,5,5] Print elements having frequency more
than or equal to 4
Array2 = [{1,1}, {2,1}, {3,2}, {4,6}, {5,6}]
Array3 = [4,5]
5. Partial string search
Input: I love programming in java and python
Pattern: java python golang ruby
Search pattern in input string and return true for matched words
Expected output
java: true
python: true
golang: false
ruby: false

6. Create a tree data structure and add few elements to it up to level 2


7. Write a program to delete a given list of keywords from a string
Input: I love programming in the golang and reactjs
Removal list: in, the, I, and
Output: love programming golang reactjs
8. x

5 (Outstanding) • Person understands concepts around advance data structures and write algorithms
around AVL trees, B+trees, Red Black trees.

Examples
1. Write a program to get the list of all children from a given node up to the bottom of
that hierarchy.

a. Case-1: if root node 1 is input and then return all children [2,3,4,5]
b. Case-2: if leaf most node 3 or 4 or 5 is input then return empty []
c. Case-3: if 2 is input then return [4,5]
2. Print level wise sum of all elements in above tree and level having maximum sum.
Output: [Level0:1, Level1:5, Level2: 9]
Output: Level2: 9

Page 5 of 20
PERSISTENT SYSTEMS LIMITED
3. Print all parents of a given node
4. Create a tree data structure and add few elements to it up to level 3. Now write a
logic to cut the tree at a given level and print all elements which were left off. In
above tree if we cut the tree at level1, then output = [4,5]
5. Write a program to find linkages of a given element

Col1 Col2
A B
C A
B D
E F
G D
G H
K J

Search element = A
A is linked to B, A is also linked to C (from col2)
B is linked to D
D is linked to G
G is linked to H

Expected output: A = [B, C, D, G, H]

Technical Skill: OOPS, Functional, Concurrent programming concepts


Competency (1 Description
- 5)
1 (Poor) • Person does not understand OOPS concepts

2 (Average) • Person understands following areas well but is not able to give practical examples
o Polymorphism
o Inheritance
o Abstraction
o Different types of variables such as constant, static variables, global variables
o Constructors, destructors
o Overloading operators
o Overloading functions
3 (Good) • Person can demonstrate working knowledge on various OOPS features.

Area Example Capabilities


OOPS examples • Person can use the concepts and demonstrate hands-on
and code samples knowledge against practical scenarios.

E.g.,
- Explain Inheritance with sample classes. Any Live examples
in your project which you can provide.

Page 6 of 20
PERSISTENT SYSTEMS LIMITED
- C++: What is Virtual function? How does the late binding
works?

- Write sample code to explain dynamic polymorphism.

- C++: Explain how Virtual Table is used?

- C++: Can you create Virtual Constructor and Destructor? Is


it possible to have these as virtual? When do you use these
features?

- Explain use of operator overloading with sample code.

Multithreading • Person understands multithreading area -


- Is aware of thread creation and async tasks,
- Indicate different concepts around mutex, condition
variables etc. towards how synchronization of threads is
done.
• Person understands multiprocessing area – async
communication, state management, no shared object
management across processes

-
4 (Very Good) • Person has knowledge and experience on advanced areas with Live examples

Area Example capabilities


OOPS • Person understands many of the best practices that are normally
Advanced associated with the language.
areas and
best - What is Abstract class? What is the difference between Abstract
practices class and Interface? Why do you need Abstraction?

- When do you use Composition and when Inheritance? Explain with


example and sample code

- Explain best practices for exception handling

- How does garbage collection work? What are the best practices
for avoiding memory leaks?

-
Multi- • Person understands multithreading and is able to demonstrate hands-
threading on expertise
• Able to write code or debug using threads (e.g. producer,
consumer problem with a fixed size buffer using condition
variables and mutex)
• Able to talk about executor life cycle – what order tasks are
executed, how many tasks may be queued

Functional • What does it mean by functional programming? How is it different


Programming from Object oriented programming?
Concepts • What is a pure function? Provide some examples of pure
functions.
• Write custom function so that it can be marked as pure function.
• What is a Lambda expression? Give example
Page 7 of 20
PERSISTENT SYSTEMS LIMITED
• Difference between streams and collections and their applications.

5 (Outstanding) • Person has knowledge on advanced areas like Templates with Live examples

Area Example Capabilities


Templates • Person understands and demonstrate the concepts related to
advanced features such as Templates
- Function templates
- Class templates
• Is able to explain the use of these concepts in live projects
• Is aware of design tools and can create class diagrams, sequence
diagrams

Functional • What is recursion? Write sample code to showcase the concept


Programming • Explain why we may get stack overflow error when we execute a
Concepts recursive function?
• Can you modify variables in Functional programs?
• When do you use functional programming? Please explain
advantages/disadvantages of using functional programming.
• Convert a sequential stream into a parallel stream

Programming
Competency (1 Description
- 5)
1 (Poor) Person has not coded in the programming

2 (Average) Person understands basics of the programming language but has not used in a project, or
unable to solve the coding assignment in this programming language
3 (Good) Person can write correct code around most of these areas
C# .Net programming

Area Example questions


Data structures: Arrays, //Q: What is Enumerator and write code to print the
Collections, maps, dictionaries, items of enumerator?
sets
//Q: Describe the collections type hierarchy. What are
the main interfaces? Ability to choose appropriate data
structures based on the problem statement.

//Q: How to sort collections? give one example


A: use Icomparable and Icomparator interfaces

//Q:
What is the difference between ArrayList and Array?

//Q: Assume that a circular linked list is used to


represent a Queue and a single variable p is used to
access the Queue. To which node should p point such

Page 8 of 20
PERSISTENT SYSTEMS LIMITED
that the enQueue and deQueue operations are
performed in constant time?
A: Node next to the front

Classes, Generics, Interfaces, //Q: What is the difference between Equality operator
Delegates, Reflection (==) and Equals() method in C#?

//Q: What are delegates in C# and explain where you


have used in your application. Multicast delegates.

//Q: What are extension methods in C#. Explain how


you have used in your application.

//Q: For creating a google map like application, we


need to define points on the map having types like City,
Shopping Mall, Station, Airport, Temple etc.
Default point type is Point.

In this challenge, implement the Point class per the


following constructor and methods:

The constructor Point(String name, String type, double


lat, double long)
The method String getType() to return the Point type
The method void setType(String type) to update the
Point type
The method Point clonePoint() to return the clone of
the Point

Input:
numberOfPoints = 3
Pune City 10.0 20.0
PuneAirport Airport 15.0 25.0
PuneStation Station 10.0 20.0

Support below cases:


Case-1: clone Pune point to Mumbai
Case-2: Update Mumbai type as Metro

//Q: What is the output of below code


using System;

public class Person


{
public String FirstName;
}

public class ClassTypeExample


{
public static void Main()
{
var p1 = new Person();
[Link] = "John";
var p2 = new Person();
[Link] = "John";
Page 9 of 20
PERSISTENT SYSTEMS LIMITED
[Link]("p1 = p2: {0}",
[Link](p2));
}
}
A: False

In the above code can you write logic to override


Equals method to compare the values.

String manipulation //Q: Write a program to reverse a string. Write a


program to check if a string is palindrome.

//Q: Write a program to print all possible substrings of a


given string.

//Q: Write a program to remove extra (leading, trailing,


embedded) multiple spaces from a string. E.g. “ sky
is the limit ” will be “sky is the limit”

Lambda Expressions //Q: Can a lambda expression be assigned to a


variable? Explain Func and Action delegates.

Yes
Func used when Lambda expression returns a value
Func<int, int> square = x => x * x;
[Link](square(5));

Action delegate is used when we do not have return


value
Action line = () => [Link]();

//Q: Write a lambda expression to calculate a square of


a number, assign it to a variable and print the output.
A: Func <int, int> square = x=>x*x;
[Link](square(5));

//Q: Can a Lambda expression have zero parameters.


Write a zero-parameter sample lambda expression
A: Yes.
Example : Action line = () => [Link]();

Static vs instance variables //Q: What is the output of below snippet?


class Constructor
{
static String str;
public Constructor()
{
[Link]("In constructor");
str = "Hello World";
}
public static void Main(String [] args)
{
Constructor c = new Constructor();
[Link]([Link]);
}
}

Page 10 of 20
PERSISTENT SYSTEMS LIMITED
A: Compile Time error as static variables cannot be
accessed using instance reference

Exception handling, finally //Q: What will the code print when we call divide(4, 0)?

public int divide(int a, int b) {


int c = -1;

try {
c = a / b;
}
catch (Exception e) {
[Link]("Exception ");
}
finally {
[Link]("Finally ");
}

return c;
}

A: Exception
Finally
General concepts (Reflection, //Q: Explain Reflection in .Net. Scenarios where .NET
Automapper) Reflection used by the Visual Studio IDE itself

//Q: How to use AutoMapper library for data


conversions
o How does AutoMapper works internally?

Performance //Q: Typical Performance issues in .Net


o Boxing and unboxing overhead
o AddRange vs Add item
o Lazy Initialization and impact on
performance.
o Describes techniques for caching data to
improve performance in your app
o What are the different Performance tools
used (PefView, Visual Studio Profiler,
etc.)?

RDBMS, SQL queries //Q: As scenarios covering JOINs, GROUP BY,


indexes, PK-FK relationships

Microservices framework

Area Example questions


Basics of microservices //Q: Tell any 2 Components of a Microservices

//Q: Explain microservices components and their


use or explain SOA vs microservices

//Q: How does API Gateway handle load


balancing?

RESTful services development using //Q: How to prevent a network or service failure
Web API from cascading to other services?
Page 11 of 20
PERSISTENT SYSTEMS LIMITED
A:
Circuit Breaker pattern must be implemented

//Q: What are different Web API filters. Explain


few.
• Authentication Filters
• Authorization Filters
• Exception Filters
• Action Filter
• Override Filter
//Q: What are different ways to Configure routing.
Explain these how they are configured.
A: Conventional Routing, Attribute Routing

//Q: How are Authentication and Authorization


implemented in your application.

//Q: Write syntax for valid URI for GET, POST,


PUT, DELETE requests for an endpoint

How to test services? //Q: How do write unit test cases for your Web
API application?

//Q: Check if developer can list quality Unit Tests


e.g., For tree related programs, can developer
think of several test cases

//Q: Explain Mike Cohn’s test pyramid

//Q: What is Canary releasing?


MVC //Q: List few data annotations in MVC. How is
Model Validation done?
Examples – Required, DataType, Range,
StringLength, DisplayName, MaxLength,
DisplayFormat etc.

//Q: Explain which ORM you used in your Web


API/ MVC project

//Q: How do you pass Data to Views


A: Strongly typed data – View Model
Weakly typed data – ViewData, ViewBag

4 (Very Good) Person can write correct code around these areas
C# .Net programming

Area Example questions


Composite Classes //Q: Study below class and write output of driver
code.
public class A {
public void printName(){
[Link]("Value-A");
Page 12 of 20
PERSISTENT SYSTEMS LIMITED
}
}
public class B : A{
public void printName(){
[Link]("Value-B");
}
}

public class C : A{
public void printName(){
[Link]("Value-C");
}
}

1. public class Test{


2. public static void Main (String[] args) {
3. B b = new B();
4. C c = new C();
5. b = c;
6. newPrint(b);
7. }
8. public static void newPrint(A a){
9. [Link]();
10. }
11. }

A; Compile time error

//Q: Create a dictionary of dictionary and lookup an


element

Method overloading, //Q: What is the output of the below code


parameterized constructors
public class ConsoleApp
{
public static int AddNums(ref int a, ref int b)
{
return a+b;
}
public static int AddNums(int a, int b)
{
return a+b;
}
public static int AddNums(out int a, out int b)
{
return a+b;
}

public static void Main(string[] args)


{
Int a =1;
Int b = 2;
[Link](AddNums(ref a, ref b);
[Link](AddNums(a,b);
[Link](AddNums(out a, out b)

}
Page 13 of 20
PERSISTENT SYSTEMS LIMITED

A: Compile time error. Cannot define an overloaded


method that differs only on parameter modifiers out
and ref….to fix the code, either the method with ref
params or out params should be removed.

/
Garbage collection //Q: Study below code. When does the “Demo” object
instantiated at line 6 become eligible for garbage
collection?

class Test
{
private Demo d;
void start()
{
d = new Demo(); /* Line 6 */
[Link](d); /* Line 7 */
} /* Line 8 */
void takeDemo(Demo demo)
{
demo = null;
demo = new Demo();
}
}
A: When the instance running this code is made
eligible for garbage collection

//Q: An object obj1 can access object obj2. Obj2 is


eligible for garbage collection, what happens with
obj1?
A: obj1 is also eligible for garbage collection

//Q: How are unmanaged resources cleaned up in


your Application

multi-threading / multi-processing: //Q: How to stop the execution of a long running


Executors, Thread Pools, async Thread?
[Link]() and [Link]()

Parallel processing/Distributed //Q: What are the advantages of a distributed


computing system?

API Development (.Net Core Web //Q: Explain different 40x response status codes in
API) RESTful API Design?

//Q: Explain Setter Dependency Injection (SDI) vs.


Constructor Dependency Injection

//Q: Create a REST API/controller to return list of


products, use appropriate annotations
Page 14 of 20
PERSISTENT SYSTEMS LIMITED

[Link] Core (MVC) //Q: Explain dependency Injection. How have you
implemented in your MVC application. If using .Net
core explain difference between AddSingleton,
AddScoped, AddTransient

//Q: How do you migrate a [Link] MVC application


to .Net Core

//Q: What is middleware in [Link] core . Where do


you add middleware in .Net Core.
(StaticFiles, Routing, CORS, Authentication,
Authorization, Endpoints)

//Q: How do you add custom exception pages in .net


core.
Caching (any framework used like //Q: Explain about Distributed caching in [Link]
Redis, Memcached, ehcache) Core. How have you implemented caching in your
application. Explain related concepts
• In Memory Cahcing
• Distributed cache
• Cache Tag Helper
• Distributed Cache Tag Helper
• Response Cache attribute

//Q: Create a simple GET service and cache the data

Session/transaction management //Q: How do you implement session Management in


.Net Core. What are the different modes supported
for Session storage.

Register session in Startup File –


[Link](options => {
[Link] =
[Link](1);
[Link] = true;
[Link] = true;});

Configure Middleware

Authentication/Authorization (API- //Q: Difference between OAuth2 and TLS


level) A: OAuth is based on clients sending tokens rather
than explicit credentials. TLS is a protocol that
prevents malicious data modification and corruption.

//Q: How to SSL-enable service communication?


What config changes are required?

Json, xml parsing //Q: Create a nested json document using


LinkedHashMap and JSONObject, print it

Microservices ([Link] Web API)

Area Example questions


Security //Q: Authentication and Authorization different techniques –
Page 15 of 20
PERSISTENT SYSTEMS LIMITED
Basic Authentication, Forms Authentication, Integrated
Windows Authentication

//Q: Working with SSL

//Q: What is Cross Site Request Forgery attach. How to


prevent Cross Site Request Forgery Attacks in Web API
A:: Anti forgery Tokens

//Q: Explain Authentication Filters in Web API

////Q: What is CORS. How do you enable CORS in Web API.


A: There are three ways to enable CORS
• In middleware using a named policy or default policy
• Using endpoint routing
• With the [EnableCors] attribute

Tracing, Best Practices //Q: How to add swagger support to the Web API
How .NET libraries like Swashbuckle works internally

//Q: How do you implement exception handling in Web API


• Exception Filters

//Q: How to achieve distributed tracing. i.e., understand


behavior of application and debug issues. How is Logging
implemented in your application?

//Q: What are the best practices followed while developing


microservices.

Entity Framework Core //Q: Explain different events raised by EF Core


[Link]
[Link]
[Link]
[Link]
[Link]
//Q: Scenarios where Entity Framework SaveChanges()
should be overridden
//Q: Tracking vs. No-Tracking Queries while using Entity
Framework
//Q: Types of Inheritance supported in EF
Table Per Hierarchy
Table Per Type
Table Per Concrete Class
//Q: How is database concurrency achieved in entity
framework
Setting Concurrency mode to Fixed
Or
ConcurrencyCheck attribute
RowVersion property with Timestamp attribute
//Q: What best practices you follow to improve the
performance of the EF
Identifying slow database commands via logging
Use indexes properly
Project only properties you need
Limit the resultset size

Page 16 of 20
PERSISTENT SYSTEMS LIMITED
Avoid cartesian explosion when loading related
entities
Load related entities eagerly when possible
Beware of lazy loading
Buffering and streaming
Efficient updates by Batching
Bulk updates when possible
//Q: What are EF Core migrations and how did you perform
these migrations.

Non-functional aspects
Area Example questions
Unit test automation (nUnits, //Q: Write a xunit / nunit test class to test following
xunit, Moq) singleton class

public class SomeSingletonClass {


private static volatile SomeSingletonClass
singletonInstance = new SomeSingletonClass();

private SomeSingletonClass() { }

public static SomeSingletonClass getInstance(){


return singletonInstance;
}
}

//Q: Creating parameterized unit tests using xUnit –


InlineData, ClassData, MemberData

Source code management (git //Q: git clone, checkout, pull, push, merge, branch
commands)
Performance testing and //Q: How to perform concurrent user testing?
monitoring tools //Q: How to generate test data?
//Q: How are the builds created in your project
Build tools used (MS Build, //Q: Explain how your project is deployed? Questions on
Deployment etc) deployment architecture. MS Build etc.
CI/CD tools (Jenkins) //Q: How is CI/CD Pipelines configured in your project.
How have you written the build files?
//Q: Have you created Jenkinsfile? What is the difference
between pipeline and agent directives?

//Q: How to run multiple builds using just one Jenkins


instance?
A: using agent directive
Code coverage (Visual Studio //Q: Which Code coverage tools have you used?
Code Coverage, NCover)
//Q: What all things are captured: bugs, vulnerabilities,
code smells, duplications, coverage
Different tools used //Q: Check on different tools used - Visual Studio, VS
Code, GitHub, Azure DevOps, SQL Server Management
Studio etc
5 (Outstanding) Person can explain complex architectures or can talk authoritatively on modern tech stack
covering any of the below topics
• Containers (Docker, Kubernetes)
• Cloud-native applications
Page 17 of 20
PERSISTENT SYSTEMS LIMITED
• Analytics (Streaming, batch processing, kafka, spark)
• NoSQL DB (MongoDB, ElasticSearch, Cassandra, HBase…)
• Monitoring tools (like Prometheus, Graphana)
• Microservices - Service Registry, Discovery, Configuration, Monitoring, Microservice
communication

Service Registry, Discovery, Configuration, //Q: Explain the use of Dapr for
Monitoring Microservices. Different features of Dapr
like –
Service Invocation, Traceability,
Observability, Scalability,

//Q: Explain the use of Eureka and Consul?


How to register a service with Eureka?

//Q: What is Client-Side Load Balancing and


how can it be achieved?
A: Netflix Feign

Microservice communication //Q: We have two separate applications - a


UI application in ReactJS and a simple
REST API. You want to work around CORS
and the Same Origin Policy restriction of the
browser and allow the UI to call the API
even though they don't share the same
origin.
A: We can use the Zuul proxy in the UI
application to proxy calls to the REST API.
Zuul is a JVM based router and server side
load balancer by Netflix

//Q: Different sync communication protocols


A: REST, gRPC, Apache Thrift

//Q: How to achieve async 1:m


communication?
A: using message queues like Apache
Kafka, ZeroMQ

Design Principles
Competency (1 Description
- 5)
1 (Poor) • Person knows few names of the design patterns but unable to explain the use

2 (Average) • Person can explain few design patterns but is unable to map to real life requirements

3 (Good) • Person can explain and map design patterns and SOLID principles
Area Example Capabilities

Page 18 of 20
PERSISTENT SYSTEMS LIMITED
Design Patterns 1. Use case for Singleton – e.g., when initializing a Logger
class, or a database connection
2. Use of Factory – e.g., when you need to support
multiple database systems (SQL Server and Oracle) in
future, or when you have multiple file formats to be
supported with almost similar processing logic
3. Use of Builder – e.g., when constructing a large object
like a Virtual Machine which is built using different
objects like network, storage etc.
4. Use case for Façade pattern – hide complexity of the
larger system and provide a simple interface to the
client (E.g., Customer care is a façade for their
customers for different services)
5. For a given scenario, which design pattern makes most
sense? E.g., Façade vs Adaptor vs Decorator
SOLID Principles 1. Able to explain how Dependency Inversion works and
what benefits it can give (reusability, testability etc.)
2. Able to explain Open Closed Principle and how to
practice it using inheritance and interfaces
3. Define a class that follows Single Responsibility
principle
4. State some advantages of following SOLID principles
(e.g., extensibility, readability, testability)
5. How do you enforce Dependency Inversion? E.g.,
coding against interfaces rather than implementations
4 (Very Good) • Person has practical experience implementing design patterns and SOLID principles
• Person can explain the advantages and disadvantages of using these principles
• Person understands best practices for developing reliable code/system
Area Example Capabilities
Design Patterns 1. Able to write a Singleton class and
can explain how it works in multi-
threading context, whether it can be
inherited/cloned etc. (look for
private constructor, sealed/final
keywords etc.)
2. Shows how factory pattern is
implemented with a practical
example from project
3. Able to explain various design
patterns used in the project (current
or previous) with proper justification
4. Can think through project design to
see where a design pattern makes
sense and justify the same
5. Draw UML diagram of a design
pattern
SOLID Principles 1. Able to relate to project context -
E.g., how Open/Closed principle is
followed
2. How Interface Segregation principle
is applied in a working project
3. Able to explain with real project
experience on which SOLID
principles are strictly followed and
which one are not followed with
proper reasoning (legacy code with

Page 19 of 20
PERSISTENT SYSTEMS LIMITED
not much control over it etc. are
typical reasons)
4. What are some of the best practices
that are checked during code
reviews?
5. How to ensure that best practices
and guidelines are followed for a
new project development?
(Response should include creating
a base framework that follows
SOLID principles etc.)
5 (Outstanding) • Person also understands latest patterns like Microservices
Area Example Capabilities
Microservices 1. Talk about some of the design
patterns followed during
Microservices implementation (e.g.,
CQRS, Aggregator, API Gateway)
2. How to implement Observability
pattern/Distributed tracing in
microservices?
3. Talk about database patterns
followed in microservices
implementation and justify the use
of it
4. Explain the thought process when
breaking a monolith to microservice
based architecture
5. Advantages of using microservice
based architecture over monolithic
architecture?

Communication
Competency (1 Description
- 5)
1 (Poor) • English speaking and articulation not good. Is not able to understand the question

2 (Average) • Person understands the question but struggles to articulate

3 (Good) • Person understands the question and is able to articulate well

4 (Very Good) • Person is able to explain his project well


• Person is able to articulate and present his achievements well
• Person articulates very well and shows confidence

5 (Outstanding) • Very good articulation, confident. Also has good written communication. Has created
blogs and approaches.

Page 20 of 20

You might also like