profile-pic
Vetted Talent

Sunil Kumar

Vetted Talent

Versatile Senior System Engineer with 6+ years of experience supporting a leading US telecom client, with strong expertise in Java, Spring Boot, Angular 5, and legacy application migration. Skilled in designing REST and SOAP APIs, building front-end GUIs, and preparing technical documentation across SDLC/STLC. Certified in Microsoft Azure Fundamentals and SAFe 5.0, with hands-on experience in migrating applications to Azure Cloud. Proficient in DevSecOps practices, CI/CD pipelines using Jenkins and CodeCloud, and security scanning tools like SAST, DAST, SCA, and SONAR. Trained in Microservices (IBM-recognized) and well-versed in Agile and TDD methodologies. Additional strengths include PL/SQL, Shell Scripting, application security, OWASP remediation, manual penetration testing, and system debugging. Familiar with tools and platforms such as Eclipse, Git, JIRA, Postman, SOAP UI, WebSphere, and Connect Direct.

  • Role

    Senior Java Engineer

  • Years of Experience

    6 years

Skillsets

  • Restful APIs - 6 Years
  • Customer and technical support
  • Agile software development & testing
  • SME
  • technical lead
  • Technical and business analysis
  • Back-End Web Development
  • programming languages
  • Test Driven Development
  • Release Management
  • Java 8
  • SQL - 6 Years
  • Git - 6 Years
  • Spring - 6 Years
  • Java - 6 Years
  • Eco pipeline
  • SCA
  • DAST
  • SAST
  • Rest and soap web services
  • Microsoft Azure Cloud
  • DevSecOps
  • JPA
  • Shell Script
  • Oracle PL/SQL
  • CI/CD
  • Spring Boot

Vetted For

15Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Senior Software Engineer ( Java)AI Screening
  • 67%
    icon-arrow-down
  • Skills assessed :computer science fundamentals, Front-end Development, JakartaEE, Micronaut, Quarkus, Spring Boot, Architecture, Cloud, nosql/sql, Spring Framework, AWS, Java, Leadership, Problem Solving Attitude, System Design
  • Score: 60/90

Professional Summary

6Years
  • Apr, 2018 - Present7 yr 7 months

    Lead Application Developer

    IBM India

Applications & Tools Known

  • icon-tool

    Jira

  • icon-tool

    LeanKit

  • icon-tool

    Zephyr

  • icon-tool

    Postman

  • icon-tool

    SOAP UI

  • icon-tool

    Eclipse

  • icon-tool

    Visual Studio

  • icon-tool

    Veracode

  • icon-tool

    Jenkins

  • icon-tool

    ADO

  • icon-tool

    Websphere

  • icon-tool

    SFTP

  • icon-tool

    Spring Boot

  • icon-tool

    Oracle PL/SQL

  • icon-tool

    JPA

  • icon-tool

    DevSecOps

  • icon-tool

    SAST

  • icon-tool

    DAST

  • icon-tool

    CI/CD

  • icon-tool

    JFrog

Work History

6Years

Lead Application Developer

IBM India
Apr, 2018 - Present7 yr 7 months
    Perform requirement gathering with clients to evaluate functionality and business needs for new feature collaboration. Accurately estimated work hours and tracked project using the Scrum methodology. Developed and deployed features within complex order and billing systems. Conduct code reviews for other developers. Troubleshooted incidents reported by end-users, ensuring smooth system operations. Automation of manual tasks for better cost and time optimization for business. Collaborate with cross-functional teams to triage product or system issues, conducting in-depth analysis on hardware, network, or service operations. Performed internal SOX Audit & Compliance for SOX Controls for financial system.

Major Projects

7Projects

SAREA/LISA REST API

    Developed robust REST APIs, including Sarea Migration, Delete Order, Correct Record, and Cease and Reprovide, to introduce new functionalities and enhance system capabilities, enabling the expansion of services and new speed support using Java and Spring Boot.

MEF E-Bonding

    Developed a new REST API for MEF (Metro Ethernet Format) and performed API integration for e-bonding orders directly to vendors to automate order provisioning process with vendors, reducing human intervention and fully automating the process. This cut down SIM time by about 30%.

3PT REST API

    Built new REST API to introduce a new order provisioning system for loading 3PT circuits, facilitating billing, invoicing for vendors, data correction of inventory.

Cloud Migration

    Successfully migrated a legacy application to Azure, re-architecting the system and upgrading the database to Oracle 19c, the operating system to RHEL, and performing necessary software, code and infrastructural upgrades on the cloud platform.

SOX and FIM

    Developed new Sarbanes-Oxley (SOX) and File Integrity Monitoring (FIM) functionality using Java, Spring Boot, and Linux Shell Scripting. This enhanced auditing, improved unauthorized change detection, and strengthened access control for financial systems. Additionally, automated the generation of evidence for submission to auditors.

NGGN-I Complex Ordering System

Apr, 2018 - Present7 yr 7 months
    NGGN-I is the Access Ordering Platform for the MOW. Next Generation Global Network International provides functionality to support Most of World access orders in Service Delivery domain.

GAIM Complex Billing System

Apr, 2018 - Present7 yr 7 months
    The Global Access Information Management is the MOW access invoicing, Access, Inventory, Invoice, Audit Compliance, and Financial and Dispute Management tool

Education

  • Bachelor of Technology (Hons) - Information Technology

    Dr A.P.J Abdul Kalam Technical University, Lucknow (2017)

AI-interview Questions & Answers

Could you help me to understand more about background by giving a brief introduction about yourself? Yeah. So my name is Sunil Kumar, and currently, I'm working With IBM. In in Bangalore for a US lead leading telecom client, and I'm working as a lead up application developer

Illustrate how would you optimize query performance for a Java application by using both SQL and NoSQL databases. So I think database performance can be optimized if you have. The first step is to write an optimized code. Uh, so I would use queries or the code that would be optimal. For example, if you are trying to fetch the 2nd highest salary for an employee, 1 way to do that is using a max function and using a subquery. Basically, you run a max function and then you again, uh, run a max function on that to select the salary, which is less than the maximum. So less than maximum will obviously be the same thing with the help of row num and order by clause. So first, you need to just order by use order by clause to order the salaries in in a descending order. The second row will be the salary, which will be 2nd highest, and you can just use a a clause to fetch equals to 2 where the salary would be 2nd highest. So that is an optimal way of doing it in terms of the code or the query that you are writing. So similarly, you need to approach the the queries and the transaction in a way that can be more optimal. 2nd way is that you you have we we can use indexing. Indexing is something that improves the performance of a database retrieval, the record retrieval. Uh, and if we do that, there is some really good benefit in terms of, uh, saving the time and improving the performance. Java applications using both SQL or SQL query performance.

Could you describe a strategy for implementing 0 down time deployment for a Java based web services in AWS? Okay. So first thing is that you need to implement a monitoring. It can be any any kind of monitoring. It can be an agent or anything. But if you're using a microservice architecture, then you have circuit breakers, which will keep monitoring the web services, uh, sorry, the microservices, and they will isolate the 1 which is causing the problem. Now if we have to first, uh, identify which which microservice is failing, that circuit breaker can do and avoid cascading failure. But at the same time, you need that microservices to be available because I cannot have a 0 downtime. So I think in order to achieve that, you should be deploying a feature of, um, where if the node is going down, then automatically another, uh, the same with the same configuration, the microservices can be brought up in another region with the same configuration and setting so that all other microservices can start pointing to that. There will be no change in the configuration. Just you are just moving it to a new node so the URL and everything will remain same. So it's like so and the database will also be replicated instantly. So I believe in that way, you can, uh, achieve a 0 downtime in, uh, that deployment.

How does 1 ensure consistency across multiple microservices in Java that use disparate SQL and SQL databases? So you we can maintain consistency with the help of transaction management and to detect that if there is any issue that we need to roll back so we can implement that with the combination of 2 PC commit. So, uh, that you can do the changes and the commit in in phases across the the microservices. So combining both these techniques, I think I can achieve consistency across multiple microservices.

Yes. I can I can include a cache layer in Spring Boot to improve the response time of an SQL database driven application? For that, I need to use, um, the the the the the cache manager. So we need to define a configuration of at the rate cache, and we need to use the annotation at the rate cache equal. Right? And then wherever and you need to also configure a class called concurrent cache manager. After you have the dependency and you have created a concurrent hash manager, you need to use the annotation add the recachable to add wherever and as the name of that cache, wherever you need to store frequently accessed data. For example, during the sale, I, as a customer, would first go with the products that are available at discount rather than the, uh, products which are on MRP. So we can cash discounted products already so that I if I, as a customer, am querying it, the code should not be going and looking into the database for those products, and that can be cached already, uh, so that that can perform improve the the performance and the response time on a SQL driven database. And I think I missed to add this point in the question that was asked that how can you improve the performance? We can add, uh, caching as well there to add it to that.

What would be the first step to debug the performance issues in a cloud deployed our service that you will spring boot. First step is to identify the root cause and where the problem is. So with there are many features, but with the context of spring boot itself, we can use actuators. Actuators are production like feature, and they have various endpoints that can be enabled to manage or you can say manage and track or monitor the performance of of your application. There is 1 actuator call called health, uh, which you can enable to to check the health of your application. So, similarly, I think with the help of actuators, different endpoints, you can activate them in your application of property file so that after you deploy the application, uh, the spring boot in your logs, you can see those actuator endpoint metrics, uh, which can fluctuate based on the performance. So if there any sort of performance issue, you can, uh, use actuators to check it. But it says it also says cloud deployed Java service. So every cloud provider also provides you log analytics or monitoring agents. So not necessarily a Spring Boot application, but even if it is our other framework also, the cloud provider is giving you those services to monitor your agent, you can go to the dashboard and, uh, you can see the entire dashboard where it is a well represented graphical charts to identify the performance issues. If there is any kind of CPU utilization, I can see the spike. I can see the time where exactly it is happening and and and on which resource it is happening. So with the help of that, I can identify. So once I have identified, I need to check. I'll let Excel give 1 example. If there is a lot of CPU spike happening on a particular resource, it means that it is not able to handle those that that load. Right? So that is the problem in in that particular, uh, code.

Read with this Java code snippet used to connect to a database and execute a query. What improvements would you suggest for better error handling and for maintainability? Try connection driver management. Get connection user pass statement. Then you have a result set. You are executing the query. Select star from users. Process the result set. Score exception. File release statement dot close and correction dot close. What improvements would you suggest for better error handling and code maintainability? Okay. In terms of code maintainability, I think, uh, well, what I can do is I can try to add a better description, more comments of what exactly this code is doing because looking at that, I can see that it is selecting start from users. But what is the purpose of this particular function better description in this code of what this particular block is expected to do. Plus, I think I would also add who has written this and what is the requirement or the project that was part of this as a part of which it was written. Error handling, so I would try I have a catch. I can add along with the SQL exception, I would also suggest to add another catch and just catch exception instead of SQL exception so that if any other exception happens, that can be also caught with that. So having another catch is is good. The result set is not being closed here. So I think you we should also close the results set into that finally block if we are done executing it and do not, like, do not keep it open after you have done, uh, processing of that result set. No. Uh, I'm not sure looking at this. It seems the user and the password. So if the username and the password is hard coded, I would suggest not to use those not user approach of hard coding those credentials. You can use property files or you can also if it's a cloud application, then you can put those into, uh, the key vault or any kind of service which the cloud is providing to invoke and get the secret and its value to use it and code maintainability. If the Java also provides a tribe with resources options so that if you use it, you don't have to explicitly write a finally block to close all the resources. So that comes very handy. Try with resources so that I don't have to worry about closing of these, uh, results set or the statement or the connection and all of that.

So I'm in the following Java code that intends to apply the singleton design pattern. Identify if it is correctly implement the pattern and if it's thread safe. If not, how would you refactor it? Public class singleton, private static singleton instance supposed to null. Private singleton public static singleton get instance. If intents supposed to run, that's supposed to support a little bit of instance. It is not thread safe because this method is not synchronized. So we have not used a synchronized keyboard to, uh, allowed any thread safe operation. So this particular instance is not thread safe. So definitely not thread safe. Now identify if it is correctly implements the pattern. Some of the instance supposed to be null. I would I would start exceeding and get instance if it is. I think it's fine.

Explain how would you manage transactions approach distributed microservices in Java, especially when dealing with eventual consistency. I can use transaction management. So in I have a tran annotation called add direct transactional that can be used to roll back the database operations if an exception happens. But since this is a distributed environment, I have to approach this with a 2 PC solution and a 2 PC commit so that I do the changes and commit them into phases instead of doing it in in in a 1 shot. So combining both these techniques of transaction management and 2PC commit, I think I can achieve eventual consistency in a dis in in a distributed microservices architecture.

Consider a scenario where an ecommerce application experience inconsistent read data issues. How would you address this while using Spring framework and NoSQL database? Read data issue. How would you address this value in screen framework in your database? I'm not sure on this question.

Can we present an example of a complex system on AWS where you have successfully applied in, uh, the dependency inversion principle from solid Solid or in Java. Can you present an example of a complex system on OWS where you successfully applied the dependent inversion principle from Soliton. Not