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...

Gzip upload on browsers

Today, I faced a problem that I could not upload my archive file with gzip format on Firefox, even it worked on Chrome. I was using macOS. My application had a setting to whitelist accepted files. I’ve already added "application/gzip" to that list. "It’s strange!", I thought. I finally figured out that my uploaded file's type actually was "application/x-gzip" on Firefox. I also asked my colleagues to check their uploaded files on Window and Ubuntu. Hmm… they were totally different! It was "application/x-compressed" on Window, and was "application/x-compressed-tar" on Ubuntu. In fact, gzip is already standardized by IANA. There is a note in RFC-6713 as below: "Some applications have informally used media types such as application/gzip-compressed, application/gzipped, application/x-gunzip, application/x-gzip, application/x-gzip-compressed, and gzip/document to describe data compressed with gzip. The media types defin...

DevOps Toolchain Enhancement

 Historically, our company ubitec had started with a customer project. Agile/Scrum was our proposal for working with customers. Time by time, Agile/Scrum also became our culture for software development. To be successful with this development approach, we somehow needed to have a fast release for customers (i.e. every one week). Back then, we had a build tool Jenkins which was responsible for having sprint release packages for our customers. The build job pipelines contain some steps such as gathering the artifacts, checking the code convention, running the tests, building docker images, and packaging an archived file (a zip file). The set of tools involved in a pipeline is roughly called a toolchain. It is just a part of a bigger process called the DevOps toolchain. Source: https://www.ibm.com/blogs/cloud-archive/2016/11/devops-architecture-available-on-bluemix-garage-method-site/ DevOps is a proven method that fits Agile. Today,  it is even treated as a mandatory factor...

How I did customize "rasa-nlu-trainer" as my own tool

Check out my implementation here Background I wanted to have a tool for human beings to classify intents and extract entities of texts which were obtained from a raw dataset such as Rocket.chat's conversation, Maluuba Frames or  here . Then, the output (labeled texts) could be consumed by an NLU tool such as Rasa NLU. rasa-nlu-trainer was a potential one which I didn't need to build an app from scratch. However, I needed to add more of my own features to fulfill my needs. They were: 1. Loading/displaying raw texts stored by a database such as MongoDB 2. Manually labeling intents and entities for the loaded texts 3. Persisting labeled texts into the database I firstly did look up what rasa-nlu-trainer 's technologies were used in order to see how to implement my mentioned features. At first glance rasa-nlu-trainer was bootstrapped with Create React App. Create React App is a tool to create a React app with no build configuration, as it said. This too...

Fulfilling Your Contribution Needs

Human resource management motivation Managing human today is quite different from the industrial age which treats people as just "chickens". Rather than people now are very important to the success of an organization. People are an organization's special resource. They should be encouraged to grow to contribute their effort and creativeness to their beloved working environment because the contribution is one of their most needs in life. Training people: getting rid of the ineffective model and adopting the new one The ineffective model of training people: Hiring new people --> giving them a crash course once --> expecting them working effectively.  That somehow makes sense but you're about to expect a luck because you do not really spend your effort for mentoring them. If they can work effectively, well...lucky you! Otherwise, you will blame that these people are ineffective and you let them go and hire the new ones. What a waste of time! The new effe...