profile-pic
Vetted Talent

Kashish Bhutani

Vetted Talent
An Experienced Software Engineer, skilled working with a wide range of Front- and Back-End technologies like Ruby on Rails, Angular, Sinatra, NodeJS, GoLang, Post- greSQL, MongoDB, etc. for developing soft- wares and testing frameworks such as Rspec, Minitest, Cucumber, etc. for unit and inte- gration testing and cloud services like AWS, Heroku, Docker etc. for deployment and analysis.
  • Role

    Senior Sinatra Software Engineer

  • Years of Experience

    6.5 years

Skillsets

  • MySQL
  • NO SQL - 2.5 Years
  • Go - 08 Years
  • Postgre SQL - 5 Years
  • Type Script
  • Test-driven development
  • Solr
  • Sinatra
  • Scrum
  • Ruby
  • RSpec
  • REST
  • REST
  • Redis
  • Postgre SQL
  • Node Js
  • Ruby on Rails - 6.5 Years
  • MVC Architecture
  • Monolithic architecture
  • Mongo DB
  • JavaScript
  • HTML5
  • Hexagonal Architecture
  • Go Lang
  • functional programming
  • Elasticsearch
  • Dry principle
  • Cucumber
  • CSS3
  • Bootstrap
  • Behaviour-Driven Development

Vetted For

12Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Ruby on Rails DeveloperAI Screening
  • 53%
    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: 48/90

Professional Summary

6.5Years
  • Feb, 2022 - Present3 yr 8 months

    Senior Software Engineer I

    Gartner
  • Jun, 2019 - Jan, 20222 yr 7 months

    Software Engineer

    MetaDesign Solutions
  • Jul, 2018 - Aug, 2018 1 month

    Backend Web Developer Intern

    SMC Real Estate Advisors Pvt. Ltd
  • Jun, 2018 - Aug, 2018 2 months

    Frontend Web Developer Intern

    JMoon Technologies Pvt. Ltd

Applications & Tools Known

  • icon-tool

    Ruby on Rails

  • icon-tool

    Angular

  • icon-tool

    NodeJS

  • icon-tool

    GoLang

  • icon-tool

    PostgreSQL

  • icon-tool

    MongoDB

  • icon-tool

    Rspec

  • icon-tool

    Cucumber

  • icon-tool

    AWS

  • icon-tool

    Heroku

  • icon-tool

    Docker

  • icon-tool

    AWS

  • icon-tool

    Jenkins

  • icon-tool

    Swagger

  • icon-tool

    ELK

  • icon-tool

    Kubernates

Work History

6.5Years

Senior Software Engineer I

Gartner
Feb, 2022 - Present3 yr 8 months
    Involved in SCRUM Ceremonies, End to End Testing, Owning Responsibilities of Driving Modules and OKRs.

Software Engineer

MetaDesign Solutions
Jun, 2019 - Jan, 20222 yr 7 months
    Involved in Designing Architecture, API Development, Web App Development, End To End Testing, Deployment, Project Management and Client Handling.

Backend Web Developer Intern

SMC Real Estate Advisors Pvt. Ltd
Jul, 2018 - Aug, 2018 1 month
    Involved in Web App Development using Laravel, PHP.

Frontend Web Developer Intern

JMoon Technologies Pvt. Ltd
Jun, 2018 - Aug, 2018 2 months
    Involved in Web App Development using HTML5, CSS3, Bootstrap, JavaScript.

Achievements

  • Involved in GetApp Product Development
  • SCRUM Ceremonies
  • EndToEndTesting
  • Owning Responsibilities of DrivingModules and OKRs

Major Projects

5Projects

GetApp

    A portal where business leaders find out the best software solutions.

ShivYog

    A portal where users can create their profiles and register on the various Events organised by Shiv Yog through different Payment Gateways.

ShivYog Extension

    Google Chrome Extension which is used to download videos(in chunks) using Web Workers(in background threads) and store in Chrome Storage to play it in Offline Mode.

FINLEX GmbH

    Commercial insurance platform for corporates, brokers & insurers with a focus on Financial lines products.

MyLivingWishes

    A portal which helps you in planning the end of life care through online planning guide & recording your wishes & sharing your plans with your loved ones.

Education

  • B.Tech - Computer Science

    Guru Gobind Singh Indraprastha University (2019)
  • Senior Secondary Education

    Central Board of Secondary Education (2015)
  • Secondary Education

    Central Board of Secondary Education (2013)

Certifications

  • Qualified gate exam

  • Aws certified cloud practitioner

  • Cutshort certified ror developer

  • Cutshort certified rordeveloper

  • Hackedu secure development training

AI-interview Questions & Answers

Could you help me understand more about the background again?

Hello, my name is Kashish Bhutani, and I'm. So my name is Kashish Bhutani. I'm a senior software engineer. I'm having around five years of experience into software engineering. I did my bachelor's in computer science in year 2019. And from then onwards, I started my career. And I'm having around five plus years of experience into Ruby on Rails itself. And throughout my career, I have worked as a full stack developer. So I have worked on both front-end, back-end technologies, like Angular, React, JavaScript on the front-end side. And on the back-end side, I do have exposure on Ruby, Node.js, as well as Golang, Java, such languages as well. However, my expertise is on the Ruby side. And I also have experience with unit testing, end-to-end testing, following different frameworks, such as RSpec, Cucumber, Minitest. And I also have experience with deployment on various cloud platforms, such as AWS, Heroku, DigitalOcean, and also have some experience on GCP recently. And throughout my career, I have worked on different projects. I have developed two projects from scratch as well. And how would you, okay. How would you approach optimizing CSS? How would you approach optimizing CSS selectors for both performance and maintainability? Another project. See, it depends on what you want to achieve. So like we have different types of CSS selectors, like class selector, ID selector. So if you want to operate something on multiple DOM elements, so we will prefer class selectors. That is more performance efficient. If you want to manipulate a particular element on the DOM object, then we're gonna use the ID selector. Then we also have other types of selectors available too. So again, it depends on the type of the requirement, which we want to achieve on the CSS side. And based on that, we choose the CSS selectors for the performance as well as maintainability. And also we have users of global variables, which we can use throughout our different CSS files. And again, there are some global selectors as well, which we can use, like if we want to, if we know that a particular HTML element throughout the project, we want a common styling or let's say a common font, then we can keep, let's say a paragraph tag is there. We want that our website paragraph should have a common font. So we can standardize that in the master CSS and that it will use a specific font. So we don't have to set every time when we are setting up the CSS. And at the same time, if it is required, we can override it as well in some specific CSS. But again, the overriding case is very specific. So that's where we are setting it up in the global level. So that we can do for performance and maintainability. It's easy to maintain if we are writing the styling on a specific global level. If we know that that styling is gonna be reused, then we can also specify the typography in a selected files and we can use the same typography by importing it into various CSS files. So that's the thing we can use.

what approach you would use to take the two. Okay. So yeah, there are different ways to optimize the SQL queries in Rails. So first we have to take a look into like what exactly causing the query to slow down or whatever the reasons. So for example, we can have n plus one queries when we are traversing through the large data set, especially involving different associations and relationships. So in that case, what we can do is we can use eager loading by using includes. So we can, in a temporary cache, we can load the data set, the associated data set, so that when we are traversing through the associated data, we don't have to make an additional SQL query. One thing is this we can do. Then another thing which we can do is we can use indexing, especially for the search queries to optimize them for faster results. But at the same time, we have to ensure that we are, you know, applying the indexing on a specific columns. We cannot add indexing on every column in a table because it will affect the performance because every time when you are adding an index on a particular column, it will also slow down kind of the right operation because every time entry will be written in the DB level, there will be an additional index is also being written on the scene. So that is something we have to take care of. And then there are other ways also to achieve the, you know, faster SQL queries for the large data set, such as we can use Elasticsearch for, you know, extremely large data sets, we can use Elasticsearch. Again, that also kind of works on the indexing concept as well. So we have to ensure that every time there is a data refresh, we have to re-index all the data. So that is, again, something we can try. Then there is another way also, like an alternative to Elasticsearch, we can use Solr. Solr is, again, another thing which we can use. Then we also can use Redis. Again, it's a different type of DB which we can use for some specific requirements, like I have used in one of the projects for the chat application, real-time chat application, I used Redis via Action Cable. So we can use that as well. It acts, again, it also works on a key value basis. So it stores the data in that fashion. So there are multiple things which we can use. And also, like if the query is large, we can also kind of do lazy loading if required. Like we can break down the query into smaller queries and we can trigger the additional queries when actually they are in need, not like, you know, in advance. So there are many things which we can do.

OK, it's in testing, currently with Ajax call. I think for Ajax, I have worked with Ajax, but it's been a long time since I've worked on it. But these are just asynchronous calls which we use. And I believe that when we are doing the testing for such type of things, so there are different ways we can use mocking. We can use stubs. We can also try to mimic the same kind of thing. Again, in the Ajax calls, we are hitting an API to the server. So the response type we get in the form of JS. So there are different ways, actually, to achieve it. Like from the Ruby side, we use RSpec for the testing case. So maybe from the routing point of view, we can test the explicit route. But in totality, if we want to test it like the whole MVC thing, like we have to cover the whole aspect, then we can test it through a different framework. What we can do is we can test it via Cucumber framework. So we can write like E2E test, because MVC, if we are considering, then it's like the whole lifecycle we are considering. So we can use end-to-end testing for the same, which basically starts from the level, like initials level, preparation of the data, and what actually is going to happen, and then expecting the result. So we can achieve it through Cucumber, I believe. Yeah.

What are some effective strategies for managing statefulness in a customer-facing builds application? What are some strategies for managing statefulness in a customer-facing builds application? What are some strategies for managing statefulness in a customer-facing builds application? What are some strategies for managing statefulness in a customer-facing builds application?

that you would use for a user authentication in Rails API app and see that's how it integrates with AWS infrastructure I mean for API level app we can use JWT token we can encrypt it and decrypt it and I think we can integrate it with AWS structure as well by you know because JWT token is encrypted encoded basically the correct term so we can sign it with a particular thing key we can sign it with a particular key and then we can decode it as well in AWS side so I think we can use JWT authentication mechanism

The code is intended to handle errors during service execution, explain what this code does and how it could potentially fail to handle certain errors. Okay, begin block, service.execute, that's fine, rescue service, service error, put as a service error, okay. Okay, so this particular code is basically executing the execute method from the service and it is basically rescuing the service error class type of error and also it is kind of rescuing any generic error too because in that case there is no such classes being mentioned, just a simple rescue block is used for an unexpected error. But at the same time, after rescuing any unexpected error, it is again raising it. So, potentially, if something breaks, it will obviously be rescued within this block. But again, wherever this block is getting executed, this block will again raise that particular, you know, error. So, kind of it's not rescuing it in that case, but if any service level error is coming up, then it is being handled properly. Otherwise, in a good situation, this code is just executing the service execute method or you can say executing the service.

In the following Ruby on Rails code, what is the purpose of before action filter and undefining potential use to them? Okay, before action require admin only new and create before action find user except index new create Require admin is method which is Redirect to root path unless current user is admin find user Okay What is the purpose? Yeah, so the purpose of before action is that Before any action Like any route action, let's say this before action is being written in the application controller level So before every route action require admin will be executed first only for specific routes, which is a new new route or create route and Within that case it was first check whether the particular User current user is admin or not if it's not admin, then it will redirect it to home page or let's say the root path with whatever it is and then if it's if The current user is admin then it will also check the user You know, it will basically set the user Into the user instance variable, which is user dot find with the ID So probably which is kind of I believe is redundant because we already have the current user so I am not sure if that is required since we already have the Current user available to us when we are checking if it's an admin or not So I think the second statement find user is not required since we already have the user available to us unless Yeah, I think current user is available throughout the Global scope if we are using device gem or some particular gem. So yeah

What isolation levels would you consider when handling transactions? Asset compliance Okay, that's interesting What isolation level? I mean for isolating the code on a Rails application, we have different approaches Like generally we have MBC architecture, Model-View-Controller However, we have to ensure that the business logic which we are writing is loosely coupled It's not tightly coupled. So it's good to Good to assign a particular role to each Layer, so let's say for the controller layer, the role of controller is just to handle the request so it's like Receives a request, sends the response. That's all. There should be no business logic which should be written in the controller level and then Same goes with the model. So for model, model is good for doing the database level validations like validating the required attributes and you know callbacks However, the business logic should be distributed into the form of services Independent services and concerns for example, like if we have some functionality of triggering an SMS You know on login like when user is trying to log in with OTP, so we have to get an SMS So that SMS code Triggering code should be via third-party API so we can create an independent service which will basically just receive some input and gives an output acts as a pure service and So we can call that service from model level or from the controller level as well depending upon what is the use case If the model is required or not. So in the similar fashion, we can also approach for different other things like presenter things presenters Things we can use. Business concerns For supporting multi-level analytics. So again, there are different ways to handle the isolation levels on the app. So Like we have to decide What we are using like if it's a third-party service, it's good to isolate it in the form of in the lib folder or under Azure services, so In that manner we can do that

How do you leverage it in the slanted improve

Can you highlight technique for ensuring javascript code quality during the run? So we can use different plugins, extensions to ensure that we are writing the right quality of code for the javascript and based on like what javascript library or framework we are using. We have different ways to do it.