profile-pic
Vetted Talent

Amit Gupta

Vetted Talent

I am a software developer, specialising in the Back End Development . For the last 2 year, I have been working in ROR and, C++.


I’m currently employed as Solution Engineer at Deqode. I’m hands on in all stages of the backend development. My tasks involves altering code, fixing bugs, brainstorming ideas or integrating new systems(API’s), interacting with database.


I am also very keen to learn new technologies such as React to make better understanding of overall development cycle.

  • Role

    Back End Developer

  • Years of Experience

    3 years

Skillsets

  • API
  • DSA
  • C/C++
  • AI
  • Security
  • On
  • JavaScript
  • Windows
  • Ubuntu
  • react
  • Ruby
  • React Js - 1 Years
  • C
  • Database
  • Postgres
  • MySQL - 1 Years
  • MySQL - 1 Years
  • AWS - 0.5 Years
  • AWS - 0.5 Years
  • ROR - 1.5 Years
  • ROR - 1.5 Years

Vetted For

12Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Ruby on Rails DeveloperAI Screening
  • 63%
    icon-arrow-down
  • Skills assessed :UI/UX Design, website maintenance, Heroku, MVC Architecture, RESTful API, AWS, CSS3, HTML5, JavaScript, jQuery, Ruby on Rails, TDD
  • Score: 57/90

Professional Summary

3Years
  • Jul, 2022 - Present3 yr 11 months

    Software Engineer

    Deqode
  • Feb, 2022 - Apr, 2022 2 months

    Project Intern

    Autuskey, React,
  • Feb, 2022 - Apr, 2022 2 months

    Project Intern

    Autuskey
  • Dec, 2021 - Jan, 2022 1 month

    Intern

    Quest Global Technologies Ltd

Applications & Tools Known

  • icon-tool

    API

  • icon-tool

    Amazon Web Services (AWS)

Work History

3Years

Software Engineer

Deqode
Jul, 2022 - Present3 yr 11 months

Project Intern

Autuskey, React,
Feb, 2022 - Apr, 2022 2 months

Project Intern

Autuskey
Feb, 2022 - Apr, 2022 2 months
    Worked on an in-house project focused on developing a delivery app, striving to enhance its user-friendliness and overall usability.

Intern

Quest Global Technologies Ltd
Dec, 2021 - Jan, 2022 1 month
    Created multiple web pages for the company's website and enhanced the styling across its pages.

Major Projects

6Projects

Builder.ai

Jan, 2023 - Present3 yr 5 months
    Contributed to applications, integrating Amazon affiliate services and fortifying project security through API implementations, enhancing functionalities.

United Signals

Jan, 2023 - Present3 yr 5 months
    Collaborated with Indow and Insidn services to streamline user verification, significantly boosting operational efficiency.

Xneelo

Jan, 2022 - Present4 yr 5 months
    Enhanced the platform's functionality as a skilled ROR developer.

PROJECTS Builder.ai, Deqode, India

United Signals, Deqode, India

Xneelo, Deqode, India 2022

Education

  • Btech:

    EDUCATION Medicaps University (2023)
  • Class 12th

    St. Aloysius Sr. Sec. School (2023)
  • 10th Class

    St. Aloysius Sr. Sec. School (2023)
  • Btech: ECE

    Medicaps University (2022)

AI-interview Questions & Answers

So, Shadi, What would be the approaches that you take there? To optimize a query in SQL. If I talk about what approaches I'll be taking in optimizing a query in SQL. In large datasets, it would be like, firstly, looking for the N+1 query problem. That would be including, not including, multiple database queries that needed to be updated by using includes to remove the N+1 query. When working with large datasets, consider limiting the data. These queries written via window functions or pagination. Window functions can group, aggregate, and limit datasets. For example, if I'm talking about sales and there are millions of rows, so 10 records per page would be quite clumsy. So that would help us in that particular manner. If I talk about falling into two categories, waiting and running, understanding the differences for crucial optimization problems, that would be one point. The running query actively uses system resources, including the CPU, memory, disk, and something like that. An awaiting query will wait for another query to finish for system resources to become available. That would be a quite difficult problem to face and to make it resolved. Running and waiting queries can both impact our database performance. Waiting queries can block other queries, slowing down running queries and response time. Optimizing both of these types of queries will help in improving SQL performance in large datasets. Indexing would be one of the major crucial issues that we need to look over because indexing will help us to get the performance of an API to be improved and to have a better SQL indexing. Indexes literally play a critical part in improving SQL query performance. On last, it will create pointers to the data table, accelerating data retrieval. Indexes are handy when dealing with large datasets, and they help data points where the query should search the information by reducing the amount of data. However, creating indexes on all of the table columns isn't always the best solution. As it's essential to identify and then create the missing indexes or fix the correct ones. You can use an execution plan like SQL Server Management Studio or one of the most important and trending tools would be Azure Data Studio to provide insights into the query. And this execution plan will help fix the issues that we are facing, to make the API perform better, to increase its performance.

If you talk about the feature to deploy a large-scale application, could deploy a large-scale application. So if I talk about the instructions, we can create a Google account first, then install a tool kit on our computer. It would be in the terminal. We can log in using the email address or password we created for the group work. Then we can add a PGGM or SQL Live Jam for the same. After that, we need to ensure that we are aware of the issues we are facing. If we are facing any errors, then we can update our code database and for the production environment, we can add our code and create a commit for the same. Then we can use a command who to create, and then we can push it to Heroku. So in this way, we can move forward with Heroku for our applications. But if we talk about the advantages for the same, it would optimize or remove any long or time-consuming queries. It really reduces the number of queries by rewriting them to the application to make it use fewer queries. That would be one of the greatest advantages. It would be optimized to configure DB connection pooling. It would optimize active reports connection pooling, implement or optimize BG bounce, so that would be one of the major issues resolved for the same. Ensure our database is properly indexed. Configure read-only, follow database, and use appropriate settings. Ensure data backups are configured to run periodically. That would be the most important. Who may focus on decreasing application throughput, decrease the application response time by 95 percent. It would be by upgrading Ruby to the latest version, reducing throughput requests to the application as search cloud management. It would cache extensive calculations or queries on the server and memory in Redis or in an edge server of the client. Optimize the web server by testing multiple configurations, including multi-setting and multiple processes for the combination. We can ensure any external API request client or address aggressively times out configured for the same. And it would be one of the other main examples of Heroku. Another main advantage of Heroku is that it would be after deploying a real application, the next step would be to put it online. So it makes it very easy for us to deploy that application by just a few steps.

If we talk about testing strategies to ensure MVC components and create correct Ajax call. So my answer would be, unit testing for components. Like, we can use React Component Test, Utilize Testing, like, libraries like Jest and Enzyme to test individual React components, ensure that the component renders correctly and behaves exactly as expected. It would be a controller test to verify the correct handling of state and props and interaction with the text calls. And if we call it over, we can also use integration testing for the same. We can use mocking libraries like Fetch Mock or adjust to build mocking capabilities to simulate Ajax calls and test how components are handling each other. It would be like testing how different components interact with each other, especially in passing data through props or callbacks triggered by Ajax calls. It would be one of the most important tests. Two-way testing by testing using testing frameworks, employ frameworks like Cypress or Selenium for two-way testing. Now, right, test that simulates user interaction with the application, including agents, and verifies the UI behaviors correctly. That is the most important part. Other than that, we can simulate different responses and test how components handle various responses, success, error, failures, and time out from agent calls to ensure robustness and proper error handling. Then we can go to performance testing. Evaluate Ajax performance with one of the most important criteria by measuring the performance of Ajax requests and component rendering tools using, like, Chrome Driver or Chrome Dev Tools, identify the bottlenecks and performance issues to optimize it accordingly. And then we can look over continuous integration, continuous deployment, that would be CICD, to automate testing, integrate testing to CICD pipelines to automatically run whether code changes are made or not. So this will ensure that the issue of agent functionality is detected early in the development process only. So, in this way, by implementing all these testing strategies, we can ensure that MVC components of React can interact correctly with Ajax calls, and that would be helping us to improve our testing strategies.

Okay. So if you'll talk about this, so in this particular question, regarding this testing the application, we just need to set up a React project as of now. Firstly, we'll be setting up React, then we'll be installing the dependencies for the same, making RESTful requests in React such as Axios and the native Edge API. Then we can just create components. Like, we can design our React components to represent different parts of the application, such as resources, for example, user, post, form, something like that. Then we can define routes for the same using a route level, like React Router, define routes to navigate between different views of the application as the route will have a major purpose to when an API call is made. So it will go through the controller, then the controller will go through the model, and the model will manage all the basic logic. Then it can go back again to the controller, and then the controller makes it go to the view. So the controller plays a major part in between handling the business logic and showing it in the UI. So that would be the most important routing book. Then we can just fetch data from a real API, utilize the effect of using a component's mount lifecycle method in the components to make the RESTful requests in your Rails application endpoints. You can follow RESTful conventions for naming your API endpoints, such as users, retrieving the data for a user by users or user ID. So that would be one of the important parts. Then after that, we can just handle the responses from your Rails application appropriately in your React component by updating the component state with the retrieved data or missing in the request phase. Yeah. That would be one of the important points. Then we can implement the CRUD operations. One of the most important things that need to be implemented in any of the APIs that we are developing so that we can have every single action in the HTTP request to delete a particular object, to create, or to edit the same. We can handle authentication and authorization. If the Rails API requires authentication or the authorization implemented mechanism for handling user authentication or authorization, so we'll be working out accordingly for the same, optimizing the performance of your React application by implementing techniques such as memoization, lazy loading, component memorization, and pagination for large datasets. That will most importantly need to be done. Deploying your application or the app content on Rails by choosing a platform of your choice, ensuring that they're accessible to the users. By following these steps, you can design a React front end that can consume Rails API for RESTful practices.

Efficient API performance over there. How can you define RESTful things in Rails? So if you talk about this, we can discuss the RESTful principle about applying to Rails routing would be like, by using resources over the resourceful routing, the critical component of the RESTful principle. The REST of it stands for Representational State of Transfer, an architecture style that defines a set of constraints for designing network applications. RESTful APIs are built around these constraints only, and they'll provide robust support for building RESTful APIs throughout the system. This is how it works. Resources-oriented routing is one of the most important points. RESTful APIs are concerned with resources only, which are the key entities that the API exposes. In Rails, resources are defined using the resource keyword, a resource method in the config dot routes. This method sets up the conventional routes, like create, read, update, delete, for the same resource. And we'll talk about naming, routing, and path helpers. Rails provides naming, routing, and path helpers to simplify routing and generating URLs. These help us follow RESTful API configurations in a clean and readable way of generating URLs in the controller. In a RESTful API, resources can be nested within one another to represent hierarchical relationships. Rails supports nested resources through the resource method within a block. Customer routes can be set up in Rails, while following the RESTful API primary line of conventional routes. Generally, by using the resources method, Rails allows redefining custom routes by handling non-standard operations on special purposes. Custom routes should still follow RESTful principles and use the appropriate HTTP verbs and resourceful naming. For example, if we follow these RESTful principles and Rails routing, we can develop and build a structured, predictable API, which is easy to understand and maintain by the developers who will be working on a particular project, at any moment of the development cycle.

Okay. So there will be good intent to handle a service execution. Explain what code does, how it could potentially fail at certain errors. So, let me look at the code for my end. This would be the code. The code begins by attempting to execute a service using service.execute. Right? If a service error is raised during execution, it can be rescued with a message indicating that the service error occurred along with the error message of type. If any other type of error is raised, not specifically a service error, it is rescued by a second rescue block, indicating that an unexpected error occurred along with the error message printed. Right? So while this code provides a basic error handling, there are some potential issues with it. It suggests that catching all the errors with rescue can make it difficult to differentiate between types of errors. It can lead to improper handling and masking of critical errors. That would be a major issue. The second issue would be putting potential errors in a rescue block. Depending on how the error is raised, it could potentially swallow the error within proper handling. It leads to unexpected behavior and lack of visibility of errors. To improve this, we can use specific exception classes for each type of error that can occur. We can ensure that the error messages are informative and provide clear visibility of errors. We can also avoid overly broad rescue blocks to prevent unintentional masking of critical errors. We can handle errors appropriately based on their severity and impact on the application. So, yeah, these are the major points that need to be local and that can be improved in this particular section to make this thing better to work with.

The next question again would be at b and rails course that needs to be checked over here. Okay. So if I go through this one, before action filter, and it would be performing the action to introduce the same. So before action filter, Ruby on Rails is used to execute a method before certain controller actions are called. Yeah. That's clear. It's commonly used for tasks like authentication and authorization for data loading, which ensures that the task are performed consistently before the association actions are executed. Right? So in the provided code snippet, we are having a before action required for only new and create. This filter ensures that the required admin is called before the new and create actions in the controller. So potential issues with this particular thing would be the order of filters, the order in which the before action filters are defined matters. Filters are executed in the order that they are defined in the controller. If the find user filter relies on the current user being set, it should be defined after any authentication or authorization filter, because, like, required. It would be of the other issue that we can find in this would be authorization. It would be, it requires admin filter restricts access based on the admin status. Depending on the application requirement, it may be necessary to further refine the authorization logic to ensure that only authorized users can perform certain actions. The other main thing is error handling. There is no error handling provided in the find user method. If the user with the specified ID doesn't exist, Active Record will raise a not found exception, which could result in an error message being displayed to the user. It's important to handle such scenarios gracefully, perhaps surrendering a page or redirecting to an appropriate location. By addressing these potential issues, we can make the application more robust and clear to work with.

It would be the other question would be? How would you apply object-oriented programming, which are the refactor, the Ruby on Rails services, service object. So refactoring Ruby on Rails service object, using object-oriented programming principles involving restructuring the code to improve organization, readability, maintainability, and adherence to OOP principles such as encapsulation, inheritance, polymorphism, and abstraction for the same. Here's how we can do using encapsulation. Ensure that the service object encapsulates a single responsibility to our task, encapsulates data and behavior within the service object, limiting external access to only what is necessary. It would be the single responsibility principle would be one of the most important data I skipped. So that would be SRP, ensuring that the user object has a single responsibility or reason to change. We factor the service object to perform only the cohesive task such as handling a specific business logic, operation, or interacting with the external service. That's most important. Like inheritance and polymorphism, identify the common behavior functionality shared among multiple service objects. Then, using that particular approach, we can factor common functionality into a base service object or module to promote code reuse through inheritance and polymorphism, using composition to allow different service objects to implement variations of shared behavior while adhering to a common interface. Abstraction. Abstraction of the implementation details that are not relevant to the service object, interface, or consumer. We can hide complex implementation logic behind a simple and intuitive interface to make it easier to use and maintain. Dependency injection. Defactor the service objects to rely on dependency injection for their dependencies. That would be one of the major things to be looked at. Inject dependencies such as database collections, external services, or other objects into the service objects through constructor injection or method parameters rather than creating them internally. It would be most important to be, this would be, testing. By unit testing each component of the service object to ensure that they behave as expected in isolation. More custom dependencies in tests will isolate the behavior of the service object and promote faster and more focused test execution. So by applying these particular concepts, we can ensure that the issues we will be facing would be

How can you highlight techniques for ensuring JavaScript for poor quality improvement during ROR? So, let me frame it. If I talk about ensuring things in ROR, ensuring good quality JavaScript code is crucial when developing an ROR application, and JavaScript often plays a significant role in ensuring user experience and interaction on the client side. Here are some techniques. Linting. Linting is one of the most important techniques, which simplifies code by making it easier to look at using a JavaScript linter like ESLint to enforce coding standards and identify syntax errors to detect potential bugs. Integrating ESLint into a Rails application will automate, analyze JavaScript code as part of the development workflow. Code formatting, consistently formatting JavaScript code using tools like Prettier to enforce a consistent coding style. Modernization. Organizing JavaScript into modular components, into modular components following best practices like modern patents, ES6 for component-based architecture, encapsulating related functionality into separate models or components to promote reusability and maintainability of tests. Testing. Writing tests by integration tests, or unit tests for JavaScript code using frameworks like Jest would be important. Implementing error handling mechanisms, improving error handling mechanisms into JavaScript code by gracefully handling runtime errors and exceptions. We can use try and catch blocks for the same, error handling with minimal impact on the application, and error logging libraries to catch and log errors by debugging and monitoring purposes. Performance optimization in JavaScript can be performed by minimizing DOM manipulation, building unnecessary renders, utilizing performance profiling tools like Chrome DevTools for the same. For security, we can remove tracks like CSRF, cross-site request forgery, and some injection attacks. Sanitizing user input, validating data on both the client and server side, implementing proper security protocols to protect against data security. By keeping proper documentation, we can have a look over these functionalities, these issues that we are facing, and can resolve them in a quick moment of time.

How would you leverage AWS Lambda in our application? So, yes. If I'll be talking about managing AWS Lambda in my Ruby on Rails application, that would be a quite different process to look over, to improve the performance of a Ruby on Rails application without managing servers. You can offload specific tasks or functions of AWS Lambda functionality, allowing them to execute independently and scale automatically based on the demand. This is how you can utilize Lambda to enhance the performance of our application. First, we can identify the performance bottleneck. We need to analyze our ROR application to identify specific tasks or functionalities that are performance bottlenecks and can benefit from offloading to AWS. Then, we can define Lambda functions to perform and identify these tasks or functions independently in our other application. However, we can also write Lambda functions in a supported language such as Node.js, Python, because Ruby is not currently supported directly by AWS Lambda. Even triggers can be used to trigger events, configure event triggers to invoke the Lambda function in response to specific events or triggers within any other application security services. We can integrate other applications into Lambda functions by invoking them asynchronously and synchronously using the AWS SDK for Ruby. We can use the AWS SDK to invoke Lambda functions directly from our Ruby on Rails application, passing input parameters and processing the results as needed.