I am a senior software developer with 8 years of experience in IT, currently working at Amdocs since 2016. My expertise spans 7 years with .NET technologies, including .NET Core and earlier versions (4.5 and 4.7), and frontend development with Angular, from AngularJS to Angular 14.
I have extensive experience with SQL and NoSQL databases and recently had the opportunity to enhance search performance using Elasticsearch. Additionally, I have worked with open-source technologies for remote monitoring and creating modeling solutions for my projects.
Software Development Specialist
Amdocs Development Centre Indiaelastic search
kafka
Sure. So my name is. I have a 8 years of experience in IT. Currently, I am working, uh, as a senior software developer in my current organization, which is Amdocs. So I joined this company in 2016, and I have been working from from 2016 till this state in this company itself. I have, uh, 7 years of knowledge in dotnet, uh, dotnet itself, where I work with the dotnet core and the dotnet previous tech previous framework, let's say, 4.5 or 4.7. And, uh, I have experience with the Angular framework as well, uh, starting from AngularJS till Angular, uh, 40. In a in a database side, I have worked with the SQL database. So or you can say, like, I have a secret and more sequel to, uh, both DB knowledge. Current currently, I got the opportunity to work with the Elastic as well. Elastic as well where we, uh, define we were, uh, trying to, uh, improve the performance of our this, uh, search part of the particular of our for the project. And, uh, I got the chance to work with the remote in the spectrof as well of my project where I, uh, monitor all these certain hours using the open source technologies. Let's say, let's say, and create the entire, uh, modeling solution based on that.
So in order to optimize the inquiry, I need to, uh, I need to make sure that, like, I am going to I am performing the link queue on the proper indexes. If the indexing has not been, uh, uh, added to the added to that particular records, So, mister Paul, I will define the indexes of indexing on the particular, uh, the project. The sorry. On the particular database itself, database column itself, then in order to more to, uh, moreover, do the performance better on the c sharp side, I will try to make sure that I'm not fetching a, uh, the fields, which is not, uh, necessarily right now. I will also, uh, think about using the IIN because IIN will always, uh, will, uh, execute when when it is needed. So instead of using dot2 just where it is having the data record from then data records from the first glance itself. Uh, I, you know, will make sure that, like, it will exclude when when you are you actually is going to perform something with that datasets itself. Uh, I will try to perform I will try to give as many as filters I can give on that link you probably using the wear loss or the any faster default. Uh, I will try to make sure that I will use a take and skip properly so that I don't fetch the bulk load of data from from the database. That's what I I'm think I can think about it right
In order to, uh, in order to scale the, uh, REST API, uh, I will make sure that, like, uh, the proper worsening has been done so that, like, if I, uh, we go from version 1 to version 2. There is no lost of data in a in a there is no, uh, changes in terms of 1 to 2 means user can still work with the first API the way it was working. And this way, I can, uh, make sure that the new logic is is available in the newer version of the APIs. I will we will I will try to make sure that, like, I'm not exposing the unnecessary parameter and unnecessary, uh, fields while sending the data back to the to the user or to the or to the client. I we'll try to make sure that we are, uh, we are having a proper PG mission. It's implemented over the APIs so that it is not fetching the bulk load of data from the backend. It is getting the data in a paginated way. If possible, we I will try to implement the cache mechanism as well so that we are not fetching the unnecessary data back back from the database. First first, we'll see if the data is available in the cache side. So let's bring it from the cache. Otherwise, it will, uh, if the cache has been expired, so we'll go and fetch it from the database itself. And in order to maintain, uh, in order to maintain, uh, the APIs, we'll try to have a proper documentation so that we know that, like, what is what what this API requires in order to send the parameter in order to send the parameters. Uh, if if needed, we can use the draft tool so that, like, we can bring the fields which is needed, uh, which is needed. Not not not all.
So parallelism, you decide, uh, how much threads will run-in the parallel, and the concurrency is moreover, uh, the the threads, uh, the concurrency is moreover, I can say, uh, in the transaction when that like, when you are forming certain, uh, uh, transition. So and, currently, only one supposed to have that one supposed to add, uh, one should one commit should happen, then next will happen. So I can relate this use case with the concurrency where the, let's say, that end user who is going to do the, uh, transaction from the from the portal. So they are able to, uh, they are able to, uh, work concurrently with the portal. And if certain resources are important in terms of the thread wise, so the talent prism will make sure that that the resources are, uh, allocated properly means if I define that only the thread will partner, will execute a certain task. So others will other will wait until that, uh, threads are available to those.
So in order to, uh, in order to, uh, avoid the various conditions happening, I will try to implement the proper locking mechanism that that if I know that the certain task, uh, require will be completed on that certain certain task when it will be completed. So we'll try to put this logic in a in a norm so that, like, no one so that, uh, this, uh, thread will, uh, no one will be able to uh, execute the same code in a different thread. Thus, I will try to have a, uh, if it is a task that I created, so I will try to, uh, wait, like, until all the task has been completed, then I should return. So for that, I will use the task dot then all function. I will wait until all the tasks that I created above got completed will not execute the below logic.
So we async behaves, uh, async behaves, uh, in a in a asynchronous behavior as the, uh, word is saying. Means when you execute, click on any button, and then let's say it is going to call us with an API, which is going to, let's say, take around 10 seconds to come complete that task. So, uh, for that 10 second user don't have to wait. Basically, API will respond back to you when the response will be available. This is the example of async. So I will use, uh, the async where the, uh, where the, uh, the input from the server is not required straight away. It is required when, actually, it will be ready. So the, uh, the the best case best case of the async, uh, the best scenario of the async is the email. When you send the email to that particular person, we're not expecting that the email response will be sent back to you in the same second. The the response from the user can be when he or she will be available. So she will respond back to me. So we'll use the async method where, uh, where the the response is not required from the server immediately. And I will use the async error where it is creating a catalog from on the right side means if the certain task is taking 1, 2 minutes amount of time, So we'll use the async there so that, like, user will not wait for that certain task to be completed. And, uh, but for sure, I will some way, I will inform the user that this activity is going on so that he will know that this activity data will be back to them when it will be ready.
By looking this code, we by looking this code, uh, what I can see that the The item, we did not had a proper null check because item can be well as well if we are going to perform item. ID. And if the item itself is a null, so it can give you email, uh, object reference error because, uh, we did not perform the null operation well. And if the first or default let's say if the item is not null, it had a proper value. And if we did not get any value from 1st or default, so we are going we are going to receive in the existing item the value null because the first or default can return the null as well. And now in the next line, we are initializing, uh, the null equal to item. So this way, you cannot, uh, this will give you the error because, uh, it's not being initialized properly.
I am not able to delete this question.
In order to protect the MySQL, uh, injection attack, I will try to sanitize the the input that is coming to, uh, that is coming to the data, uh, to the API. Means, let's say, if I have one API, let's call it get employee. And there, I have a string employee name. So attackers can possibly can pass in that string the the entire, uh, entire, uh, uh, inline, uh, SQL query, uh, so which can harm my database and can delete the data or can can do any manipulation with my database. You know? Uh, so I will try to sanitize that incoming parameters to to the API. I will see that that, uh, that it's not been it's not a harmful data that's been sent to to the API. Next, I will try to use the proper drivers. I will not have a inline query written so that it will, uh, not execute the queries, like, in line. Queries will execute through the driver itself. Means, if I am using the, so I will use the entity framework entity framework diverse in order to execute the queries on the data sales itself, not on directly directly writing the queries or make a plain text.
So the factory method design pattern is, uh, can be used when I need to create let's say, in my project, we had, like, uh, we were using a collabic m q collection in order to get the data from the from the Rabbit m q RabbitMQ. So I will I can create the fun fact factory class for my RabbitMQ connections. And, uh, so, like, because I don't need to create the connection object multiple times, it should be only creation of the connections should happen once, or else if there is any any distortion happened with the connection means if it got lost. So in in case of reconnection, but it should not create the multiple instance of that, uh, class. So I'll use consider the user using the factory method, uh, there.
So consider a way it is useful in order to, uh, in order to not to wait, uh, not to be in a deadlock state means, uh, considering the call on the one part button, which is, uh, calling a certain API. Let's say calling let's say it's going to take we get all employee data, and this is taking, uh, much amount of time in the back end. So I will use the configure await method here so that it will on the front end side, uh, a user will not be in a deadlock state so that, uh, uh, he can work for the different task itself as well.