Skip to main content

Java Core - Top 10 Questions Every Developer Should Know

#RandomlyPickedByMe

  • What is the difference between Javascript and Java?
  • Difference between StringBuilder and StringBuffer?
  • Why do I get "SomeType@a3fde" when I print my code?
  • Why is String immutable?
  • Why "equals" method when we have "==" operator?
  • Is List<Dog> a subclass of List<Animal>?
  • Why shouldn't we use raw type?
  • Is Java “pass-by-reference” or “pass-by-value”?
  • What's the advantage of a Java enum versus a class with public static final fields?
  • Why "double x = 0.1 + 0.2" and result of print(x) is 0.30000000000000004?

1. What is the difference between Javascript and Java?

Holy crap! (Vietnamese: Thế quái nào lại có câu hỏi ngớ ngẩn vậy chứ?)

"Java and Javascript are similar like Car and Carpet are similar." - Greg Hewgill (on StackOverflow)

2. Difference between StringBuilder and StringBuffer

String is immutable. StringBuilder and StringBuffer are mutable. StringBuffer is thread-safe. StringBuilder is modern than StringBuffer.

"As of release JDK 5, StringBuffer class has been supplemented with an equivalent class designed for use by a single thread, StringBuilder. The StringBuilder class should generally be used in preference to this one, as it supports all of the same operations but it is faster, as it performs no synchronization."
http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html

3. Why do I get "SomeType@a3fde" when I print my code?

Because all classes extend the class Object which has the method toString().
public String toString(){
 return getClass().getName() + "@" + Integer.toHexString(hasCode());
}

4. Why is String immutable?

String s = "Hello";
s.replace("e", "E");
System.out.println(s); //"Hello"

s is only a reference to an String object "Hello";

5. Why "equals" method when we have "==" operator?

"equals" can be overridden, but "==" not.

6. Is List<Dog> a subclass of List<Animal>?

No. Because a List<Dog> is not a List<Animal>.

7. Why shouldn't we use raw type?

Runtime trouble, ClassCastException.

8. Is Java “pass-by-reference” or “pass-by-value”?

Java has only pass by value. A very simple example to validate this.
public void test() {
    MyClass obj = null;
    init(obj);
    //After calling init method, obj still points to null
    //this is because obj is passed as value and not as reference.
}
private void init(MyClass objVar) {
    objVar = new MyClass();
}

Imagine that likes the Shortcut (Reference) and the real file (object) in Windows. Shortcut can change content of its current point to but also can the reference to new file.

9. What's the advantage of a Java enum versus a class with public static final fields?

Consider the purpose! You should use enum types any time you need to represent a fixed set of constants such as the planets in our solar system. However, if we concerns technically the features between these; there are some more benefit when using enum: type-safe, singleton, switch case, built-in methods, etc.

10. Why "double x = 0.1 + 0.2" and result of print(x) is 0.30000000000000004?

Because double/float simply can't represent a number like 0.1.  This is caused by the way computers store floating-point numbers.
Detail: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

Reference:
[1]. https://stackoverflow.com/tags/java/info

Comments

Popular posts from this blog

Junit - Test fails on French or German string assertion

In my previous post about building a regex to check a text without special characters but allow German and French . I met a problem that the unit test works fine on my machine using Eclipse, but it was fail when running on Jenkins' build job. Here is my test: @Test public void shouldAllowFrenchAndGermanCharacters(){ String source = "ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ"; assertFalse(SpecialCharactersUtils.isExistSpecialCharater(source)); } Production code: public static boolean isExistNotAllowedCharacters(String source){ Pattern regex = Pattern.compile("^[a-zA-Z_0-9_ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ]*$"); Matcher matcher = regex.matcher(source); return !matcher.matches(); } The result likes the following: Failed tests: SpecialCharactersUtilsTest.shouldAllowFrenchAndGermanCharacters:32 null A guy from stackoverflow.com says: "This is probably due to the default encoding used for your Java source files. The ö in the string literal in the J...

Strategy Design Pattern

For example, I have a program with an Animal abstract class and two sub-classes Dog and Bird. I want to add new behavior for the class Animal, this is "fly".  Now, I face two approaches to solve this issue: 1. Adding an abstract method "fly" into the class Animal. Then, I force the sub-classes should be implemented this method, something like: public abstract class Animal{ //bla bla public abstract void fly(); } public class Bird extends Animal{ //bla bla public void fly(){ System.out.println("Fly high"); } } public class Dog extends Animal{ //bla bla public void fly(){ System.out.println("Cant fly"); } } 2. Creating an interface with method "fly" inside. The same issue to an abstract class, I force the classes these implement this interface should have a method "fly" inside: public interface Flyable{ public void fly(); } public class Bird implements Flyable{ //bla bla public void fly(){ System.out.pr...

The power of acceptance test

User Story is the place PO gives his ideas about features so that developers are able to know what requirements are. Acceptance tests are these show the most valuable things of the features represented by some specific cases. Usually PO defines them, but not always. Therefore, refining existing acceptance tests – even defining new ones that cover all features of the User Story must be a worth task. Acceptance test with Given When Then pattern If we understand what we are going to do, we can complete it by 50% I have worked with some members those just start implementing the features one by one and from top to down of the User Story description. Be honest, I am the one used to be. What a risky approach! Because it might meet a case that is very easy to miss requirements or needs to re-work after finding any misunderstood things. I have also worked with some members those accept spending a long time to clarify the User Story. Reading carefully of whole User Story by defining...

What the heck is Meteor DDP?

I was using Meteor for my messenger project. I was so curious about the real time connection. I wanted to know how exactly this mechanism works. In this post, I will go through the DDP Specification, an overview of WebSocket, and a simple demo about how to subscribe a publication of Rocket.Chat (containing a DDP server) from an external webpage. At a glance, I knew that Meteor invented a protocol called DDP which uses for handling real time connection. So then, what is DDP? "DDP (Distributed Data Protocol) is the stateful WebSocket protocol that Meteor uses to communicate between the client and the server." [1] All right! Why does DDP matter? "DDP is a standard way to solve the biggest problem facing client-side JavaScript developers: querying a server-side database, sending the results down to the client, and then pushing changes to the client whenever anything changes in the database" . [2] In order to understand deeply the protocol, I decided ...

Multiple Inheritance of State and Implementation

Today, I was just curious about why an enum can not extend anything else. I took a look on the Oracle document here , and I found the answer is below: "All enums implicitly extend java.lang.Enum. Because a class can only extend one parent (see Declaring Classes), the Java language does not support multiple inheritance of state (see Multiple Inheritance of State, Implementation, and Type), and therefore an enum cannot extend anything else." I have been learned of it before. But, wait a sec...! Why Java does not support multiple inheritance of state? Since I have worked with other programming languages like C++, I was able to make a class extend some other classes. The short answer is to avoid the issues of multiple inheritance of state .  I wonder if other programming languages have these below terms but Java does. Multiple inheritance of state It is the ability to inherit fields from multiple classes. There is a problem and Java avoids it. "For exa...