profile-pic
Vetted Talent

Subhomoy Karmakar

Vetted Talent
With over seven years of experience in the field, I have honed my expertise in Back End development, specializing in HTML, CSS, Laravel, and PHP. My proficiency in these technologies has equipped me with the skills needed to design and implement efficient and dynamic web applications. Additionally, my experience working within Agile methodologies has enabled me to adapt quickly to changing project requirements and deliver high-quality products within tight deadlines. I am dedicated to staying current with the latest trends and technologies in the industry, ensuring that my work remains innovative and cutting-edge.
  • Role

    Senior PHP Developer

  • Years of Experience

    8 years

Skillsets

  • JavaScript - 5 Years
  • React Js - 1.0 Years
  • RubyOnRails - 3.5 Years
  • Ruby on Rails
  • react
  • Postgre SQL
  • PHP
  • Networking
  • MySQL - 6.0 Years
  • Laravel - 3 Years
  • LAMP
  • jQuery
  • Jira
  • Agile
  • HTML
  • HTML - 3 Years
  • Git
  • Git
  • EC2
  • CSS
  • CSS
  • CodeIgniter
  • AWS S3
  • Angular
  • AJAX

Vetted For

9Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Backend PHP Developer (Onsite, Mumbai)AI Screening
  • 64%
    icon-arrow-down
  • Skills assessed :Debugging, RESTful API, Troubleshooting, Laravel, MySQL, PHP, Postgre SQL, Problem Solving Attitude, Strong Attention to Detail
  • Score: 64/100

Professional Summary

8Years
  • Jun, 2024 - Present1 yr 6 months

    Senior Software Engineer

    Yottolabs
  • Aug, 2023 - Nov, 2023 3 months

    Senior Software Engineer

    Capital Numbers Infotech
  • Jul, 2019 - Aug, 20234 yr 1 month

    Senior Software Engineer

    LearningMate Solutions Pvt. Ltd.
  • May, 2016 - Feb, 2017 9 months

    Website Developer

    Mobotics Technologies Pvt. Ltd.
  • Apr, 2017 - Jun, 20192 yr 2 months

    Website Developer

    Greenthink Ventures Pvt. Ltd.

Applications & Tools Known

  • icon-tool

    Agile

  • icon-tool

    Jira

  • icon-tool

    Bitbucket

  • icon-tool

    Sonar

  • icon-tool

    AWS

  • icon-tool

    Laravel

  • icon-tool

    Linux

  • icon-tool

    Windows

  • icon-tool

    Swagger

  • icon-tool

    AWS S3

  • icon-tool

    EC2

  • icon-tool

    Git

  • icon-tool

    Agile

Work History

8Years

Senior Software Engineer

Yottolabs
Jun, 2024 - Present1 yr 6 months
    Designed and implemented new features, ensuring scalability and efficiency. Customized and integrated APIs to enhance system interoperability. Identified and resolved critical bugs, improving application stability. Collaborated with cross-functional teams to drive development and deployment. Conducted code reviews to ensure best practices and maintain code quality.

Senior Software Engineer

Capital Numbers Infotech
Aug, 2023 - Nov, 2023 3 months
    Provided PHP development and technical support for dedicated clients. Worked on the UMM project, responsible for fixing bugs, migrating from JWT to OAuth 2.0 authentication for Zoom API, and updating form fields. Acted as dedicated back-end support for the Call Steward project, fixing bugs, modifying the SMS and payment gateways, and adding/updating form fields. Developed and customized APIs as a Ruby on Rails Developer in the CCE project. Worked as a full-stack RoR Developer in the SHC project.

Senior Software Engineer

LearningMate Solutions Pvt. Ltd.
Jul, 2019 - Aug, 20234 yr 1 month
    Developed and maintained an ERP billing system using Laravel (PHP). Collaborated with business analysts, development teams, and infrastructure specialists to deliver high-availability solutions for mission-critical applications. Contributed ideas and suggestions in team meetings and provided updates on project deadlines, designs, and enhancements. Worked in an Agile environment using Git, Bitbucket, Jira, S3, Sonar, and Swagger. Led a team of five members on the Jobready project, responsible for code quality checks, reviews, and merging. Developed and supported APIs for Ed-Tech platforms.

Website Developer

Greenthink Ventures Pvt. Ltd.
Apr, 2017 - Jun, 20192 yr 2 months
    Developed new features as a senior website developer. Reviewed junior developers code and mentored team members. Met with clients to demonstrate products, gather requirements, and provide technical solutions. Worked as a full-stack PHP Developer and a Ruby on Rails Developer. Developed and maintained Krishak Bandhu and Agri Input using Ruby on Rails. Worked on Farm-Mechanization and Matir Katha as a PHP Developer.

Website Developer

Mobotics Technologies Pvt. Ltd.
May, 2016 - Feb, 2017 9 months
    Developed back-end functionalities using PHP. Created front-end designs using HTML and CSS. Learned and applied JavaScript techniques. Provided PHP support for job posting and jewelry websites. Gained experience in CodeIgniter 3 development.

Achievements

  • Best Developer Award
  • Best Developer Award (December 2016)

Major Projects

8Projects

Universalmindmapper

    Developed and launched an online software education platform, providing high-quality courses to individuals and organizations worldwide.

Callsteward

    Developed and successfully launched a Job management portal, API Implement and customization.

Frost

    Developed RESTful APIs for an educational platform using Laravel and Mysql. Implemented error handling mechanisms to ensure smooth and efficient user experience.

FarmMechanization

    Worked on CI project, the project was based on an Agri-tech website required for govt. Of WB.

Durham University

    This project is based on E-Commerce for university which manages new student admissions exam enrollment and payments managements. Started from scratch development long term project and maintenance also.

Krishak Bandhu

    Agritech project to manage farmer identity and to donate amount to helping as per govt of WB rules.

HDI Services

    Worked on PHP Codeigniter 3, worked as a Developer in HR Portal, maintaining database records, handling client calls, understanding the requirements and developing the same.

Youtilz

    Developed the project using CI , Service providing site same as Urban Company.

Education

  • Bachelor's Degree

    Calcutta University (2013)
  • WBCHSE

    Badartala High School (2010)

Certifications

  • Php training

AI-interview Questions & Answers

Would you please help me understand more about your background by giving deep introduction of yourself? Okay. Thanks for allowing me. So my name is. I'm from Calcutta. I've completed my graduation in the year 2013. After After that, from, uh, 2016 onwards, I have started working as a PHP developer. As a junior PHP developer was my first role. And, uh, I, like, I have switches, uh, 4 total company in my overall, like, career. And my current role is, uh, senior software engineer. I'm responsible for back end development mostly. And also I have to work with front end technologies in some case. And my current responsibility is to develop API module developments, different different module developments, uh, engage with back end functionalities module, uh, complex modules, and code debugging, bug fixing. These all are my major roles right now. And, uh, also, I'm responsible for, uh, code merging, code reviewing, uh, team management in some case. That's all. And, also, I have a like, I have all to successful career in IT and my current my current, like, goals are, like, to learn new technologies, like, React, Angular, and also, uh, to engage to, uh, like, learning new technologies like, um, Docker, Kubernetes, and also, uh, like, learn different no SQL databases, uh, like MongoDB, Redis, and, uh, to learn about more back end technologies also.

Okay. So if I getting 500 internal server, it means a code of bug error or any server side related code error. So we need to check error log file, which we can found inside, uh, storage log folder, basically, and, uh, it will store as a error log. So we have to check that error log file to find the exact error which we are getting, uh, in that f particular f. And to debug that particular f, we need to, like, find, uh, the information, uh, stored in that log file. Uh, the I'm I'm describing the whole process 1 by 1. At first, we need to, uh, go to, uh, public storage, uh, storage log folder. Inside inside log folder, we will find the error log file and access log file. So we need to, uh, check-in error log file, uh, that, uh, firstly, we need to, uh, clear the error log file so that we will have the list code there, list lines of code there. And, uh, log log is general log generating there, uh, uh, by, uh, like, all hit will be generated there so that we we will feel difficult to find out, uh, accurate, like, actual errors so that we need to clean that log file first. Then we have to hit the, uh, same same API or same process we need to hit where we are encountering that particular error. Uh, after that we need to check that, uh, what error is, uh, we are getting. We need to check that block file and from which line and what error is coming we can find over there. So that we need to, uh, check the particular line, uh, particular file and lines of line number of code, and we need to fix the, uh, error.

Uh, so, uh, Laravel, my questions are, like, are helping us to, uh, maintain, uh, database schema, database tables, Pearson ports, uh, with the up and down function. And we can have we can have, uh, multiple migration files inside, uh, Laravel database folder and database migration folder having the all the migration set we are creating inside, uh, Laravel Laravel app. And, uh, by by creating migration, uh, it it will be really helpful to, uh, like, uh, getting all the database schema, table schemas in in in in a, uh, particular, like, folder or in a particular structure. And in one command line, uh, all the all the table structure could be, like, generated and we don't need to, uh, we don't need to, uh, copy every time the SQL dump and SQL databases, uh, every time. And it really helpful for, like, migrating code setup in other server or any local setup. It's really helpful. And it's, uh, really, uh, like, uh, helpful tool for, uh, developers so that, uh, easily without one command, all the database structure, uh, could be, like, generated. And, uh, with, uh, migration command, all all, like, all table could be, uh, created. And, uh, for environment, we we can have, like, uh, we can have a table for data, uh, like, we can have a database for test. We can have a database for, uh, uh, like, production environment. Uh, this could be, like, mentioned in config in config file. We can mention that which which database, uh, can can access by the Laravel app for what case? We can mention the environment, uh, over there. And through dot d and b file, we can, uh, like, we can access the, um, we can access the particular database which we are, like, trying to access. If we are trying to access the, uh, test database, we have to write test code there. Uh, like, uh, we have to, uh, fetch it from config file. We can fetch it from config file itself. And, uh, if we need to access if we need to access, uh, um, production database so that we can mention in config file for the same, and, uh, we can access from there, uh, in from a n v dot e n v file itself. And it's really helpful for, uh, environment changes. Like, if we are, like, debugging any app, we are accessing database in local. It's really helpful for, uh, uh, like, uh, generating the error and, uh, particular error could be fixed by by, like, test database. Thanks.

What would be your strategy to have a risk for injection vulnerabilities in a PHPF person using my SQL as database. Okay. So, uh, first of all, SQL injection is a very, uh, like, now it is very, uh, security suite it's, uh, and, uh, we need to we need to prevent that, uh, by using, uh, we can we can prevent that by using eloquent worm. And also, we we can, like, we can have a d b builder query there to avoid that. So Laravel provides a structured query builder and, uh, I mean, DB builder so that, uh, we can, uh, we can, like, we can use that instead of raw queries writing. Uh, if we are, uh, like, writing raw queries inside the Laravel app or any PHP, uh, code, So it could be easily hacked and, uh, SQL in the sun will be, like, there will be SQL in some vulnerabilities so that it could be hacked. And, uh, inside rock, where is we can also, like, prevent that, but, uh, we need to, uh, write every time, uh, one is to 1 for that, uh, in in the warehouse. And, uh, so that it could be driven, but it's not the ideal case for that. We need to, like, in Laravel app, we need to, like, use we need to use, uh, eloquent query. Uh, 1 inquiry, I mean, uh, so that executing it's in, uh, cannot be it can be prevented. And also we can use DB builder query so that it easily fast argument as a question mark symbol. Uh, any any, like, any ID or any, like, parameter we are passing, it could be, like so, like but when we are debugging that, it will show as a question mark button. And, uh, data can be, like, after the question mark, it it could be found so that it could prevent, uh, SQL in some vulnerabilities. Thank you.

What Laravel feature facilitates the easy management and destination to do repairs? Okay. So in Laravel, when we are, uh, about to create, like, APIs, I mean, restful APIs. It's really helpful for, uh, like, uh, we need to, uh, like, debug the API test, the API by postman itself. And, uh, from postman, we can, like, we can hit the same particular API with the required parameters, header set. And after that, uh, we can get the response from the API, uh, as per our requirement. And, uh, okay. And with the with TDD, we can we can, like, we can maintain the same of, uh, like, we can maintain the actual requirement in place. Like, uh, if any any file any lines of code are missing, we can use TDD over there. And, uh, also, Laravel has Laravel has feature uh, to generate routing API dot PHP for APIs. And we can, like, uh, mention accessing the route, and we can we can, like, for accessing the route, and we can we can, like, have a authentication on, uh, there over there. If any user based authentication is there. And yeah, through throughout, uh, Postman, we can we can easily access the APIs, which we have created, and we don't need, uh, front end every time for the same. If we are, like, uh, meeting all the requirements of the API, which we have created, we can pass it to front end person or we can, uh, integrate in front end application.

This time the situation where we are having problem. My data is in other queries for it. Have you done that frequently? It's reasons notes bytes. Okay. So, uh, basically, it happens when we are dealing with lots of data, I mean, tons of data in in a particular table or in a particular database having more than, uh, many data like, lacks of data, 8 lacks, 90 lacks, and data. So we need to deal with the large datasets there. So in some case in not in some case, actually, in every case, it will be a time taking process to paste the data from, uh, such a large database, uh, datasets. So we need to, like, we need to follow some, uh, query query optimization there. We need to, uh, follow some, uh, database schema optimizes in there. So so the the operation could be easily handled, and it will be quicker than, uh, quicker than before. And, uh, it's really helpful for actual actual, even data testing process or data, uh, communication process with, uh, with the particular table or database. And, uh, a situation I'm mentioning, uh, like, uh, if we need to handle, uh, data, like, uh, dataset was there in my past project, which was, like, uh, year by year data we need to separate, and we need to find from particular year of data. So, uh, there I have used partition partially in particular table. Uh, for slowing down the process, it was that. That's why we need to use and over there for the particular table which which containing the years data and we have partitioned it year by year. So that the data could be test or communicate with the table faster. And also one other process I have taken is index for searching the data, And which, like, uh, which which columns are taking longer than as usual to respond, we need to, uh, data index in particular columns so that the searching will be faster for that. And also, in other case, I'm mentioning other scenario, uh, where I I created a view, table view. So that, uh, particular sets of data could be there in that particular view. I will only access the view, uh, instead of the main table so that, uh, data processing will be faster, and it it can could be optimized also. Thanks.

Okay. Uh, the provided code snippet that, uh, that is here written, it's following singleton design pattern. And, uh, it's, uh, we are using here to, uh, database connection to connect with with database. And, uh, it will like, it, uh, we involve it, uh, due to a purpose, actually. Singleton design pattern follows a single instance object actually, and, uh, it cannot be, uh, repeated. So that if we are trying to access again and again the database connection, it will throw a error. And, uh, and, like, it's helpful for us because, uh, it will be, like, if we are, uh, not using a normal pattern to connect database, We can call that every time, and it will be the connectivity will be, uh, there, uh, every time. So that, uh, multiple connectivity issue will be there, uh, in server, and it will cause a slowdown or breakdown of code. And not responding could be happen there. So that we need to use the singleton pattern here. And and so that, uh, the the code will be, uh, called only one time. The connectivity code, uh, class could be for only one time, and, uh, and, like, uh, it will be helpful for our developers.

Okay. So here in MVC, we are using a a model called user. Yeah. And which is having a function called get user by email, which containing the email ID as the argument. And, uh, it will return, uh, a query. Uh, a query actually, a query result. And, uh, like, we are trying to face the all the datas from user where email ID is same as SMS, uh, the argument we are passing as a email. So here, uh, the process is actually wrong, and it will be a problem problematical. And it could be, like, a a SQL injection problem issue here. Uh, so we need to write, uh, we can write a DV query and with the with the argument and with 1 is to 1, uh, could be, like, written here. And so that it could prevent SQL injection. And, uh, also, we need to pass the email email argument and, uh, as a as a, like, uh, question mark here. And, also, uh, we can we can write, uh, and close here, and we can write 1 is to 1. So the inquiry have to be modified, and it will be more secure.

Okay. So for Laravel queue system, uh, we use queue system due to, uh, high volumes of email data. Any, like, long time taking process, we can create a queue process, and we can run it in background in Laravel. And, uh, to, uh, create a queue process, we need to first create a a job, uh, inside job folder. We we have command line for the same. We can, uh, achieve, uh, we can clear job file, uh, using using command line 2. So a new job file there and which will containing the, uh, particular job which we need to create for, uh, for queue process. And, uh, again, we need to create a queue file so that, uh, we need to, like, uh, generate a queue file and also we need to mention the particular job in that same q file. And after that, we need to config the, uh, we need to configure, uh, our, uh, timing and all the stuff. So when it could be, like, or when it will be run, we can we can mention that. And also, uh, we can get a a transact and a log, uh, via post SQL, uh, and we need to use, uh, giving transaction in post SQL. And, uh, we can we can get a log. Uh, we can generate a log file for the for getting the transactional log over there. If we can use simple in Laravel model, we can use, uh, 3 b transaction to get, uh, get a transactional signal log. And we have to, uh, generate a log file using logger. Using logger, we can we can write it, uh, like, we can write in a file all the logs which are which are, like, uh, which are which we are getting, uh, during the execution of, uh, that, uh, transaction particular transaction. And high volume of email, uh, will be there, uh, and it will be, like, uh, we need to configure that, uh, for the case, we'll connect sending e n b file. And, uh, we need to, uh, like, we need to send the particular job in q forces, uh, by sending the, uh, by by, like, if we are, uh, hitting the, uh, email button I mean, sorry, uh, not email, uh, like, particular accent, like, register or any any notification getting, uh, point. And, uh, we need to, uh, queue that, uh, email process into that, uh, that, uh, post SQL table. And, uh, in background, it would be, like, happen. It it it would be called in particular time, which mentioned in queue process. Thanks.

Okay. To manage, uh, like, database process, database transaction that's in manual web request. Yes. Okay. To manage database transaction, we need to, like, uh, use database transit DB transaction in our model first. And after that, we need to, uh, okay. Okay. So we need to clear the session storage, uh, mechanism. And, uh, we we like to we can use default our, uh, like, set session feature in Laravel so that it could be stored in session itself. After execution of, uh, database communication, we can have it. We can set it and, uh, like, okay, multiple if we are having multiple requests, so we need to, like, we need to create multiple multiple session management over there. And, uh, at a time from our employee, I guess, one session will be there. And after that after that, uh, we can have we can have a a database transaction, DB transaction, and uh, we can have, uh, uh, like, uh, storage mechanism through, uh, set session and get session feature.

Given that you have a PHP code that's following the repository pattern, what steps do you, uh, take to turn system it to using dependency injection? Okay. So first of all, for, uh, dependency injection in Laravel, we are we have a service container, uh, through which we can we can, like, have a DI design pattern of dependency injection. And we can we can create new dependency injection, uh, for the same. And for repository button, we need to we need to mention it in service container. And throughout constructor, we can get the, uh, particular particular set of dependency injection as an object, and we can pass through constructor. And it could be accessible in any class through the constructor. We have, uh, like, we we can pass as a variable as a argument over there throughout the, uh, construct. Thank you.