<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ajay Rathod</title>
    <description>The latest articles on DEV Community by Ajay Rathod (@rathodajay10).</description>
    <link>https://dev.to/rathodajay10</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F248724%2Fece76c7c-b016-4a70-84b7-a4b78798f3d2.jpg</url>
      <title>DEV Community: Ajay Rathod</title>
      <link>https://dev.to/rathodajay10</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rathodajay10"/>
    <language>en</language>
    <item>
      <title>Cisco Java Developer Interview Transcript 2024(Java,Spring-Boot,Hibernate)</title>
      <dc:creator>Ajay Rathod</dc:creator>
      <pubDate>Fri, 03 May 2024 08:35:21 +0000</pubDate>
      <link>https://dev.to/rathodajay10/cisco-java-developer-interview-transcript-2024javaspring-boothibernate-5cd7</link>
      <guid>https://dev.to/rathodajay10/cisco-java-developer-interview-transcript-2024javaspring-boothibernate-5cd7</guid>
      <description>&lt;p&gt;“Hello folks, I am jotting down the full tech interview round for a Java developer position at Cisco. All these Q&amp;amp;A are actual questions and will immensely help you if you are looking to enter Cisco Systems. Let’s get started.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flx3ca2nonwr2bhk5v75l.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flx3ca2nonwr2bhk5v75l.jpeg" alt="Image description" width="311" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Are you preparing for a job interview as a Java developer?&lt;br&gt;
Find my book Guide To Clear Java Developer Interview here &lt;a href="https://rathodajay10.gumroad.com/l/whbqi"&gt;Gumroad&lt;/a&gt; (PDFFormat) and &lt;a href="https://www.amazon.in/dp/B0BZJKLPTM"&gt;Amazon&lt;/a&gt; (Kindle eBook).&lt;br&gt;
Guide To Clear Spring-Boot Microservice Interview here &lt;a href="https://rathodajay10.gumroad.com/l/xvufq"&gt;Gumroad&lt;/a&gt; (PDFFormat) and &lt;a href="https://amzn.in/d/2UPd7AM"&gt;Amazon&lt;/a&gt; (Kindle eBook).&lt;br&gt;
Download the sample copy here: &lt;a href="https://rathodajay10.gumroad.com/l/eypfl"&gt;Guide To Clear Java Developer Interview&lt;/a&gt;[Free Sample Copy]&lt;br&gt;
&lt;a href="https://rathodajay10.gumroad.com/l/sftir"&gt;Guide To Clear Spring-Boot Microservice Interview&lt;/a&gt;[Free Sample Copy]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this interview transcript, first round was with two senior engineer, they were evaluating me for Java,Spring-boot,microservice,Database,hibernate,kafka so on and so forth.&lt;/p&gt;

&lt;p&gt;Pro Tip:&lt;br&gt;
“In one hour of interview, only important questions are always asked, and they tend to get repeated all the time. Preparing them is the key to success.”&lt;/p&gt;
&lt;h2&gt;
  
  
  Spring Framework and Spring Boot
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is Response Entity in Spring-Boot?&lt;/strong&gt;&lt;br&gt;
In Spring Boot, a ResponseEntity is a class used to represent the entire HTTP response sent back to a client. It goes beyond just the data itself and encapsulates three key aspects:&lt;br&gt;
Status Code: This indicates the outcome of the request, like success (200 OK), not found (404), or internal server error (500).&lt;br&gt;
Headers: These are optional key-value pairs that provide additional information about the response, such as content type, cache control, or authentication details.&lt;br&gt;
Body: This is the actual data being sent back to the client. It can be anything from JSON or XML to plain text, depending on your API design.&lt;br&gt;
By using ResponseEntity, you gain fine-grained control over how Spring Boot constructs the response. You can set the appropriate status code, add custom headers, and include the response data in the body. This allows you to build more informative and flexible APIs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@RestController
public class ProductController {

    @GetMapping("/products/{id}")
    public ResponseEntity&amp;lt;Product&amp;gt; getProduct(@PathVariable Long id) {

        // Simulate product retrieval logic
        Product product = getProductFromDatabase(id);

        // Check if product exists
        if (product == null) {
            return ResponseEntity.notFound().build(); // 404 Not Found
        }

        // Return product with OK status (200)
        return ResponseEntity.ok(product);
    }

    // Simulate product retrieval from database (replace with your actual logic)
    private Product getProductFromDatabase(Long id) {
        // ... (implementation details)
        return new Product(id, "Sample Product", 10.0);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How to configure multiple databases in spring-boot application?&lt;/strong&gt;&lt;br&gt;
This is very interesting question and gets repeated all the time in an interview.&lt;br&gt;
Spring Boot offers a convenient way to configure multiple databases in your application. Here’s a breakdown of the steps involved:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define Data Source Properties:
Spring Boot uses properties to configure data sources. You can define them in your application.yml or application.properties file.
Each data source needs its own set of properties, prefixed with a unique identifier. Common properties include:
url: Database connection URL.
username: Database username.
password: Database password.
driverClassName: JDBC driver class name for the database.
Here’s an example configuration for two databases named users and orders:
&lt;code&gt;spring:
datasource:
users:
  url: jdbc:mysql://localhost:3306/users
  username: user
  password: password
  driverClassName: com.mysql.cj.jdbc.Driver
orders:
  url: jdbc:postgresql://localhost:5432/orders
  username: orders_user
  password: orders_password
  driverClassName: org.postgresql.Driver&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create DataSource Beans:
Spring Boot provides annotations and utilities to create DataSource beans.
You can use @ConfigurationProperties to map the data source properties defined earlier to a bean.
Here’s an example configuration class with DataSourceBuilder to create beans for each data source:
`@Configuration
public class DataSourceConfig {&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/bean"&gt;@bean&lt;/a&gt;&lt;br&gt;
  @ConfigurationProperties(prefix = "spring.datasource.users")&lt;br&gt;
  public DataSource usersDataSource() {&lt;br&gt;
    return DataSourceBuilder.create().build();&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/bean"&gt;@bean&lt;/a&gt;&lt;br&gt;
  @ConfigurationProperties(prefix = "spring.datasource.orders")&lt;br&gt;
  public DataSource ordersDataSource() {&lt;br&gt;
    return DataSourceBuilder.create().build();&lt;br&gt;
  }&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;Configure Entity Manager and Transaction Manager (Optional):&lt;br&gt;
If you’re using Spring Data JPA, you’ll need to configure separate Entity Managers and Transaction Managers for each data source.&lt;br&gt;
These can be created similarly to DataSource beans, specifying the entities associated with each data source.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Injecting the Correct DataSource:
By default, Spring Boot auto-configures a single DataSource. To use specific data sources:
You can inject @Qualifier("usersDataSource") or @Qualifier("ordersDataSource") for specific repositories or services.
JPA repositories can also use @Entity annotation with a entityManagerFactoryRef attribute to specify the EntityManager.
Remember to adapt the configuration details (database type, connection details) to your specific databases.
&lt;strong&gt;How to declare Global Exceptions in Springboot application?[imp question]&lt;/strong&gt;
Spring Boot offers two main approaches to declare Global Exceptions:&lt;/li&gt;
&lt;li&gt;Using @ControllerAdvice:
This is the recommended approach for centralized exception handling. Here’s how it works:
Create a class annotated with @ControllerAdvice.
Define methods annotated with @ExceptionHandler to handle specific exceptions.
These methods can:
Return a custom error response object containing details about the exception.
Set a specific HTTP status code using ResponseEntity.
Log the exception for further analysis.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@ControllerAdvice
public class GlobalExceptionHandler {

  @ExceptionHandler(ResourceNotFoundException.class)
  public ResponseEntity&amp;lt;ErrorResponse&amp;gt; handleResourceNotFound(ResourceNotFoundException ex) {
    ErrorResponse errorResponse = new ErrorResponse("Resource not found");
    return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse);
  }

  // Define methods for other exceptions you want to handle globally
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What is Spring Bean LifeCycle?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsg5cokw3hqfd1ta1ujan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsg5cokw3hqfd1ta1ujan.png" alt="Image description" width="720" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is IOC Containers?&lt;/strong&gt;&lt;br&gt;
An IoC Container is a software framework component that manages the objects (beans) in your application. It takes over the responsibility of creating, configuring, and assembling these objects and their dependencies.&lt;br&gt;
How Does it Work?&lt;br&gt;
Object Creation: Traditionally, you’d manually create objects in your code. With an IoC container, you define the objects (beans) you need in your application using configuration files (XML or annotations) or Java classes. The container then takes care of instantiating these objects.&lt;br&gt;
Dependency Injection: Objects often rely on other objects to function properly (dependencies). Instead of manually creating and passing these dependencies around, you declare them in your object definitions. The IoC container injects (provides) the required dependencies to the objects it creates. This creates a loose coupling between objects, making your code more modular and easier to test.&lt;br&gt;
Object Lifecycle Management: The IoC container also manages the lifecycle of objects, including initialization and destruction. This frees you from writing boilerplate code for these tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff99vppxqq43o8x6sa9o9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff99vppxqq43o8x6sa9o9.png" alt="Image description" width="498" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Dependency Injections?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotw08kkwkorjwff4l0fn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotw08kkwkorjwff4l0fn.png" alt="Image description" width="720" height="495"&gt;&lt;/a&gt;&lt;br&gt;
In software development, dependency injection (DI) is a technique for providing an object with the objects (dependencies) it needs to function. Here’s a breakdown of the key concepts:&lt;br&gt;
&lt;strong&gt;What are Dependencies?&lt;/strong&gt;&lt;br&gt;
Dependencies are other objects that a class or function relies on to perform its work effectively.&lt;br&gt;
Examples:&lt;br&gt;
A car depends on an engine, wheels, and other parts to function.&lt;br&gt;
A database access class depends on a database connection object to interact with the database.&lt;br&gt;
&lt;strong&gt;What is Application Context &amp;amp; its's use?&lt;/strong&gt;&lt;br&gt;
In Spring Boot applications, the ApplicationContext is a central interface that plays a critical role in managing the objects (beans) used throughout your application. It’s essentially a container that provides the following functionalities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Bean Management:
The core responsibility of the ApplicationContext is to manage the objects (beans) that make up your application.
These beans are typically defined using annotations or XML configuration files.
The ApplicationContext takes care of creating, configuring, and assembling these beans according to the specified configuration.&lt;/li&gt;
&lt;li&gt;Dependency Injection:
Beans often rely on other beans to function properly. These are called dependencies.
The ApplicationContext facilitates dependency injection by automatically providing the required dependencies to the beans it creates. This eliminates the need for manual dependency creation and management, leading to loosely coupled and more maintainable code.&lt;/li&gt;
&lt;li&gt;Resource Access:
The ApplicationContext provides access to various resources your application might need, such as property files, configuration files, and message bundles.
This simplifies resource retrieval and ensures consistent access throughout your code.
&lt;strong&gt;How to Enable multiple Eureka Servers?&lt;/strong&gt;
This article deals with this question
&lt;a href="https://medium.com/become-developer/how-to-work-with-multiple-instances-of-eureka-naming-server-to-avoid-a-single-point-of-failure-d953544281d0?source=post_page-----34ed516ae32d--------------------------------"&gt;https://medium.com/become-developer/how-to-work-with-multiple-instances-of-eureka-naming-server-to-avoid-a-single-point-of-failure-d953544281d0?source=post_page-----34ed516ae32d--------------------------------&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between Spring Filter and Spring Interceptors?(This is good question to check your Spring MVC framework related concepts)&lt;/strong&gt;&lt;br&gt;
HandlerInterceptor is basically similar to a Servlet Filter, but in contrast to the latter it just allows custom pre-processing with the option of prohibiting the execution of the handler itself, and custom post-processing. Filters are more powerful, for example they allow for exchanging the request and response objects that are handed down the chain. Note that a filter gets configured in web.xml, a HandlerInterceptor in the application context.&lt;br&gt;
As a basic guideline, fine-grained handler-related pre-processing tasks are candidates for HandlerInterceptor implementations, especially factored-out common handler code and authorization checks. On the other hand, a Filter is well-suited for request content and view content handling, like multipart forms and GZIP compression. This typically shows when one needs to map the filter to certain content types (e.g. images), or to all requests.&lt;br&gt;
So where is the difference between Interceptor#postHandle() and Filter#doFilter()?&lt;br&gt;
postHandle will be called after handler method invocation but before the view being rendered. So, you can add more model objects to the view but you can not change the HttpServletResponse since it's already committed.&lt;br&gt;
doFilter is much more versatile than the postHandle. You can change the request or response and pass it to the chain or even block the request processing.&lt;br&gt;
Also, in preHandle and postHandle methods, you have access to the HandlerMethod that processed the request. So, you can add pre/post-processing logic based on the handler itself. For example, you can add a logic for handler methods that have some annotations.&lt;br&gt;
As the doc said, fine-grained handler-related pre-processing tasks are candidates for HandlerInterceptor implementations, especially factored-out common handler code and authorization checks. On the other hand, a Filter is well-suited for request content and view content handling, like multipart forms and GZIP compression. This typically shows when one needs to map the filter to certain content types (e.g. images), or to all requests.&lt;br&gt;
&lt;strong&gt;Why to use @Transactional annotation what's the benefit?(In spring interview @Transactional annotation is always asked)&lt;/strong&gt;&lt;br&gt;
@Transactional is a Spring annotation that can be applied to methods or classes to indicate that the annotated code should be executed within a transaction. When Spring encounters the @Transactional annotation, it automatically creates a transaction around the annotated code and manages the transaction lifecycle.&lt;br&gt;
By default, @Transactional creates a transaction with the default isolation level (usually READ_COMMITTED) and the default propagation behavior (REQUIRED). However, you can customize these settings by passing parameters to the annotation.&lt;br&gt;
Here’s an example of using @Transactional in a Spring service class:&lt;br&gt;
`@Service&lt;br&gt;
public class UserService {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Autowired
private UserRepository userRepository;

@Transactional
public void createUser(String name, String email) {
    User user = new User(name, email);
    userRepository.save(user);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}`&lt;/p&gt;

&lt;p&gt;In this example, the createUser() method is annotated with @Transactional, which means that the save() method of the UserRepository will be executed within a transaction.&lt;br&gt;
Advantages of @Transactional:&lt;br&gt;
The @Transactional annotation provides several benefits:&lt;br&gt;
Simplifies transaction management: By using @Transactional, you can avoid writing boilerplate code to create and manage transactions manually. Spring takes care of transaction management for you, so you can focus on writing business logic.&lt;br&gt;
Promotes consistency and integrity: Transactions ensure that multiple database operations are executed atomically, which helps to maintain data consistency and integrity.&lt;br&gt;
Improves performance: Transactions can improve database performance by reducing the number of round trips between the application and the database.&lt;br&gt;
Supports declarative programming: With @Transactional, you can use declarative programming to specify transaction management rules. This makes your code more concise and easier to read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eea6by5ermchlfxza17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eea6by5ermchlfxza17.png" alt="Image description" width="720" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If there is Memory Leak in your application how will you find it?&lt;/strong&gt;&lt;br&gt;
Symptoms of a Memory Leak&lt;br&gt;
Severe performance degradation when the application is continuously running for a long time.&lt;br&gt;
OutOfMemoryError heap error in the application.&lt;br&gt;
Spontaneous and strange application crashes.&lt;br&gt;
The application is occasionally running out of connection objects.&lt;br&gt;
&lt;strong&gt;What is the use of Stringtokenizer?&lt;/strong&gt;&lt;br&gt;
The string tokenizer class allows an application to break a string into tokens. The tokenization method is much simpler than the one used by the StreamTokenizer class. The StringTokenizer methods do not distinguish among identifiers, numbers, and quoted strings, nor do they recognize and skip comments.&lt;br&gt;
The set of delimiters (the characters that separate tokens) may be specified either at creation time or on a per-token basis.&lt;br&gt;
An instance of StringTokenizer behaves in one of two ways, depending on whether it was created with the returnDelims flag having the value true or false:&lt;br&gt;
If the flag is false, delimiter characters serve to separate tokens. A token is a maximal sequence of consecutive characters that are not delimiters.&lt;br&gt;
If the flag is true, delimiter characters are themselves considered to be tokens. A token is thus either one delimiter character, or a maximal sequence of consecutive characters that are not delimiters.&lt;br&gt;
A StringTokenizer object internally maintains a current position within the string to be tokenized. Some operations advance this current position past the characters processed.&lt;br&gt;
A token is returned by taking a substring of the string that was used to create the StringTokenizer object.&lt;br&gt;
The following is one example of the use of the tokenizer. The code:&lt;br&gt;
StringTokenizer st = new StringTokenizer("this is a test"); &lt;br&gt;
while (st.hasMoreTokens()) {&lt;br&gt;
 System.out.println(st.nextToken()); &lt;br&gt;
}&lt;br&gt;
&lt;strong&gt;What is Spring Security Context?&lt;/strong&gt;&lt;br&gt;
SecurityContext — is obtained from the SecurityContextHolder and contains the Authentication of the currently authenticated user. Authentication — Can be the input to AuthenticationManager to provide the credentials a user has provided to authenticate or the current user from the SecurityContext .&lt;/p&gt;

&lt;p&gt;Thanks for reading folks&lt;/p&gt;

&lt;p&gt;full article on medium - &lt;a href="https://medium.com/@rathod-ajay/cisco-java-developer-interview-transcript-2024-java-spring-boot-hibernate-34ed516ae32d"&gt;https://medium.com/@rathod-ajay/cisco-java-developer-interview-transcript-2024-java-spring-boot-hibernate-34ed516ae32d&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>springboot</category>
      <category>microservices</category>
      <category>interview</category>
    </item>
    <item>
      <title>How I got more than 10 offer letters as a Java Developer in 3 months.</title>
      <dc:creator>Ajay Rathod</dc:creator>
      <pubDate>Sat, 15 Apr 2023 08:31:54 +0000</pubDate>
      <link>https://dev.to/rathodajay10/how-i-got-more-than-10-offer-letters-as-a-java-developer-in-3-months-1g9m</link>
      <guid>https://dev.to/rathodajay10/how-i-got-more-than-10-offer-letters-as-a-java-developer-in-3-months-1g9m</guid>
      <description>&lt;p&gt;I will be sharing my preparation strategy for techies who wants to hunt for their next tech job, during 3 months of time I have prepared extensively for a Java developer role. It helped me to clear many interviews including BIG FOUR companies. Developers who is having 0–10 years of experience can apply this strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer &lt;/strong&gt;- This article is not for FAANG companies, I am talking about general tech companies like MNCs' small-scale to Big scale of the Indian job Market.&lt;/p&gt;

&lt;p&gt;Here in this article, I will be elaborating on interview preparation plus my strategies about how to maximize your chance of getting selected for an interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Typical Interview format
&lt;/h2&gt;

&lt;p&gt;Technical Round 1 (L1 round)&lt;br&gt;
Technical Round 2 (L2 round)&lt;br&gt;
Manager Round&lt;br&gt;
HR round&lt;/p&gt;

&lt;p&gt;Typically if you can clear the technical round you are good to go for an offer letter as manager and HR rounds are mostly discussions. We need to prepare for technical rounds only&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Round preparation steps
&lt;/h2&gt;

&lt;p&gt;Typically interview starts with your intro and the interviewer may ask you about the project that you have been working on.&lt;br&gt;
&lt;strong&gt;Step 1&lt;/strong&gt;. Know the project that you have working on, of the current job in and out. We should be able to talk about the below things.&lt;br&gt;
a. Projects Functionality including what it does, and what problem it solves for customers, Basically you should know your project functional overview.&lt;br&gt;
b. Know your project Architecture and Technical stack. Also, you can dig deeper to know about flow end to end.&lt;br&gt;
c. Technical Stack wise talk about what has been used in the project. Like Which front-end is used(angular, react), which backend is used(like Java, Python), and which Database(Postgres, DynamoDB).&lt;br&gt;
d. What kind of CI-CD model is used here, like the deployment part that developers are mostly unaware of?&lt;br&gt;
The above project-related stuff should be thoroughly studied by you so that you can drive the interview on your side, This is important, remember your answers generally drives the interview.&lt;br&gt;
&lt;strong&gt;Step 2&lt;/strong&gt;. As a Java Developer, you should know the below topics which will increase your chance of getting selected.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Object Oriented programming topics including SOLID principles. (prepare for inheritance puzzles)&lt;/li&gt;
&lt;li&gt;Multithreading and Concurrency(prepare for Executor framework and concurrency API&lt;/li&gt;
&lt;li&gt;Collection framework (Prepare for the internal working of each collection data structure like HashMap, Concurrent hashmap, HashSet)&lt;/li&gt;
&lt;li&gt;Serialization (How it works)&lt;/li&gt;
&lt;li&gt;Design Patterns (prepare at least 4–5 design patterns like creational, behavioral, and structural patterns)&lt;/li&gt;
&lt;li&gt;Garbage Collections&lt;/li&gt;
&lt;li&gt;Java Generics&lt;/li&gt;
&lt;li&gt;Java 8 (Stream and Functional Programming-prepare for Java 8 coding programs on streams)&lt;/li&gt;
&lt;li&gt;SQL Queries (prepare to write queries on JOINS and employee table like highest salary and all)&lt;/li&gt;
&lt;li&gt;Coding practice (prepare Array and String problems as much as you can)&lt;/li&gt;
&lt;li&gt;Memory Management (Know about Java 8 and above version memory management changes)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The above area is a must to clear the interview. Generally, a candidate gets selected based on his practical knowledge, and if he is good at writing programs and SQL queries using java he can clear interviews easily.&lt;/p&gt;

&lt;p&gt;I have followed one strategy which is, to be positive and try to give as many interviews as I can. You may get rejected initially but. My personal Observation is if you give 10 interviews 1–2 interviews get cleared. Give as many interviews as you can. It worked for me as well.&lt;br&gt;
I must have given more than 40–50 interviews, which helped me to get the maximum offer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interview Preparation guides for Java Developers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://rathodajay10.gumroad.com/l/whbqi"&gt;Guide To Clear Java Developer Interview&lt;/a&gt;&lt;br&gt;
Free sample copies:&lt;br&gt;
&lt;a href="https://gumroad.com/a/669883603/HMOAv"&gt;Grokking the Java Interview [Free Sample Copy]&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gumroad.com/a/669883603/pfolo"&gt;Grokking the Spring Boot Interview [Free Sample Copy]&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find More article on my Medium page &lt;a href="https://medium.com/@rathod-ajay"&gt;Medium page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading !!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>coding</category>
      <category>programming</category>
      <category>java</category>
    </item>
    <item>
      <title>How I Learned Java in Depth by preparing for Java Technical Interviews</title>
      <dc:creator>Ajay Rathod</dc:creator>
      <pubDate>Tue, 04 Apr 2023 10:41:18 +0000</pubDate>
      <link>https://dev.to/rathodajay10/how-i-learned-java-in-depth-by-preparing-for-java-technical-interviews-30n6</link>
      <guid>https://dev.to/rathodajay10/how-i-learned-java-in-depth-by-preparing-for-java-technical-interviews-30n6</guid>
      <description>&lt;p&gt;This is based on my personal experience. How I Learned Java in Depth while preparing for Java Developer Technical interviews. I will share my Takeaways from it. It helped me to gain more knowledge and Triple my Salary in less time. Since the demand for Java professionals is huge in the Market.&lt;/p&gt;

&lt;p&gt;I assume my readers are mostly Java Developer professionals or developers, Who are seeking to expand their knowledge base so that they can excel in their current or next role.&lt;/p&gt;

&lt;p&gt;How My Java Interview prep helped me to learn more in depth&lt;/p&gt;

&lt;p&gt;When I started working as a Junior Java dev back in my initial days, early in my career. Whenever I was working on a task, I used to do a lot of googling for every coding logic that I can find over the internet. I was more of a stack overflow engineer.&lt;/p&gt;

&lt;p&gt;Having a mentor in the early days is a very fortunate thing to have. They can guide you correctly rather than spending more time googling and completing the task. But I was not that lucky on that front.&lt;/p&gt;

&lt;p&gt;When I started hunting for my next job, I got a lot of rejections and humiliation in technical rounds, because whatever I have learned was superficial only.&lt;/p&gt;

&lt;p&gt;After a few months of preparation and facing the interviews, I got to know the value of five things that makes the difference in the technical interview and that was,&lt;/p&gt;

&lt;p&gt;Reading Java API documentation helped to understand the underlying API of JDK. like how they internally work, and what time and space complexities they have when we use them in code.&lt;br&gt;
Reading good books on Java like Head First Java and Effective java built my Object-oriented programming basics plus added a base to my Java knowledge. I assure you these books will definitely lay a strong foundation for your profile.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When we work on a project we don't pay attention to what is the best practices we should be following while writing code. we were solely focusing on getting the job done. We always write code in a brute force way and not in an optimized way if you working for NON-FAANG companies. In a coding interview, I have been always asked about the optimized code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So solving coding puzzles/problems on leet-code and hacker rank helped me to write better code.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Design patterns and System design questions were asked most of the time. While facing the interview I got to know the importance of them and I have added them to my knowledge base as well&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Importance of Unit testing, sometimes interviewers test your unit testing knowledge. I had to learn the Junit framework in depth because of that.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Topics which i learned in Depth while preparing java technical interview&lt;/p&gt;

&lt;p&gt;Core Java API (Collection framework, Stream, Java Lang Package, Java Util Package, Java Time Package, Java IO Package, Java net Package, Java SQL Package)&lt;br&gt;
Design patterns (Builder, factory, proxy, adaptor, facade, observer design patterns)with examples.&lt;br&gt;
SOLID Design principles with their practical use in coding.&lt;br&gt;
Read Clean code and clean coder of uncle bob which added clean coding habits (fewer WTFs in my Code reviews after that :))&lt;br&gt;
Spring Framework, Hibernate framework, and JPA in depth&lt;br&gt;
A unit testing framework that I have learned was, J-UNIT, MOCKITO, and POWER MOCK. which helped to clear the code coverage criteria in my pipeline.&lt;br&gt;
Unless I have given the interviews I would not have studied the above topics in depth which are very important as a developer.&lt;/p&gt;

&lt;p&gt;After learning all of those in a theoretical and practical way I was able to clear more technical rounds and I was able to triple my salary in less time span. also, I was recognized in my next role as a Strong technical resource.&lt;/p&gt;

&lt;p&gt;One of the comments that my manager gave me in my appraisal was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Ajay is Technically very good and he provides quality code in a timely manner”.&lt;/strong&gt;&lt;br&gt;
That was encouraging to me, how your preparation also makes you a good developer. I hope this helps my fellow readers in their path.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you are preparing for a Java Springboot microservice interview look no further to add the below book to your prep material, it has 250+ interview questions and answers asked in an interview.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rathodajay10.gumroad.com/l/whbqi"&gt;Guide To Clear Java Developer Interview:&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
Gumroad Link — &lt;a href="https://rathodajay10.gumroad.com/l/whbqi"&gt;Gumroad&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazon Link — &lt;a href="https://www.amazon.in/dp/B0BZJKLPTM"&gt;Amazon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me: &lt;a href="https://www.linkedin.com/in/ajay-rathod-b3913861/"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://twitter.com/ajtheory"&gt;Twitter &lt;/a&gt;| &lt;a href="https://medium.com/@rathod-ajay"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>coding</category>
      <category>webdev</category>
      <category>career</category>
    </item>
  </channel>
</rss>
