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

[Snippet] CSS - Child element overlap parent

I searched from somewhere and found that a lot of people says a basic concept for implementing this feature looks like below: HTML code: <div id="parent">  <div id="child">  </div> </div> And, CSS: #parent{   position: relative;   overflow:hidden; } #child{   position: absolute;   top: -1;   right: -1px; } However, I had a lot of grand-parents in my case and the above code didn't work. Therefore, I needed an alternative. I presumed that my app uses Boostrap and AngularJs, maybe some CSS from them affects mine. I didn't know exactly the problem, but I believed when all CSS is loaded into my browser, I could completely handle it. www.tom-collinson.com I tried to create an example to investigated this problem by Fiddle . Accidentally, I just changed: position: parent; to position: static; for one of parents -> the problem is solved. Look at my code: <div class="modal-body dn-placeholder-parent-positi...

Building a Wizard with Chain of Responsibility Pattern

What is the Idea? We want to create a page that there are some steps and each step has its own business. Users are able to click on a step and its status could be changed. Primefaces owns a component " Wizard " but it it quite hard for us in order to apply our very specific and complicated business domain logic on each step; even we cannot click on a step of this component. We somehow are able to use the component " TabView " works with a strong back-end mechanism. A backend mechanism! what do I mean? Yes, we need it because we want to abstract the behaviors of each step otherwise we will get trouble with many events handling. Obviously, each step has some behaviors  such as "next", "back" and "switch' are the same and they are related to each other; but the business of these behaviors can be different totally. That is where the pattern "Chain of Responsibility" can be applied. Step by Step Building It! In this simple pr...

Updates to the Scrum Guide - The 5 Scrum Values

This article is available at blog.scrum.org , here I just quote my favorite points and give my comment at the end of this post. Ken Schwaber and Jeff Sutherland, the creators of Scrum delivered a webinar on their latest update to the Scrum Guide .  The update was a simple one, adding the 5 values of Scrum to the Guide: These values sound easy? Well, there are many misunderstandings and common problems when applying these values. Here are some example: Value Misunderstanding Getting the value right Commitment Committing to something that you don’t understand because you are told to by your boss. Committing yourself to the team and Sprint Goal. Focus Focusing on keeping the customer happy Being focused on the sprint and its goal. Openness Telling everyone everything about all your work Highlighting when you have challenges and problems that are stopping you from success Respect Thinking you are helping the team by being a hero Helping peop...

Styling Sort Icons Using Font Awesome for Primefaces' Data Table

So far, Primefaces has used image sprites for displaying the sort icons. This leads to a problem if we want to make a different style for these icons; for example, I would make the icon "arrow up" more blurry at the first time the table loading because I want to highlight the icon "arrow down". I found a way that I can replace these icons with Font Awesome icons. We will use "CSS Pseudo-classes" to achieve it. The hardest thing here is that we should handle displaying icons in different cases. There is a case both "arrow up" and "arrow down" showing and other case is only one of these icons is shown. .ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s { background-image: none; margin-left: 5px; font-size: 1.1666em; position: relative; } .ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s:not(.ui-icon-triangle-1-s)::before { content: "\f106"; font-family: "FontAwesome"; position: ...

How to convert time between timezone in Java, Primefaces?

I use the calendar Primefaces component with timeOnly and timeZone attributes for using only hour format (HH:mm). Like this: <p:calendar id="xabsOvertimeTimeFrom" pattern="HH:mm" timeOnly="true" value="#{data.dateFrom}" timeZone="#{data.timeZone}"/> We can convert the value of #{data.dateFrom} from GMT/UTC time zone to local, conversely, from local time zone to GMT/UTC time zone. Here is my functions: package vn.nvanhuong.timezoneconverter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TimeZoneConverter { /** * convert a date with hour format (HH:mm) from local time zone to UTC time zone */ public static Date convertHourToUTCTimeZone(Date inputDate) throws ParseException { if(inputDate == null){ return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(inputDate); int ...