
As a self-taught programmer and guitarist, I have honed my skills through determination and hard work. I am proud to say that I'm also paying my own college fees, purchased my own MacBook Air and saved money to cure my body issues without any financial or emotional support.
My diverse background includes past experience as a dancer, painter, author, Tabla player, and chess player. I approach every opportunity with a passion for creativity and a love for spreading happiness and positivity.
I am excited to use my skills and experience to contribute to any team I am a part of. Whether it's developing innovative solutions as a programmer or creating beautiful music as a guitarist, I am committed to excellence and always strive to exceed expectations.
Thank you for taking the time to learn more about me. I am eager to connect and explore new opportunities that align with my values and passions.
Full Time Associate Platform Engineer
FundfinaFull-stack Developer
FundfinaFull Stack Engineer
Bestfares365Full Stack Engineer - I (Full-time)
SettylWeb3 Developer
Frontend Developer
Full Stack Engineer - I (Internship)
SettylOffice Automation Engineer
BalajiNPro Solutions
Adobe Premiere Pro

Canva

Google Sheets

Google Forms
.png)
Calendly

VS Code

Netlify

Play Store
Android Studio
So, I'd be happy to help you understand more about my background by giving a brief introduction of myself. I have worked on most of the React projects, Monstack projects, and I have also worked on some mobile projects. For example, I majorly worked on Flutter applications. I have also required those applications. I have also required a lot of React applications, the full stack applications, not just React applications. I have worked on Node.js, MongoDB. I've also worked on Figma and all these things. So, basically, I have worked in a startup for one point six years. And, as an intern, six months as an intern, then one year as a full-time employee, then I switched my job to another company. There I worked for ten months. Then I created some AI projects. The name of the project is CreditGibberty, which is a charity for banking institutions, but that are full, very custom data and very personalized data. Yeah. Like, these are the projects I have worked on. I also worked on Figma projects in my company. I delivered designs. I have also contributed a lot of open-source projects and worked with a lot of international scientists. So, these are the projects I have worked on. And, I also worked on a lot of freelance projects, contract basis projects. And I have also guided a lot of interns, and they took, like, more than 15 interviews. And, like, all of the projects, basically, you can find on my resume. So, that's it for my introduction.
You have the following query on your MongoDB. The query order. I mean, the performance is slow. Okay. How can you optimize this query? Okay. First is finding the customer ID. Another is also finding the total amount is greater than one hundred. The db order is 5125. Sort. So what I can see, like, all of these in making query in order collection with the same customer ID here. So, basically, it will create three different requests to the same collection for the same person. So what I will do, I will combine all this query into one query. So just make 1dv.order.find with customer ID and combine all this query in one statement, and it will be optimized. So there's the answer for me.
for instance, can the runtime complexity or port clarity be enhanced? Okay. We are passing two areas one intersection. Looping through this, looping through that. Checking if one is equal to the intersection. If it's not present in intersection, it includes array one. If the item is not present in intersection, push it here. And, basically, if it's not present, else it will get out. Okay? Is there anything we can improve for instance, kind of, complexity or for clarity of enhanced? actually, I can enhance a lot of things here instead of for loop here. I can use the dot map operator, which is more clearer. Because error dot one and accessing it with index I doesn't clarify that much thing. We have some good operators, good methods on array that are mapped, like, and for each. that can enhance the readability of the code. So with that, it will be more readable. Another thing I can improve is just give me one second. Actually, break doesn't make sense here because there's not a while loop. So, in any case, it will hit the break statement. So maybe I can remove the break statement, but just let me clarify why we did removing the break statement. If it goes if they are equal, okay, then it will just pause the, nested for loop. Okay. We don't need to remove the break statement then. It's fine. If they are equal, then, just move to the another element. So, yeah, the only the readability of the code I can improve with the dot for each or dot operator. Yeah. That's the answer for my side.
Has pairs with some pairs with some okay. Array target. Okay. It's going. It's going. Yes. Close. Then it's going. I plus one. Okay. You connect index to the. Okay? One area is going from all the elements. Another is going from next element from the previous, from the outer element, outer loop. So if array I plus j, it's a previous element and next element is equal to target, return true. Can you identify an effective approach? Okay. Just give me one second for the effective approach. As well with some. A new binary search. I mean, actually, I can include the runtime complexity of this. Because we don't need, I guess, another loop here. If we just loop through the first element, for example, if I'm next element, false. Fair enough, it's false now. Some check. Just finding a pair with some. Okay. Actually, no. I can't really find an efficient way as of now on this code. Sorry.
Given the three are components, can you identify bad practices? So this implementation is okay. React of parent, concept message. That's fine. You state hello world. How are you doing? Okay. Return child return, grandchild message. Definitely, I can suggest. First, the thing is we should have a profile per component. So in a one file, you have mentioned the parent, child, and grandchild, everything here. So and it's exporting by default parent only. So we should avoid that. We should create per component, per file. And the next thing would be, in the function grandchild, it should be a smaller case called it's just returning it's a helper function, and React component should be named in past tense case. So and the function helper function should be named in camel case so that we identify whether it's a helper function or whether it's a component. So grandchild, we need to make something. If it's returning a component, then it's fine. But right now, I don't see anything if it's returning, so it's not good. And this thing, function child message here. Use status order. It has some default message. It's returning what? So this thing we can do up to three levels is fine. But if it's more than three levels, then we can use context API. If anything changes in the message, and then all the components, I'll grant you, and we'll get 300. So that's what we can improve. And, yeah, these are the things basically to improve as of now.
In this notice, because of a fragment, we are handling an API request that spots a potential security or performance vulnerability concerning the handling of user codes. How do you mitigate the issue? Get the user ID. Request the response user, await the user to find by ID. The ID returns the user, after which you review the user by ID. Sometimes the user contents can contain a password in their database, which is hashed, but we still don't consider sending it to the client side. So we shouldn't send the whole object to the user. We should send only what's necessary. And I see there's no authentication middleware, which is another thing. We should implement it so that only the actual user can pass their ID and get the details. So it's a very big vulnerability in this API. We should definitely avoid this thing. You should add an authentication middleware so that not anyone can pass the ID here and get access. And also, we should wrap this thing and try to catch any block. It's a good practice because sometimes the request, I mean, our HTTP query, can fail with different network issues or maybe some type issues or maybe the method issues or anything. So this is the thing. I told you three things: add an authentication middleware, wrap the thing and try to catch any block, and add a return statement before the rest so that it won't go to the next line. That's four things we can add.
Component has some issues. Can you verify them? React to use that use state function counter. Use that. Okay. Console log count updated. Increment. The assumption is update this decrement. Count is greater than zero. Okay. The code is not rendered correctly here. There is some issue with the code render. So, but still, I can assume two things. Just a second. First thing they missed is the dependency array and user type. So whenever it gets rendered, it will just print 'account updated'. So whenever this component gets rendered, it will print the 'discount updated count'. We should only want the log, basically, when we actually update the counts. Right? So we need to create a dependency here, which is an array. And inside that array, we need to put 'count' here. So as we put 'count', so whenever we update, increase or decrease, then it will be fine. So the dependency part is missing here. Yeah.
How would you avoid callback hell? Okay. In a complex while still handling a synchronous operation, callback hell is a problem. While it's still handling asynchronous operations, maybe I can think of it as a recursion function, and I can add edge cases. So, on certain cases only, then it will call the callback function. It won't, I'm handling, I'm just running an asynchronous operation. We use async and await, so we have much more control over the code, and we can just use if and else. Still, I need to see some example of callback hell to better understand it, because I'm not aware of this particular technology.
If a is not there, return zero. Yes. Again. Total number of occurrences of target. First thing we can improve here is instead of directly checking the length, there is a method. Array.isArray is array. We need to check whether it's an array or not. If it's not an array, then we can return zero. Maybe a bad function. We can return zero instead of just returning nothing. It's better to return zero. Like, there is no occurrence of it. It tells more. If it's not an array, we can just return zero. Array.isArray(a) and check whether it's an array or not. If it's not an array, we will just return zero. Instead of bar, we can use 'l' because 'l' is less dedicated, and it's advised to use 'l'. I < a.length; i++ if (a[i] === b) This will also check the data type also. We should not use a global variable like this global val. It's not a good practice. Because maybe another function will modify it, and this happens. So we should avoid using it. Inside the bad function scope, we should put this 'val' variable. That's how it should increase the global 'val' variable. And when it gets increased plus equal to b, wait. Just a second. If a[i] is equal to b, it will be equal. We shouldn't increase it by one, not by the target value because if the target value is like, the question here is we need to give the occurrence of it. And if we increase the target value, which is b, then this is randomly increase to any value. Right? Which increase it with the one. Because we are, like, basically counting things how many it is have occurred. So we should just increment the value by one. Right? So these are the improvement we can make, and we can make it a good function.
Lens. Last question. Right? The following component has a bug when trying to update the state. Can you identify it? Trying to update the state. Okay. Increase the time. Set count to set count. Okay. Remain twice. Okay. I can see here. Instead of using two count, first, we need to use only one. Another thing is, there in this method, we should not directly use the set count and update from its variable count. Use test count, provide this kind of function, provide a method where it provides a default argument of the previous state. So we should avoid updating the state from the previous state instead of directly using the count variable. The better function would be if you want to increment it twice, then just use a set count inside the increment twice function. Use a set count and pass it a function of previous, as an argument, which will give you the previous state and use previous, returning it with three plus two. So it will just increment it twice. In this, it will perform some issues in batching. It will increase this thing and delay the other part. So it will cause some issues in batching performance. So batching and this, that. That's why it will cause some issues here. So if you do what I suggested, then it will just work. Yeah. So that's it.