Solution Architect
UBS AGSr. Full Stack Engineer
Aleph LabsTechnical Lead
HCL SoftwareAssociate - Projects
Cognizant Technology SolutionsSenior Software Development Engineer
Nuance India Private LimitedJava Architect
Wipro DigitalTechnology Analyst
Infosys LimitedModule Lead
Persistent Systems Limited
Microsoft Azure

Kafka

PostgreSQL

MariaDB

MongoDB
.png)
Jenkins

Ansible
Jira

Confluence

Eclipse

Visual Studio Code

Postman

SoapUI
.jpg)
Microsoft Visio
.png)
Docker
RDD is an infrastructure supporting application. It consists of master data system hosted on IBM Mainframe. The data is synced
to various downstream consumers like normalized Postgres DBs, customer DBs through Kafka messaging backbone.
Accomplishments:
This is an internal application with various dashboards and reports for different teams to track the resource on-boarding, team
velocity, Agile release planning, etc. in tabular or graphical way. The application has been enhanced to support real-time resource
onboarding from the application. The application was originally written using Vue.JS, later revamped with React.JS stack.
Accomplishments:
HCL Verse is a web email client. It has various modules like Calendar, Mail and Contacts. Earlier it was using CGI based APIs,
we started implementing the RESTFUL microservices and new UI in React.JS.
Accomplishments:
No active assignments during this tenure, so had to leave the organization in 6 months span.
CDI Nextgen application is mainly intended for CDS (Clinical Documentation Specialist) who does documentation and review them. This application provides the complete work flow for the CDS to review the clinical codes added by the coders. Existing application was revamped using latest technology stack.
Accomplishments:
Banca is an insurance application for a bank. In the middle east, the insurance policies are sold by the banks. This application takes care of complete policy life cycle.
Accomplishments:
Web Console is an AJAX based web application which monitors the various hosts with multiple jobs of different types running on them.
Accomplishments:
The Memova messaging suite consists of various applications like Email, Contacts, Calendar, and Files similar to Gmail suite. The application is completely written in-house and is highly customizable.
Accomplishments:
Saurabh is hardworking and able to work under pressure. He is very professional, and good at programming and explaining to peers.
I worked with Saurabh in several projects over a period of 3 years. I was impressed by his ability to adapt and attention to detail.
Saurabh is a very capable and professional technical consultant. I worked with Saurabh for a number of years from customer support to onsite project work at different places in Asia. I found Saurabh could take on jobs independently in customer places and got the job done well. I would not hesitate to recommend Saurabh and wish him luck with his new venture.
Project Name: Reference Data Distribution
Employer: UBS AG
Duration: Mar 2023 Till Date
Environment: React.JS, Spring Boot, Java 11, Azure, Ansible, Kafka, PostgreSQL
Role: Solution Architect with IC
Description: RDD is an infrastructure supporting application. It consists of master data system hosted on IBM Mainframe. The data is synced to various downstream consumers like normalized Postgres DBs, customer DBs through Kafka messaging backbone.
Project Name: CX360 Dashboard
Employer: UOB Bank
Duration: Sep 2022 Feb 2023
Environment: React.JS, Redux, Material UI, Node.JS, Mongo DB, MariaDB
Role: Senior Full Stack Engineer
Description: This is an internal application with various dashboards and reports for different teams to track the resource on-boarding, team velocity, Agile release planning, etc. in tabular or graphical way. The application has been enhanced to support real-time resource onboarding from the application. The application was originally written using Vue.JS, later revamped with React.JS stack.
Project Name: HCL Verse (formerly IBM Verse)
Employer: HCL Software
Duration: Sep 2019 Aug 2022
Environment: React.JS 16.14, Redux, Material UI, IBM Cloud, Java 8, Spring Boot, Microservices.
Role: Technical Lead with IC
Description: HCL Verse is a web email client. It has various modules like Calendar, Mail and Contacts. Earlier it was using CGI based APIs, we started implementing the RESTFUL microservices and new UI in React.JS.
Project Name: CDI Nextgen
Employer: Nuance India Pvt. Ltd.
Duration: Nov 2017 Feb 2019
Environment: React.JS, Type Script, Node.JS, Webpack, Java 8, Spring, Spring Data JPA, REST, JSON, MS SQL Server 2008, etc.
Role: Senior Java Full Stack Developer
Description: This application is mainly intended for CDS (Clinical Documentation Specialist) who does documentation and review them. This application provides the complete work flow for the CDS to review the clinical codes added by the coders. Existing application was revamped using latest technology stack.
Hello. My name is Saurabh Agrawal, and I have 2016 years of industry experience out of which various are into software development. During this 12 years, I worked as a full stack Java developer. Uh, but then, uh, on the back end side, uh, I'm into Java and the Spring framework. But, you know, on the front end side, I have worked into the React. Js, uh, and, uh, many JavaScript and a bit of Vue. Js. Yeah. So so during this tenure, I played various role like, uh, you know, the individual contributor and the team lead technical lead. Yeah. That's all.
How do you approach optimizing react application components 3 for maximum rendering performance? Okay. To have the, uh, optim optimization in the React application, we have multiple ways. 1 is to, uh, use a hook called useCallback. Uh, 2nd is to memorize the component, uh, using use memo hook. And, uh, even we can, uh, you know, uh, memoize the return value of highly computational functions using memo function. Yes. K. So useCallback. What it does is that, uh, between the rendering, it keeps the function definition into the cache. That's why, uh, you know, if the, uh, dependency list, any of the, uh, variables in the dependency list does not change. So React will return the cached copy of function definition. That way, it won't recreate the definition of function. If it is defined under, use callback. Now use memo. Use memo can be used to, you know, memorize the, uh, return value of computational function. So if you are doing a very heavy operation or computation in any of your function, then that can be memoized using use memo hook. And the 3rd way is to use, you know, memo. Memo means, uh, we can, uh, it's, you know, the functional way of creating a pure components. So, uh, using Memo, we can prevent rerendering of the child components unnecessarily. So what happens in React is that when a parent component is uh, rendered, so a complete tree of, uh, components is tried to be rendered. So if we, you know, optimize the uh, child components and avoid the unnecessary rerenderings, then we can optimize, you know, the application componentry, um, for, uh, you know, rendering performance.
Still, will you take effectively implement the continuous deployment process using Azure DevOps for JavaScript based application? Okay. So, uh, for this, we can implement a CICD pipeline using any of the language like, uh, Ansible or Teradata. And, uh, we can, uh, you know, uh, build as soon as, you know, the developer will push any new code to the, uh, git branch, uh, on the repository. So, uh, it's going to trigger a CIC will get pipeline, which is going to build, uh, the repository code. So while building, it will, you know, execute all the inner test cases as well. And if, you know, uh, a a 100% unit test cases are passed, then the build will succeed. Uh, ultimately, it will, uh, check for, you know, uh, any passwords or security threats, uh, in the code using Fortify. And, uh, then maybe, ultimately, it will release a new of a package. Then that package can be, you know, deployed further, uh, using, uh, I mean, uh, any of the live HTTP server. Yeah. So that way we can, you know, implement the uh, continuous deployment process for any JavaScript based application.
How does one tackle the problem of database connection pulling in Node JS application to improve the performance and stability? So in any case of application, which is, you know, connecting to database using connection tool, so the, uh, rule of thumb is that, uh, once you have used the connection from your connection pool and if you are finished with your transaction, then you should close that connection so that that can be returned to, uh, the pool again or at least you should commit your, uh, transaction so that it can be returned to the connection pool. If you don't do this or if you don't, uh, you know, gracefully close your all the resources that you have created during, you know, database transaction. So that may lead to any connection link. K? So if you take care of this, uh, connection link issue, if you close all the open resources that you have created during the database operation, then, uh, your connection or database transaction will be cleaned, and the connection can be returned to the pool again. In that way, uh, the performance and the stability of the application will be improved. There won't be any data, uh, connection leak. Otherwise, what will happen that, uh, uh, ultimately, the, um, memory usage of the node application will keep on increasing if it, you know, connection, uh, objects get piled up into the memory, and, ultimately, application may crash. Yeah. That's all for me.
In microservices ecosystem, how do you handle the distributed transaction across the services to ensure the consistency? Okay. So there are various way to handle this. I mean, uh, one way is to, you know, have multiple databases which are replicated. Uh, I mean, 1 database would be the master and another would be the slave. And, uh, slave will have the exact replica of the master database. Whereas, uh, master database can only be, uh, used for write operations or write transactions, Whereas other, uh, the secondary database can only be used for the to read the completion. So that way, you know, um, you won't have all or a complete load of different user operations on a single database so that we can segregate through using, you know, uh, dedicated to write and create operation databases. That's
Design system to effectively manage user session across micro contents. I think one way to achieve this is to use, you know, the sticky, uh, sessions on the load balancer. Wherein, you know, uh, the unique, uh, session ID or token is generated on the load balancer side. And for all the different sessions, uh, across the distribution system will be, you know, verified or, you know, uh, I mean, achieved using that single session ID or a sticky session ID. So that way for different, uh, micro front end applications, even though those are in a different, uh, like, uh, modules, but they can use the simple, uh, or a single, you know, session ID, uh, for, uh, achieving this uh, user session across the distributed platform, uh, effectively.
Let's skip super snippet below that uses a modern framework. Please explain why the data might not be displaying as expected on the web page. So code is const data, uh, send data, use data, use data, use a list, useEffect, fetch data, and then response, send data, uh, and then response. Data. The fetch data method is asynchronous, and fetches data from an API. So from the code, Okay. So from the code, it looks like, you know, the data is phased at the time of mounting of an application. I mean, use effect will be called only once. So first time the face data will be invoked, it will return the response, and, uh, a data will be extracted from the response and will be set into the component state. However, if any update happens to the, uh, you know, data on the API side, it won't be reflected on the UI on the web page. So for that, uh, to have that effect, we should be using useEffect hook with some dependency array so that, uh, every time, uh, that, uh, value or a dependency list changes, every time this effect will be called, uh, new data will be faced from the API, and it will be rendered on the web page. So, basically, this code, uh, fetches the data only once. And additionally uh in this code or in this snippet I don't see any uh, you know, the method which actually, you know, uh, renders the, uh, UI. So there is no implementation for the render so basically this component should return our JSX uh with you know which will, you know, iterate on a data list and it will display it as a list on the web page. So if we want to do that, uh, we need to implement that that piece of code here. Yeah. That's all from
Review the JavaScript code block that is intended to implement the singleton pattern. Explain what is wrong with the implementation. How would it fix that? So let instance equal to null class Singleton constructor if instant if not instance, then instance equal to this return instance const singleton and new singleton I think, uh, for the instance variable, uh, late keyword is being used, which is a block scope, uh, keyword. So we want to truly implement this singleton in this case, then we have to replace let with back so that it will be hoisted. And, that way we can have a single instance and, uh, initially, it will be null but once the constructor is called and first time we won't find it Then it will assign, uh, this, uh, object to the instance and variable, and it will return. The 2nd time, uh, it will find the instance to be valid reference with some object, and it will simply return it. It won't create or assign a new object again. So, basically, here, we need to replace let with the var.
Which architectural pattern would you use to build a scalable real time bidding system, and how would you ensure its responsiveness under heavy load? K. Support bidding system. What I think is that, uh, user should see the real time data, uh, on its web page as well as, uh, whatever bid he is placing should also go in real time to the server. So one thought coming to mind is that we can use WebSockets, which is a full duplex, a way of communicating between server and client. That way we can have full duplex connection, and, uh, there won't be any pulling for, you know, real time data, uh, from the server. So WebSocket through WebSocket, uh, the real time data will be updated on the web page as well as whatever bid bit that user will place will also go to the, uh, server using, uh, WebSocket connection, a single WebSocket connection. So that way, uh, we can achieve the, uh, real time bidding system without any polling in place. That's all.
And strategies we recommend for React application with a focus on user interface, consistency, and integration. Okay. So first one is user interface consistency. Consistency means, uh, there are multiple browsers in market available. So UI should be consistent across the browser. So it should be compatible with all the browsers. So for that, we can use, uh, you know, uh, either, uh, physical, uh, different browsers to test on, Or, uh, we can use, uh, cloud platform like, you know, uh, browser stack, wherein we can use our desktop application on multiple, uh, devices, multiple browsers. And that way we can ensure the consistency of the interface. What is the testing framework and strategies will you recommend? Okay. And, uh, I would recommend that, uh, whenever, you know, the there has to be a CICD, uh, integration, uh, in place to run the automation suit for, uh, you know, our UI, uh, so that we can ensure that, uh, if any change happens to the code, there is 0 regression happening on the existing functionality of the application. 3rd, in the developer perspective, uh, we should have, you know, 100% coverage for, uh, our unit test cases. So for, uh, React application, we can use testing library. Uh, so React testing library is, you know, kind of a paradigm shift as compared to, uh, enzyme. So, uh, what the React Testing library does is that it actually renders the, uh, component and it tries to perform the, uh, assertions on the rendered component DOM. Okay? So that way we can ensure that, uh, user interface is consistent and well integrated. Yeah. That's all from me.
Can you imagine where technologies like WebAssembly be integrated into an existing JavaScript application architecture to improve performance? Okay. So, uh, as per my knowledge, web assembly, primary purpose was to use, you know, or to run the native core onto the, browser platform. So basically CC plus plus based code can be executed or or can be you know hosted directly on a browser. So So the code which is written in c or c plus plus or maybe a native language are highly efficient in nature. So using WebAssembly, we can execute the same code into our browser. Uh, so, uh, the effective UI which will be rendered on the browser uh would be more efficient as compared to the, you know, Java or JavaScript written applications. I think, uh, that's the information I know about WebAssembly. Uh, I need to check how it can be integrated into the existing JavaScript application. Uh, but I know the concept that, uh, what is the use of WebAssembly is and how it can, uh, you know, benefit to the user interface. K. That's all from me. Thank you.