DEV Community

Mercy
Mercy

Posted on

What are the types or formats of questions can I expect in the exam?? (OCA Java SE 8 Programmer I Certification)

The OCA Java SE8 Programmer I Certification is the first essential certificate to have before taking the OCP Exam. One is expected to sit for OCA first before taking the OCP. As a beginner questions can be tricky. You are coming from the world of Javascript and do not know anything about Java. This post has you covered.

Here we want to discuss some of the tricky questions that can be asked in the OCA exam with the intention to help those who want to sit for the exam. Don't forget to share some of the questions you consider tricky in the comments. Let's help one another.

Here is the one I always see in most past braindumps.
Question type 1 Includes simple code but tricky or confusing answer options.
Image description

Here is the code example:

class JavaCertQType1 {
    public static void main(String... cmd) {
        main("private", cmd);
    }
    private static void main(String type, String[] args) {
        System.out.println(args[0] + args[1]);
    }
}
Enter fullscreen mode Exit fullscreen mode

QSN -> What is the output when the class JavaCertQType1 is executed using the following command (choose 1 option):

java JavaCertQType1 1 11 EJava Guru

  • 1
  • 1 11
  • 111
  • 12
  • 1 11 EJava Guru
  • compilation Error
  • Runtime Exception

How many of you got the answer right before checking the answer?
If you check correctly, you can see that the main method is overloaded and it is totally fine in Java. Main methods in Java can be private, but they won't serve as the entry point for the program execution when you try to run the class directly with the Java ClassName command.

Yes you are used to seeing this
public static void main(String[] args) but this

private static void main(String[] args) is also allowed.

Now let's get to the answer

111

Here is the explanation
I see four command-line arguments 1 11 EJava Guru. These arguments are passed to the main(String... cmd) method as an array cmd, which will contain {"1", "11", "EJava", "Guru"}. The overloaded main method executes the print method. We read arguments from index 0, so the args[0] is "1", and args[1] is "11".
You might wonder why we didn't choose 1 11 as the answer. The reason is that in Java, command-line arguments passed during program execution are always treated as strings.
These are strings, so the + operator performs string concatenation

"1" + "11"

and the answer is

111.
What would have happened if we had removed the private main method but still called it our main method?🤔

class JavaCertQType1 {
    public static void main(String... cmd) {
        main("private", cmd); // Calls the overloaded private main method
    }
}
Enter fullscreen mode Exit fullscreen mode

Execution Command:

java JavaCertQType1 1 11 EJava Guru

The JVM would look for the public static void main(String... cmd) method to start the program. Seeing that the code inside the public main method calls another method named main, it would have tried to find the overloaded main method and failed to find it. Since there is no matching signature, it fails to compile leading to a

Compilation Error

NB
A main method can be private, but it cannot serve as the entry point for program execution by the JVM. It is useful for method overloading or internal logic but must be invoked by another method (like the public main)

Thank you for reading my article, and don't forget to share more tricky questions in the comments. Bring them here, and let's discuss them.

Top comments (0)