profile-pic
Vetted Talent

Rakesh Sagar

Vetted Talent

I believe in my capabilities of hard-work, perseverance and good communication skills. Aspiration is to learn different technologies and skills through constant self-development and training to keep pace with the industry needs.

  • Role

    Technical Lead

  • Years of Experience

    14.8 years

Skillsets

  • Confluent
  • SVN
  • SCSS
  • Postgres
  • Oracle
  • MySQL
  • Jsoup
  • jQuery
  • Jira
  • Java
  • HTML5
  • EPM
  • CVS
  • CSS3
  • JavaScript
  • Agile
  • Windows
  • Linux
  • Azure
  • Springboot
  • SonarQube
  • Shell Scripting
  • Maven
  • JUnit
  • Gauge
  • Git - 10 Years
  • Jenkins - 5 Years

Vetted For

6Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Staff EngineerAI Screening
  • 56%
    icon-arrow-down
  • Skills assessed :CI/CD, Python, Java, Micro services, Spring Boot, System Design
  • Score: 50/90

Professional Summary

14.8Years
  • Apr, 2023 - Present2 yr 8 months

    Technical Lead

    Circana
  • Mar, 2018 - Feb, 20234 yr 11 months

    Software Designer

    Microfocus
  • Dec, 2015 - Feb, 20182 yr 2 months

    Technical Lead

    Tata Consultancy Services
  • Jun, 2011 - Oct, 20121 yr 4 months

    Software Engineer

    IonIdea
  • Nov, 2012 - Oct, 20152 yr 11 months

    Development Consultant

    CSG International
  • Nov, 2014 - Oct, 2015 11 months

    Presentation Layer Engineer

    Neev Technologies

Applications & Tools Known

  • icon-tool

    Git

  • icon-tool

    Azure

  • icon-tool

    SQL

  • icon-tool

    Springboot

  • icon-tool

    SonarQube

  • icon-tool

    Jenkins

  • icon-tool

    Maven

Work History

14.8Years

Technical Lead

Circana
Apr, 2023 - Present2 yr 8 months
    Leading a team of 17 Engineers that include both developers and QAs. Established a team from the ground up which became operational with minimal supervision needed within 3 months. Designed a system to automate critical manual work, which increased the delivery efficiency by 300% that reduced QA effort by over 200% as well. Led the team with plan of scaling to reprocess close to 4 billion records. Delivered results in 50% less time than originally anticipated with data accuracy of more than 99%.

Software Designer

Microfocus
Mar, 2018 - Feb, 20234 yr 11 months
    Developed and reviewed code written for RESTful APIs to be used in the product increments. Doubling up as a CPE(Current Product Engineer), solved over 400 customer issues, being involved directly with the end customer on calls. Made high impact code customizations, thus resolving critical customer issue where the production remained stuck. Resolution decreased error tickets by over 20%.

Technical Lead

Tata Consultancy Services
Dec, 2015 - Feb, 20182 yr 2 months
    Improved an application that required collaboration of customer services of ATLAS across Europe and North America, thus reducing customers cost of operation by about 30%. Coded an out of the box ticket management system that would collect data from different ticket systems in JP Morgan and would present it in a portal to stakeholders, thus saving at least 8 manhours a week for an individual.

Presentation Layer Engineer

Neev Technologies
Nov, 2014 - Oct, 2015 11 months
    Wrote style guide based static and dynamic web pages with 100% accuracy for end customer to use. End customers could use the page to compare glasses, register power figures and order specs using the same online. Enhanced style guide based static web pages with 100% design accuracy to be used by other team members to integrate in AngularJs based application.

Development Consultant

CSG International
Nov, 2012 - Oct, 20152 yr 11 months
    Worked on customization of SingleView (Billing product of CSGi) to produce 100% centralized bills for Telstra Australia customers.

Software Engineer

IonIdea
Jun, 2011 - Oct, 20121 yr 4 months
    Implemented out of the box sub-products that were used by CSR(Customer Service Representative) and network operators to sell these sub-products to the end customers(mobile phone users) to improve revenue by up to 10%. Did RCA for a customer issue and changed the platform code thus improving the load time of problematic data by over 500%.

Achievements

  • Built a tool which has automated majority of the manual work, thus increasing the development velocity by more than 200%
  • Received awards and customer appreciation for customer satisfaction and consistency at work

Major Projects

8Projects

ReceiptPal

Apr, 2023 - Present2 yr 8 months
    Leading a team of 17 Engineers that include both developers and QAs. Established a team from the ground up which became operational with minimal supervision needed within 3 months. Designed and developed a system to automate critical manual work, which increased the delivery efficiency by 300% and also reduced QA effort by over 200%. Led the team with plan of scaling to reprocess close to 4 billion records. Delivered results in 50% less time than originally anticipated with data accuracy of more than 99%.

Data Protector

Mar, 2018 - Feb, 20234 yr 11 months
    Designed, wrote and reviewed code written for RESTful APIs to be used in the product increments. Doubling up as a CPE(Current Product Engineer), solved over 400 customer issues, being involved directly with the end customer on calls. Made high impact code customizations, thus resolving critical customer issue where the production remained stuck. At times on customers production environment.

ATLAS

Aug, 2017 - Feb, 2018 6 months
    Led a team of 8 developers, that contained experienced developers as well as freshers. Developed an application that required collaboration of customer services of ATLAS across Europe and North America, thus reducing customers cost of operation by about 30%.

CIB Technologies

Feb, 2016 - Jul, 20171 yr 5 months
    Led a team of 6 developers that contained mostly experienced developers. Designed an out of the box ticket management system that would collect data from different ticket systems in JP Morgan and would present it in a portal to stakeholders. The application would save about 20% of the time for stakeholders as they could get what they needed in just one portal.

JnJ

Nov, 2015 - Feb, 2016 3 months
    I worked as a team member to develop an end-to-end e-commerce application for Johnson and Johnson. Developed style guide based static and dynamic web pages with 100% accuracy for end customer to use. End customers could use the page to compare glasses, register power figures and order specs using the same online.

Tuul

Mar, 2015 - Oct, 2015 7 months
    Worked as front-end developer to make a mobile first CSR(Customer Service Representative) application. Developed style guide base static web pages with 100% design accuracy to be used by other team members to integrate in AngularJs based application.

Telstra

Mar, 2014 - Jun, 2014 3 months
    Worked on customization of SingleView (Billing product of CSGi) to produce centralized bills for Telstra Australia costumers. Wrote scripts which could be used to customize bills based on individual customer needs as well.

OCS

Jun, 2011 - Oct, 20121 yr 4 months
    Worked on OCS(Online Charging System) to make out of the box sub-products which would be used by CSR and network operators to these sub-products to the end customers(mobile phone users). Did RCA for a customer issue and changed the platform code thus improving the load time of problematic data by over 500%.

Education

  • B. Tech in Electronics and Telecommunication Engineering

    DRIEMS (2009)

Certifications

  • Leading others, issued by gp strategies corporation on august, 2024

AI-interview Questions & Answers

So about me, it's, uh, about me, it's like, uh, sorry. I, again, went back. For instance, when you had a leverage book. So I was. Yeah. So I recently went through this. So what we do in our project is we basically have emails. We we process emails, and the emails basically has subjects. And, uh, if you are doing any online purchase, we have items, and then we have, like, totals that we that is given to us for which we paid pay the bills. So when we what we do is process the email files and extract data out of it. So the email files that we were receiving had, like, a lot of metadata or bad data, basically, we could say, with the subjects. And we, like, identify our, uh, files through the subjects only. So in order to remove the in order to clean up the subjects, we had to I had to make a make an application which involve both, uh, Python and Java. So through Python, I was, like, downloading all the files or I won't say downloading. I was, like, copying all of data from the production to my local, and then I would run a utility which would, like and that's that utility would be was built on Java. So that utility would clean up the email files or the subject. And then once the subject is cleaned up, we had to, like, group it group the subjects together, its counts, and the dates dates in which it was received and all. And once that was done, means, like, a 1000000 records could be a 1000000 emails could be reduced to a group of, like, 10 subjects or 20 subjects like that. So I built a utility of that kind. Yeah.

So to start with, as for single responsibility, basically we have to, whatever we are doing, like if we are making an application, which is like, let's say an e-commerce application, so e-commerce will have different participants in that and like, let's say a participant is a customer, a participant is a delivery boy, a participant is a restaurant. So one particular set or should only represent one particular participant. So if I am making a class, which is for ordering food or ordering, let's say anything, like let's say I'm ordering a keyboard, so it should have only order related data and when it comes to payment, a payment class should have only payment related information, both should not be mixed. So that would be our single responsibility and O for open close means we should be open for extension, closed for modification. So if I want to like add some more details to the order, I should be able to like add it through some other means and I should not be modifying what already exists and what's already working. So it should be written in such a way that it could be extended and let's call substitution principle basically. So if we do coding to interface, do write code in the way of coding to interfaces basically. So if we are writing something like let's say car and it's a car is an interface and it is implemented by say an auto. So we should be able to put an auto into a car and we should also be able to put a polo inside a car and that the things below it, which is like extending it or whatever is written to support should not be should not break. I was in person. So basically this, this is where for I, I forgot the extension or the abbreviation, but this is basically is to like when we are making an object for a something that is going to be used in my current class, we should not be passing or we should not be making the new object itself. So it should be passed as a parameter means so that it is like the two objects or two classes remain independent of each other. So it is basically inversion of control thing that we use in use in spring. I forgot the abbreviation and D is for, is for D is for dependency injection. Okay D is for dependency injection. The first one that I said means before the statement that I just read before these for dependency injection and we pass an object as parameter to another object, not directly make a new object.

I am not sure on this I have not worked on the AI models yet so as far as the micro services itself are concerned we could have like micro services in different languages and that could work together so all I can think of over here is inside a Java micro service we can call another micro service through a URL and that could do things we want to do but AI models itself is not a familiar ground to me as of now.

so first up of course an introduction of a new microservices should not disturb the existing ecosystem so basically it should run independent of the existing ecosystem and should be a complete entity in itself and could should be deployed in a separate server which could like start communicating with the existing ecosystem through URLs and yeah for the existing system whatever communication happens we should have a like failsafe design so if the if the API call is not successful then it shouldn't break the system or other API should not get affected with it so when we are introducing a new one basically it should be as non-existent to the existing ecosystem as if it was never present so the considerations what I can consider over here the so basically I should just be aware of what API's are being exposed by the existing system which I can use in my new new microservice that I am going to introduce and I should be having the documentation of the existing ecosystem API's means how it can be used and what things need to be passed to access the microservices in the existing ecosystem basically it's documentation I can think of that only

Then should you opt for monolith architecture or micros is personally concerning Java and Springboard application So I Should consider a monolith over micro service if my maintenance means there are several things over here that Needs to be considered So the first one would be I would say it of course would be the size of the application and Means that as the size of the application increases it basically becomes hard to maintain and it becomes tough to like deploy or maintain the application itself, so Yeah So if the first point would be to consider monolith over microservice is if my application is small enough to be like deployed and Like The damage on stopping the service should be minimal Then yes monolith is fine Like we do in our current project The Second could be the Rk the cost related to microservices means So if we are using micro services architecture Then we probably are going to think of the infrastructure where we wherein we will be like using multiple servers to and Then there will be like different infrastructure involved in maintaining those micro services or like Monitoring those micro services. So those things come at a cost then there will be like the downtime could be minimal, but then the maintenance means Maintaining the logs or just going through the logs itself if something goes wrong becomes a little more challenging than what we can have in monolith where it could be like straightforward and What else You What else I can do over here for monolith, why should I choose monolith? You When it comes to the development or like creation of the deployment Is basically as As a coder I would say that it becomes much easier for the developer himself so because he won't have to go here and there and he won't have to like Think of ways to like Basically thinking of different ways to for the downtime to be minimal or for the failure to be I'm not really sure means what else I can think of as of now You

Examine the java code that is in need to lazily initialize an instance of service Can you explain what is wrong with this code and how what could happen if multiple transactions get service instance methods simultaneously? Private static service service public static service gets service instance if service instance equal to equal to nulls Then new service returns service instance service Instance of a service So what's happening here is it's not synchronized It's not thread safe So it could happen that a thread accesses the service factory and goes to the line private static service service instance and then it doesn't Reach the next line the next threads accesses the class And then it also sees the service instance as null then goes on to initialize the service and then It doesn't return and then it basically Goes back to the first thread So first thread means now the service instance has been initialized and it's a static variable so The second thread will also So The second thread has its service instance still as null It will go inside and then it will try to initialize. So the service instance has been initialized by Twice And now There could be a conflict over here means since it is static so Basically there will be two instances which has not The way we are looking at we don't want to initialize The service instance twice. So this public static service get service instance method This needs to be synchronized this needs to be made thread safe

Given the java snippet below, can you identify the problem with the singleton design pattern implemented here and suggest how it could lead to issues in the multi-threaded environment? Okay, private static singleton instance for get instance. So it's again, I'm looking at the same problem as it was in the previous one. So since get instance method is not synchronized, it is not thread safe. So there could be like two threads coming in. One comes till the private constructor or private singleton line and then the control could go to the next thread and then it will come and we'll see that instance is not initialized. It will go inside the method, get instance, it will try to initialize and then the control, it will initialize the instance and then the control may go back to the first thread and then the first thread will also initialize the instance with new singleton. So instance will be initialized twice, which we are trying to avoid and so we should make it thread safe so that once it has been initialized, once the instance variable has been initialized, it doesn't need to be initialized again, no matter how many threads try to access this, it should get, all the threads should get the same instance of the singleton class.

So when we are talking about the microservices ecosystem and then there are multiple data stores as well, backup strategy for a microservice ecosystem that spans multiple data stores. So having worked on the data protection ecosystem for five years, I could like think of the easiest way is to like backup each server where every microservice has been deployed and there are multiple data stores, each data store will have its own backup. So as soon as, whenever a microservices goes down, it can have like a backup means each microservice needs to be deployed in like different servers. Like it depends on the size of the application, the might of the service provider itself means the might of the owner of the application, how much money he has got means how many servers he can access or how much he can spend. So we can have like multiple servers for one microservice and then even for backup we can have like, we can have each server backed up in different places. Like maybe as I had worked in a, in an organization where all the data were like was backed up in at least two places in different geographies so that even if some disaster happens in one place, all the data could be restored. So yeah, first up means just to make sure that the application doesn't go down, we should have a microservice, every microservice in the ecosystem running on multiple servers. So like if we have 10 microservices in the ecosystem, we should have like, maybe we can have 40 servers running, four for each microservice and the data stores wherever, like whatever data stores we have, we could have the backup of the data store itself running parallelly to it. And if one server fails, one server fails in the, for the data, the others could be used as a backup immediately. And apart from that, the data store itself, the server itself could be like backed up in different place where, which is not meant for running the application, it's just meant for a backup. So as a, as a server goes down, we replace it with a new server and then we like copy all the data from that particular backup and then we are back in business. So yeah, is there, there are different ways, a lot of different ways which we can think of, but these are a few things we can think of, yeah.