profile-pic
Vetted Talent

Karan Jain

Vetted Talent
10 years of working experience on MEAN Stack (primarily Node.js) and 4 years on AWS services. Built and successfully delivered over dozens of applications and has been appreciated by clients many times. Led team of 7 members including Dev and QA. Couple of Projects have generated over $310K revenue over time.
  • Role

    Senior Software Engineer

  • Years of Experience

    10.3 years

Skillsets

  • Express Js - 7 Years
  • Type Script - 4 Years
  • JavaScript - 10 Years
  • Mongo DB - 8 Years
  • Node Js - 10 Years
  • APIS - 10 Years

Vetted For

12Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Technical LeadAI Screening
  • 61%
    icon-arrow-down
  • Skills assessed :Node Js, Type Script, Jest, Cloud Services, APIS, Git, Jenkins, Java, Spring Boot, Python, third party APIs, payment systems
  • Score: 55/90

Professional Summary

10.3Years
  • Jan, 2021 - Present4 yr 8 months

    Senior Software Engineer

    Likewize (formerly Brightstar)
  • Feb, 2018 - Dec, 20202 yr 10 months

    Team Lead

    Alpha Victoria Studios LLC
  • Jun, 2016 - Feb, 20181 yr 8 months

    Senior Software Engineer

    Tradebuilder Technologies Pvt Ltd
  • Aug, 2014 - May, 20161 yr 9 months

    Software Engineer

    LaneSquare Technologies Pvt Ltd

Applications & Tools Known

  • icon-tool

    Node.js

  • icon-tool

    MongoDB

  • icon-tool

    Angular

  • icon-tool

    HTML

  • icon-tool

    CSS

  • icon-tool

    Ionic

  • icon-tool

    Flutter

  • icon-tool

    Postgres

  • icon-tool

    AWS Lambda

  • icon-tool

    AWS S3

  • icon-tool

    AWS Amplify

  • icon-tool

    AWS SQS

  • icon-tool

    AWS API Gateway

  • icon-tool

    AWS IAM

Work History

10.3Years

Senior Software Engineer

Likewize (formerly Brightstar)
Jan, 2021 - Present4 yr 8 months
    Increased the contribution on this product by 50% out of 7 backend developers in the company since Jan 2021. Even current companys employees ask for directions for resolving issues. Appreciated by Client in 3 months review. Client administered and conveyed to payroll company about mastering the above-mentioned technologies along with righteous way of solving problems. Started taking architecture solutions for the product since July 2022.

Team Lead

Alpha Victoria Studios LLC
Feb, 2018 - Dec, 20202 yr 10 months
    Analyzed, planned, reviewed, integrated with mobile and web apps below listed 5 applications. Developed 70% new features and shaped 30% old functionality for products - EgWebApp, Ticket App. Implemented 90% American Flooring as front-end and back-end developer. Achieved and maintained 100% of functionality for JWStone International, CPI product with proper designing, deployment and backups. Led a team of 5 members where 4 of the members are freshers with proper training, mentoring. Delivered work always got the positive feedback from most of our clients. Clients were satisfied with the work, knowledge, humanity and integrity.

Senior Software Engineer

Tradebuilder Technologies Pvt Ltd
Jun, 2016 - Feb, 20181 yr 8 months
    Arranged, researched, solved and built below listed 7 products. Contributed 70% on MLS (Multiple Listing Services, Eastbay, CREA, CCA) project as full stack developer. Conceptualized, researched & developed and shaped 100% these product Dynamic Entities, Funnel (CRM), Drip Campaign single handedly. Designed Alert & notifications, schedulers, rule engines and sustained these 3 functionalities. Attained 80-90% on these above-mentioned major products along with some minor products. These products cover over 50% of the major operations of the application.

Software Engineer

LaneSquare Technologies Pvt Ltd
Aug, 2014 - May, 20161 yr 9 months
    Computed, streamlined, simplified, redesigned and nourished 1 product over span of two years. Redesigned and refined product Pickcel where 60% contribution was on new operations and 40% to maintain the old functionality as backend developer. Revamped the whole UI/UX for product Pickcel as Frontend developer where 70% contribution was in moving the old platform to the new platform using Angular JS and 30% in building new functionalities.

Achievements

  • Increased the contribution on this product by 50% out of 7 backend developers in the company since Jan 2021. Even current companys employees ask for directions for resolving issues.
  • Appreciated by Client in 3 months review. Client administered and conveyed to payroll company about mastering the above-mentioned technologies along with righteous way of solving problems.
  • Started taking architecture solutions for the product since July 2022.
  • Delivered work always got the positive feedback from most of our clients. Clients were satisfied with the work, knowledge, humanity and integrity.

Major Projects

6Projects

EgWebApp, Ticket App

Feb, 2018 - Dec, 20202 yr 10 months
    Developed 70% new features and shaped 30% old functionality for products - EgWebApp, Ticket App.

American Flooring

Feb, 2018 - Dec, 20202 yr 10 months
    Implemented 90% American Flooring as front-end and back-end developer.

JWStone International, CPI

Feb, 2018 - Dec, 20202 yr 10 months
    Achieved and maintained 100% of functionality for JWStone International, CPI product with proper designing, deployment and backups.

MLS (Multiple Listing Services, Eastbay, CREA, CCA)

Jun, 2016 - Feb, 20181 yr 8 months
    Contributed 70% on MLS (Multiple Listing Services, Eastbay, CREA, CCA) project as full stack developer.

Dynamic Entities, Funnel (CRM), Drip Campaign

Jun, 2016 - Feb, 20181 yr 8 months
    Conceptualized, researched & developed and shaped 100% these product Dynamic Entities, Funnel (CRM), Drip Campaign single handedly.

Pickcel

Aug, 2014 - May, 20161 yr 9 months
    Redesigned and refined product Pickcel where 60% contribution was on new operations and 40% to maintain the old functionality as backend developer. Revamped the whole UI/UX for product Pickcel as Frontend developer where 70% contribution was in moving the old platform to the new platform using Angular JS and 30% in building new functionalities.

Education

  • B. Tech (CSE)

    Lovely Professional University (2014)
  • AISSCE (12th)

    Kundan Vidya Mandir (CBSE) (2010)
  • Matriculation Examination (10th)

    Ritambhra Public School (2008)

Certifications

  • Aws associate developer - acg certified (a cloud guru) 01/2024 06/2024

  • Mongodb aggregation - mongodb university 01/2019 01/2019

  • Mongodb basics - mongodb university 05/2019 07/2019

AI-interview Questions & Answers

About your background by giving a brief introduction to yourself. So as you know, my name is Karanjan. I'll be working as a Node sales developer for around a decade now. Uh, for done, uh, going purely into a technical background. I worked. Is it recording? Yeah. So I've I've worked mostly into the health care domain. Couple of projects which I've worked on health care domain is due to insurance and the claim adjudication system that those were my recent project. Before to that, there were project, like, uh, really straight related, uh, into the US and the Canada, the MLS and the East Bay, open houses. So we pulled up all those information from the MLS, uh, data warehouse, and then we used to keep keep a track of all the data into our database. Then there were some drip campaign related functionalities, uh, which where we used Twilio and SendGrid. We used to send our scheduled SMSes, all the emails to our to our customers. And then I worked on there there there is another real estate domain like fgfggone031, if I remember, uh, correctly. That is the one domain where I worked on on the real estate. Then my my first project that was very interesting project, that was a a Raspberry Pi with the Node JS server in the US and Angular. So we used to we used to have a display set up in in different malls in into the, uh, Bangalore, uh, Bangalore and the some some restaurants and as well. So we used to play the advertisements for our customers onto those displays, and that's how the company started started getting the revenue for for the company and for the employees, um, after that much. And I started as an install developer. Like, I worked for around 6 years as a install developer completely. Then I started focusing more onto AWS technology, so I stopped working, um, more as a a front end developer. I started working as a back end developer plus the AWS serverless technologies like Lambdas, SQS, Kinesis, s 3, DynamoDB. So I've worked, um, other Amazon service, which I've worked on RDS, Glue as well, uh, Step Function, and that that is also part of as well as so, yep, that's it. Thank you.

To answer these questions, I've so I've been using notes. We we can apply a lot of load balance on top of we can have multiple servers. We can apply low load balance on top of it. If we have a lot of traffic, that is one step we can do, or we can start using the Lambda function serverless technologies. If our functionalities are which can be processed within couple of minutes or seconds, then, yeah, Lambda functions are fine. It's going to take more than 15 minutes where Lambda doesn't work after 15 minutes. We can go over the fire gates as well. So, uh, using that fire gates, we can achieve all those things. And we are, again, on the top of a bargain. Maybe we have to apply the load balancers so that, uh, we can distribute our request to multiple fire may maybe in the fire gate, we don't have to apply. But in the in the containers part, yeah, we can apply the load balancer. Uh, I'm I'm talking about last 3 containers. There, we can apply load balancer. If you're using e c twos, there also, we can have multiple servers and then apply a load balancer where the traffic can be distributed. What other way? Configure trying to unexpected large volume of incoming request. Other part, like, assume you are running a very well 2 or 3 servers where you are able to perform well, but unexpectedly, you started getting the large volume. And you can have a, um, there is scaling group. Yeah. You can add a scaling group here, uh, according to your need. Like, if your server is growing, uh, more than 80% of the CPU usage, you can have 1 more server running up that that can not running up. You can have 1 more span server spin up, which can handle your, uh, other request. Similarly, you can have a same scale scaling loop to reduce as well. Like, if your usage is now going lesser than 30%, then whatever servers you have spun up, you can just, um, close and then terminate them.

How would you enter branch security in kit for parallel feature developments and hard fixes? So, basically, for parallel feature development, so what we do is, uh, base basically, there are, um, so we have we have around 4 environments. So one is the production environment, then the eval, then stage, and then the development. So, basically, we start our working into from the development. For all the normal functionalities, we work on from the development, uh, environment. Whatever the feature, uh, according to the epic, we create a branch. From that, what we do is we, um, start working on it. That is for normal development. So when once our development is done for that particular feature or that particular story, and we deploy the whole branch into the into the stage environment. If there is a hotfix, then what we do so hotfix, usually, it goes to the master environment. So we take a pull of, uh, I think we can create a a branch from the main. We create a hotfix branch from the main, and then we, uh, deploy that same branch. Once once we are done with the development for the hotfix, we deploy that same branch, you know, develop stage and develop. It is tested out by these different parties. Development is by developers. Stage is for the testing people. Eval is for the business. Then once this I'll I'll say everything is fine, then we use that same branch to deploy into the master. That's how how we work with the, uh, hard fixes on. Yeah. This was smaller than

How would you aggregate a node application for high availability and fault tolerance in the cloud? It's more of a same answer to the, um, having a lot of traffic. So high availability, maybe we can have multiple servers running up into a different different regions. Like, I'm taking an example of AWS. We have multiple regions. So we can if our user base is being spread across the world, then we can have multiple servers spanning spinning up according to whatever is nearest to the, uh, our demographics. Like, assume, uh, a lot of them are from the India, then we can have a server running up in Mumbai, then a lot of them in into the US and into US east 1 or US west 2. So we can have deployed the servers there. That will achieve the high availability. And default tolerance, uh, it again scaling group can help into that, or maybe alarms can help into that. So alarm, what can happen is if any of the servers go down, it can trigger an alarm. And from the alarm, maybe, I guess, we can trigger a scaling group, which can help us to spun up a new server and terminate the older one. That's how we can achieve the 1212 runs as well.

What criteria will you use to decide, uh, between deploying a Node. Js application? To be honest, I have never used the server or GCP. Mostly all of the companies are moving toward the serverless. I'll say AWS is much better because I've I've been using AWS for a long time, and working with AWS, I'm I should not say that. AWS has much more resources as compared to, like, if like, SQS, KNSL, ClueJobs, Fargate, ECS, uh, Lambdas, obviously, um, step functions. Orchestration is very easy in AWS. Uh, to be honest, I don't have much knowledge on the Azure or GCP. I've not worked much on them, so my answer is totally on to the AWS.

In notice, how would you efficiently manage sessions in distributed environments? Um, manage sessions. Um, so there there are multiple ways in different in a distributed environment. So it should not be that much difficult. Uh, again, not talking into the AWS servers because, again, WebSocket is little bit slightly tricky into the, uh, serverless. Managing sessions into the assuming an EC 2 instances. It it's it's not I I don't think so. That's efficiently manage efficiently manage the issues. It's once a WebSocket connection created because in in Node. Js, everything is, uh, rest like, we create a normal API. It's restless, stateless. If you want to maintain a state, it means have a session, then we can have a WebSocket created. That way, another way could be, like, Cognito achieve is, like, uh, whenever you are playing with the Cognito, it until unless you don't you are not sign up, it it maintains a continuous session for that particular user. Mhmm. Mhmm. Maintaining efficient in the session. Manage session. Oh, or in a distributed in Node. Js oh, sorry. Why I was thinking about the, uh, sockets? So what we can do is if you know, we know it it is most of the APIs are stateless. If we want to use for the stateful, then we can go for the, uh, WebSocket. Otherwise, uh, then name in the WebSocket. Why it has to be stateful? Okay. Assuming it it's a state list. So, basically, we can manage session as, uh, use using the token. Um, so whenever the user logs in into the, uh, your portal or calling maybe calling your API, it has to first create a token for you. That token will help you to manage the session of that particular user. So, uh, basically, we have mostly kept the session for up to 1 hour. So within 1 hour, user is willing to, uh, perform all those authenticated, uh, operations, which he can. Otherwise, if he tries to perform any of the another unauthenticated operations where he has the he does not have the access, it will get he will get an error. As soon as the token expires, if he's using the same token, like, assuming up to 1 hour token expires and he's using the same token, he will get the error. And, basically, the it's it's a client responsibility. If as soon as it gets the error, they have to generate the new token. So that's all. We can manage these sessions.

Get this JavaScript async function. What's wrong with the try catch block? It's been used. How would you rewrite this to correctly handle errors in the asynchronous scan test? Oh, wait. Fetch Data response dot JSON. Consult dot data e f. How do you read this to correctly handle errors in an asynchronous context? Try catch. So, basically, I'm not returning anything. They're just I kept printing out. So the try catch block is being used. What's the how the Tricast is being used? Get response to JSON.log. Response.json.log. It's response to JSON.console.log. I don't think so. I think this incorrect error. Try calling the function. That's then response to JSON. That is data. Console or data. Edit. So maybe instead of printing the whole e, we should say e either e dot stack, uh, address text or maybe e dot message so that we can get the specific message only. Uh, how could we rewrite this to correctly and allow us in the async context? I don't see an issue. The only thing which I'll say is, uh, print a better error so that you can get to know instead of the dot message or e dot sectors. And the email and these factors. Response. Instead of saying response because sometimes it can mismatch with your global response of the API. The issue show you should use a better variable response of this API. Then okay. There was something with the try catch. How that try catch being used. Try catch. I don't see an issue with the try catch. Just the error. Just the message.

Examining the following note is express code snippet. This into a performance issue in setting the database. Can you enter what might be causing the changes how it could potentially be fixed? Constant users await user dot find users dot users. It's just to await user dot find. Then once users are dot find, then you UID, see, also request our parent. ID. Instead of making the the first one is also database call. 2nd one, I don't know. Okay. Maybe that's just some point internal JavaScript function. It helps to find. So what we can do is in the database yourself, while making a call at the 1, 2, 3rd line, we can mention there because as you know, right now, you have a user, 100, 200 users, when it goes to millions, pulling up all the million records should not be the correct approach. As you are getting the unique ID of that user, you should pass that unique ID in the database call and pull up the one record itself, not more than 1. Yep. That way. Yep. That should be the only solution.

How do you ensure Cloud Native Node Trust application respond gracefully to both predictable and predictable failure scenarios? Failure scenarios. So, basically, failure scenarios, your message has to be correct so that user understand what is the failure or client understand what is the failure. Second thing, um, for that that's about what for repeatable scenarios for unpredictable scenarios. Again, uh, whatever the API was and is intended to do, in case of any failure, the data should roll back. That is first thing. And then, uh, it should tell to the user of if if data gets rolled back, then, uh, it should not mention to the user that there is some, um, error, so they can retry again. And in the case of unpredictable or even in the predictive version, we should set some alert that, yeah, this error came up so that, uh, a respective team can look into it. Anything else? Yeah. That says it. Have to get the errors, you can set up CloudWatch alarms, which can be integrated with a lot many things. You can have the SMS or maybe Splunk integration as well then that can help to get the notification.

Techniques would you use to reduce the complexity of large spring boot application? Spring boot. Uh, to reduce the complexity of large Spring Boot application. I am not sure about ex what sort of, uh, complexity happens in the Spring Boot application. What could be I've never logged into the many of the Java code. Spring boot application complexity. Maybe if any code has in complexity, try to try to divide it into chunks so that each and every functionality is understandable, have a proper commenting. What else? So that was an argument installed so that it can force you force you to uh, make it a smaller function. Yeah. Complexity. If you found that complexity is more than 15 of any particular edition code, it asks you to, uh, shorten it down. Um, what else we can do? Complexity. No. I don't think of anything else. Major things divided into chunks so that those chunks can be reused for many other things.

How do you perceive the trade offs between using Java and Python for Microsoft based offline and irrespective because there's some advantages? I've not worked much with the Java, but the trade off of Python. I don't know. Java supports the basic or multiple processing. Maybe it does by hitting threads, worker threads, then we can do in Python, it's very difficult to achieve the because when when I work with the Python team and I give them the suggestion, yeah, you should achieve the parallel processing of certain task. Should not depend on one after another because they're independent. You can call them and saying this. It's it's it's little difficult. So there, I will say I should not choose the Python. I should choose Java if I have only these two options. I think code in Java is, to be honest, very much strict, but it yeah. It everything is class basis. So every variable, everything has to be strict, like, .net. In Python Python is some somewhat similar like Node. Js. You can define any variable to anything. But, yeah, sometimes playing with the objects, Python becomes tricky. In Node. Js, any, uh, JSON object doesn't having a key will give you undefined, whereas Python will give you the error if that key is not present in the, uh, JSON. Mhmm. That will happen in towards Java as well. But Java, you know everything. You have everything is um, properly data structured. So if you are accessing any variable which is not in the type or interface, then it will give the error there itself while coding. Java, as the earlier question stated, that's a complex. So it means there is some issue with the Java. That's why people are moving to other nodes or the Python. Yeah. That is what I can see. Microservices. Maybe if you have multiple teams, like some teams know Java, some team know Python, so you can divide the task between those so that you can achieve your functionalities a little faster. Until unless you don't think that in the future that a man of the team is going to be laid off and, uh, then it become difficult for you to handle that particular code, then you should go with the one interface, 1 Java 1 programming language, either Java or Python or Node, or this not just the JavaScript. Yeah. That is what I can think of.