Software Development Engineer - 3
CradlepointProduct Technical Lead
ChainThat LimitedSenior System Engineer
Infosys LimitedIntern
Infosys Limited
REST API

PostgreSQL

Python

Java 8

Java

Amazon DynamoDB

Apache Kafka

RabbitMQ
So, hi. My name is Lalit. I'm currently working as software engineering 3 with Scrapoint. So, uh, my total experience is around 8, like, soon to be 8, which includes the internship period has been. So if not, uh, if if we do not consider the internship, it's 7 and up. Um, I'm currently working as a Java back end engineer and working with multiple microservices over here. So this is a product based company which deals with commercial routers, private SIMs, private networks, and everything. So I'm working working on it using Java, uh, AWS, RabbitMQ, Postgres, DynamoDB, Python as well. So it's most of the all of the latest intelligent technologies over here. Uh, prior to this, I used to work with, which into reinsurance domain and work with Blockchain Architectures, the Blockchain, uh, Networks as well, uh, where we used to develop the entire reinsurance business into that. And prior to it, I used to work with Infosys, which was the first company. Again, All of my relevant experience has been in Java and Java development as well. But, uh, some of them with customer supports and customer supports and, Uh, a little bit of automation using VOTA, which is we have. But, uh, uh, mostly, it's been developed
When did you use a rebase instead of a merge in git? So merges is used when we are doing we're doing some kind of changes, like when we merge from one of the changes to our branch. Is done when there are multiple kind of changes, and I think when, uh, 2 there are 2 open MRs or PRs in case of it. So if one of them goes in and then the other the other needs to be rebased on top of it so that the the new the new changes which went in the roster is also present in also present in the other MR as well without any conflicts. So that is necessary. I just did 3 ways. But merge is like when we are pushing the renewal changes to the master branch or any other parent branch.
What are the contact decisions to ensure the data consistency using transactions in SQL, uh, which may ensure that each of the transactions are. Like, it's atomic consistent Uh, isolated and this one more. So data consistency needs be there. Like, uh, there's only 1 update happening at a time. Uh, and, uh, the update is threat See if there is no race conditions which are happening. And, uh, the data, Uh, if it is, uh, the database, if it's sharded when we showed not Sharded. There is there is a database replicas present in all of the replicas are updated eventually. So it's, yeah, eventually Consistent on that time on the time frame. Unless and this, uh, the made most consistencies always required. Any other outgoing any other incoming calls should be kept on waiting before we try to update any kind of a data or any creative data. So there is no, Uh, no what what's the term? No collisions happening on that.
The following code snippet are the full end point is there. Can you identify the importation issues? Post mapping create a response entity. Uh, user deposited to the c would return. Response entity dot okay. I think it should be create responsibility to create user. That should be it should be, uh, if it is Creating a new user that should be 401, not 400. Okay. Sorry. 201, not 200. So okay is 200. So we should use 201 or, uh, for the new entities. Other than that, uh, I think this is fine.
Consider the following code encoding. What is the purpose of dash? And, uh, where text is defined as valid text This is going to string. Okay. There's a purpose of version. So It's kind of a any kind of so value text Could be anything. But if this is this, like, it could be list, could be a single object. That sense. Not really familiar with Kotlin. I'm more like a Java guy. So, Uh, not sure. I need to practice it. I'm not sure about this one.
How could you secure sensitive risk for endpoints in Spring Boot applications? So sensitive, uh, and endpoints could be like, there could be multiple ways, uh, over there. There could be, uh, it could be secured, like, where the g w two take ends or or a bare token in that sense. Where the token we're talking to specify like whether the user has an access and whether the user will be provided access. It could be rule based access control. Where if, for example, a certain set of endpoints could only be provided access by the user who have that role and have the permission to, access that action. And the token could contain like, when the user will contain, the token will contain that information. So before accessing the endpoint, the token will be validated that whether that particular user has permission to exit this particular endpoint with the following with any kind of h t p action. For example, certain user could readily access get, but admin user can access all of this. So those kind of thing will be there. And that needs to be evaluated properly. Okay? Uh, that is why I think how we can secure the rest of the endpoint. And the rest end point should also be directed to the security mechanism. It cannot come in as indirectly like the authentication the authorization should be done properly before we access that. So that is how we can secure
The following coding goal business uses spring boot to connect to process. My data server might not initiate the user So the data says might not be initialized Probably if because the spring boot and the configuration, like, it it auto it auto checks whether the following username and the password, Uh, I configured properly or not. Like, further excuse me. So the spring would auto checks for that configuration. So the other the configuration and the and the property source, we give the class Yeah. I will take where it will contain all the information. Configuration will auto configure it, uh, in the back end. So if you provide the incorrect username and incorrect Password or any of the URL. It will auto check whether this particular user has access for, like, particular no. This password. Whether it has access to this person URL or not. So those kind of configuration and the checks are done behind the scenes, by the others. So if those are incorrect, uh, Spring Boot will not allow us to go to the next source. That is why the data source might not be initialized properly
How do you handle versioning in the restful API design with Spring Boot? Uh, so handling, uh, is done like when at the rate components. Uh, I don't know, handling configuration, like, when we say we give the data source over there. Right? The URL, uh, of it along with the host and the v one and the v three. Uh, for example, if it is an internal, we use v one. If it is a v three so if it is an external, we like, for now, system we use v threes. Uh, other than that, I think it should be auto upgraded. For example, if there is any change, uh, any change in the endpoint, uh, then we increase it, like, 1.1.1.1.2. Like, in that sense, we have to define it. Some of the application does not allow, like, backward compatibility. So we need to handle that. And also, uh, if you upgraded, we need to uh, depreciate the old endpoints along with the time. For example, it might take we could uh, there are certain ways where we could, like, let them know, intimidate the users that whether how do we we are going to depreciate there and we uh, going to release the newer version of it. And, uh, given the time, we can use it slowly and or we can have, like, the uh, the complete support for the old older or the backward versioning will be removed. So that is how we can handle the the restful API uh
How do you use advanced gate features to manage a hot fix on a production branch while working on a feature branch? I think while, uh, using cherry pick, is that, Uh, what the answer you're looking for? Like, we could cherry pick a particular commit. So we can, uh, we could working on a feature branch, we can just Test that hotfix on the feature branch. We could see that everything is working into it, do all kind of testing, and then just cherry pick that particular comment onto the production branch and the user and the user on the production branch. That is how we can, you know, manage it without while not moving the entire thing from a feature branch to production, but only that particular commits.
What strategy would you apply to ensure 0 time downtime deployments for a spring boot power services? Uh, so here, uh, what we use is Here, what we use is, like, the Docker and Kubernetes. So we have the different ports for each of the services. So whenever we need to deploy a Spring Boot powered location, uh, to the AWS, which is in the cloud. What happens is, like, we could create a new, uh, the new service New the new service or the new port new service port, uh, with the latest, uh, latest version on this. And while the timer is not up, We we are still continuing running on it. And once it is deployed, we bring down the older version and redirect that all the connection services to the newer parts. So that is one of the approach.
Benefits to coding support we provide for the back end development. Uh, I'm not sure about that. Sorry.
Has been used in a Spring Boot application for smoother feature rollouts. Well, there's one approach where I think we could use feature bindings over here. Like, uh, so we could ensure that the feature bindings are there. For example, we don't want, uh, we are testing out a new feature and it is in a beta version, but we want to test it out to a larger live customers out there. So we could there is a if we introduce a new feature, we could introduce feature band effect, feature toggles, what what summation over there. And that could be opened up to the particular uh, what a selected group of customers to test it out. So if, uh, the feature bindings are enabled for those group of customers, they can those features will enable, and we can, uh, live test on them. And based on their response, their feedback, and any, we could test and fix everything before rolling uh, out of the larger audience. So that is how we can control each and each and every newer feature over there. Also, for example, if there is a beta with Lease, uh, we could use a subscription model, like whether the newer user new selected group of customers are interest interested in those, and so we can enable for only a group of them. Uh, that is how