Top 70+ Core Java Interview Questions To Land a Job in 2019

This blog post covers the most popular Java interview questions about basic java definitions, OOPs concepts, java threads, java collections, Exceptions, JDBC, JSP, etc, so you can excel during the job interview process. .

top 70+ core java interview questions and answers land a job in 2019TL;DR: As you may notice today, to land your Java dream job you must excel during the job interview process. This is why we have decided to write this article in which we have compiled the most common core Java interview questions and answers, to help you understand the basic concepts of Java programming. This blog post is intended for experienced candidates as well as beginners.

Java is the most used programming language by millions of developers around the world to develop applications for devices supporting Java.

This tutorial covers the most popular Java interview questions about basic java definitions, OOPs concepts, java threads, java collections, Exceptions, JDBC, JSP, etc.

Java Basics

Q1. What is Java?

Java is one of the most popular programming languages. It is a high-level programming language and is platform independent. Java is a group of objects. It was developed by Sun Microsystems. It is used to build mobile apps, web apps, desktop apps, games etc.

Q2. Why Java is called the Platform Independent Programming Language?

Java was designed to allow building application programs and running them on any platform, without the need to be rewritten or recompiled by the programmer for each separate platform. The JVM makes this possible.

Q3. What is JVM?

A Java virtual machine (JVM) is a process virtual machine that can execute Java bytecode. Every Java source file is compiled into a bytecode file, which is then executed by the JVM.

Q4. What is the Difference between JDK and JRE?

JRE: The Java Runtime Environment is the Java Virtual Machine (JVM) where your Java programs are being executed.

JDK: The Java Development Kit is a Software Development Kit for Java, including the JRE, the compilers and tools (like JavaDoc, and Java Debugger), to help user developing, compiling and executing Java applications.

Q5. Why Java is not 100% Object-oriented?

Java is not 100% Object-oriented because it uses eight primitive data types such as boolean, byte, char, int, float, double, long, short which are not objects.

Q6. What does the “static” keyword mean?

The static keyword means that a variable or method can be accessed, without requiring an instantiation of the class to which it belongs.

Q7. Can you override private or static method in Java?

A user cannot override static methods in Java, because method overriding is based upon dynamic binding at runtime and static methods are statically binded at compile time. A static method is not associated with any instance of a class therefore the concept cannot be applicable.

Q8. Can you access non static variable in static context?

A static variable in Java belongs to its class and its value remains the same for all its instances. A static variable is initialized when the class is loaded by the JVM. If your code attempts to access a non-static variable, without any instance, the compiler will show an error, since those variables are not created yet and they are not linked to any instance.

Q9. What is Function Overriding in Java?

Method overriding occurs when a child class redefines the same method from the parent class. Overridden methods should have the same name, argument list, and return type. The overriding method is not allowed to limit the scope of the method it overrides.

Q10. What is Function Overloading in Java?

Method overloading in Java means that two or more methods in the same class have the exact same name, but different parameters.

Q11. List the Data Types supported by Java?

Java programming language supports eight primitive data types listed below:

  • Byte
  • Short
  • Int
  • Long
  • Float
  • Double
  • Boolean
  • char

Q12. What is Autoboxing and Unboxing?

Autoboxing is the automatic conversion made by the Java compiler from the primitive types to their corresponding object wrapper classes. For example, the compiler converts an int to an Integer, a long to a Long, and so on. If the conversion goes the other way, this process is called unboxing.

Q13. What are wrapper classes in Java?

Wrapper classes are objects types for the Java primitives. Each primitive data type has its dedicated class. We call them wrapper classes because they “wrap” the primitive data type into an object of that class.

Q14. What is a Constructor, Constructor Overloading in Java and Copy-Constructor?

A constructor gets invoked when a new object is created. Every class has a constructor. In case the programmer does not define a constructor for a class, the Java compiler (Javac) creates a default one. The constructor overloading is the same as method overloading in Java. Many constructors can be created for a single class. The parameter list for each constructor must be unique. Finally, Java does support copy constructors like C++, but the difference lies in the fact that Java doesn’t create a default copy constructor if you don’t write your own.

Q15. Does Java support multiple inheritance?

Java does not support multiple inheritance. A Java class is allowed to extend only one class, however it can implement more than one interface.

Q16. What are pass by reference and pass by value?

A pass by value means that a copy of the object is passed. Hence, even if we modify the value of that object, it doesn’t affect the original value. On the other hand, when an object is passed by reference, this means that it is the reference of the object which is passed and not the object itself. Thus, any changes made by the external method, are also reflected globally.

Q17. What are access modifiers in Java?

In Java, access modifiers are special keywords which are used to limit the access of a class, constructor, data member and method in another class. Java has four categories of access modifiers:

  • Public
  • Protected
  • Default
  • Private






Same class





Same Package subclass





Same Package non-subclass





Different package subclass





Different package non-subclass





Q18. Why pointers are not used in Java?

Java doesn’t use pointers because they are insecure and enhance the complexity of the program. Furthermore the JVM is known to be responsible for implicit memory allocation, so pointers are not allowed in java to keep the user away from accessing memory.

Q19. What is final keyword in Java?

final is a keyword in Java that is used as a non-access modifier. A final variable can be used in different contexts such as:

final variable: When the final keyword is used with a variable then its value can’t be changed once assigned. Also, you can assign a value to the final variable using only the class constructor if it has not been assigned.

final method: a final method can’t be overridden by a child class.

final class: When a class is declared as final in Java, it can’t be extended by any subclass class but it can extend other class.

Q20. What is the difference between an Interface and an Abstract class?

Java supports the creation of Abstract classes and Interfaces. They share some characteristics but differ in some others features listed below:

  • Abstract class may have abstract methods and non-abstract methods simultaneously. In contrast, an interface allows only abstract methods.
  • A class in Java can implement multiple Interfaces but can extend only one abstract class.
  • A class that implements an Interface should implement all its defined methods. On the other hand, a class may not implement all declared methods from an abstract class, but it should be declared as an abstract class.
  • Abstract class can implement an Interface without implementing its declared methods.
  • Variables declared in a Java interface are by default final. An abstract class may contain non-final variables.
  • An interface should have only public members. An abstract class may have public, private, or protected members.
  • An interface cannot be instantiated because it is fully abstract. An Abstract class also cannot be instantiated, but can be invoked if it includes a main method.

Q21. How does Java enable high performance?

Java uses Just In Time compiler to enable high performance. JIT is used to convert the instructions into byte codes.

Object Oriented Programming (OOP)

Q1. What is encapsulation in Java?

Encapsulation gives objects the ability to hide their internal characteristics and behavior. Each object can have number of members, which can be accessed by other objects and change its internal data. In Java there are three access modifiers public, protected and private to limit access rights to other classes inside or outside packages. Some advantages of Encapsulation are:

  • Protect the internal state of objects by hiding their attributes.
  • Increase usability and maintenance of code.
  • Improves modularity.

Q2.What is polymorphism in Java

Polymorphism is when you have different implementation or behavior for the same method and it is the compiler that decides which implementation to choose based on data types.

Q3. What is inheritance in Java?

Inheritance allows an object to inherit the fields and methods of the inherited class, called parent class. Inheritance offers re-usability of code and can be used to add further functionality to an existing class, without modifying it.

Q4. What is abstraction in Java?

Abstraction is the process of hiding the implementation details from the user and thus, develops classes in terms of their own functionality, instead of their implementation details. In Java, abstraction is achieved using abstract classes and interfaces. The abstraction technique tries to separate the implementation details of a class from its behavior.

Q5. What are the differences between encapsulation and abstraction?

Abstraction and encapsulation are complementary concepts. On the one hand, abstraction focuses on the behavior of an object. On the other hand, encapsulation focuses on the implementation of an object’s behavior.

Q6. What is multiple inheritance? Is it supported by Java?

Multiple inheritance is when we have a child class that inherits properties from multiple classes. Java does not allow this kind of inheritance for the simple reason that if multiple parent classes have the same method name, then the compiler will struggle to figure out which method to execute at runtime.

Hence, Java does not support multiple inheritance. The problem is generally known as Diamond Problem.

Q7. What is an association in Java?

Association is a relationship where all objects manage their own lifecycle and there is no owner. Let’s see the example of User and Group. A single group can have multiple users and a single user can belong to multiple groups but there is no ownership between the two objects and both have their own lifecycle. These relationships can be one to one, one to many, many to one and many to many.

Q8. What is aggregation in Java?

An aggregation is a particular type of Association where all objects have their own lifecycle except that there is ownership and child object can not belong to another parent object. Let’s see the example of football player and team. A single player can not belong to multiple teams and a team can have a number of players, however if we delete the team, the player object will not destroy.

Q9. What does composition mean in Java?

Composition is also a particular form of Aggregation. Child objects do not manage their lifecycle and when the parent object is removed all its child objects will also be removed. It is a strong form of Aggregation. Let’s see once more an example of a relationship between House and rooms. House can include multiple rooms, there is no existence of room without house and each room cannot belong to different houses. If we remove the house, the room will be automatically removed.

Q10. What is a marker interface in Java?

A Marker interface is an interface which has no data member and member functions. It is an empty interface. The most common examples of Marker interface in Java are Serializable, Cloneable etc. The marker interface can be declared as follows.

public interface Serializable{}

Java Collections

Q1. What is the Java Collections Framework?

Java Collections Framework provides a well designed set of interfaces and classes that support operations like searching, sorting, manipulation, insertion and deletion on a collection of objects.

Q2. What are the basic interfaces that are available in Java Collections Framework?

The most basic interfaces that reside in the Java Collections Framework are:

  • Collection, which represents a group of objects known as its elements.
  • Set, which is an unordered and unsorted collection that cannot contain duplicate elements.
  • List, which is an ordered collection and can contain duplicate elements.
  • Map, which is an object that maps keys to values and duplicate keys are not allowed.

Q3. Why doesn't Collection extend Cloneable and Serializable interfaces?

The Collection interface contains groups of objects known as elements. Each concrete implementation of a Collection can decide how to maintain and order its elements. Some collections allow duplicate keys, while some other collections don’t. The semantics and the implications of either cloning or serialization become relevant when dealing with actual implementations. Hence, the concrete implementations of collections must choose the way they can be cloned or serialized.

Q4. What does mean Ordered and Sorted in collections?

Ordered: It means the values that are stored in a collection are based on the ones that are added to the collection. So we are able to iterate the values from the collection in a specific order.

Sorted: Sorting mechanism may be applied internally or externally so that the sorted objects in a particular collection is based on properties of the objects.

Q5. What is an Iterator?

The Iterator interface offers a number of methods that can iterate over any Collection. Each Java Collection has the iterator method that returns an Iterator instance. Iterators are capable of deleting elements from the underlying collection while iterating.

Q6. What are the differences between Iterator and ListIterator?

You will find below the differences between these elements:


  • An Iterator can be used to traverse both the Set and List collections, while the ListIterator can be used to iterate only over Lists.
  • The Iterator can go over a collection only in forward direction, while the ListIterator can iterate over a List in both directions.
  • The ListIterator is implementing the Iterator interface and includes more functionality, such as adding an element, replacing an element etc.

Q7. What is difference between fail-fast and fail-safe?

The Iterator’s fail-safe property works with the clone of the underlying collection and therefore, it is not affected by any alteration in the collection. All the collection classes in java.util package are fail-fast, while the collection classes in java.util.concurrent are fail-safe. Fail-fast iterators throw a ConcurrentModificationException, while fail-safe iterator never throws this exception.

Q8. How HashMap works in Java?

HashMap in Java allows storing key-value pairs. The HashMap requires a hash function and uses hashCode and equals methods, in order to add and retrieve elements to and from the collection respectively. When the put method is invoked, the HashMap evaluate the hash value of the key and stores the pair in the appropriate index within the collection. If the key exists, its value is updated with the new value. Some essential characteristics of a HashMap are its capacity, its load factor and the threshold resizing.

Q9. What is the importance of hashCode() and equals() methods ?

The hashCode and equals methods are used by a HasMap in Java to resolve the index of the key-value pair and to identify duplicates.

More specifically, the hashCode method is used in order to determine where the specified key will be stored. Because different keys may generate the same hash value, the equals method is used to verify whether the specified key actually exists in the collection or not. For that reason, the implementation of both methods is crucial to the accuracy and efficiency of the HashMap.

Q10. What are the differences between HashMap and Hashtable?

The HashMap and Hashtable classes implement the Map interface and that's why they have very similar characteristics. Yet, they differ in the following features:

  • A HashMap allows the existence of null keys and values, while a Hashtable allows neither null keys, nor null values.
  • A Hashtable is synchronized, while a HashMap is not. Therefore, HashMap is suitable for single-threaded environments, while a Hashtable is preferred in multi-threaded environments.
  • A HashMap provides its set of keys and a Java application can iterate over them. Thus, a HashMap is fail-fast. In contrast, a Hashtable provides an Enumeration of its keys.
  • The Hashtable class is considered to be a legacy class.

Q11. What is the difference between Array and ArrayList?

The key differences between Array and ArrayList classes are listed below:

  • Arrays can include primitives or objects, while an ArrayList can include only objects.
  • Arrays have fixed length that contains a fixed number of single typed values while an ArrayList is dynamic.
  • An ArrayList offers additional methods and features, such as addAll, removeAll, iterator, etc.

Q12. What is difference between ArrayList and LinkedList?

The ArrayList and LinkedList classes implement the List interface; however there are differences between them listed:

  • An ArrayList uses indexes to store data backed by an Array. It allows random access to its values with a performance equal to O(1). In contrast, a LinkedList stores its data as list of elements and each element have a link to its previous and next element. In this case, the search function for an element has execution time equal to O(n).
  • The insertion and removal operations of an element are faster in a LinkedList, as there is no need of resizing an array or updating the index once an element is added inside the collection.
  • A LinkedList needs more memory than an ArrayList, because each node in a LinkedList has two references, one for the previous element and the other for the next element.

Q13. What is Java Priority Queue?

The PriorityQueue is an unbounded queue, based on a priority heap and its elements are ordered according to their natural order or by a Comparator provided at the time of its creation. A PriorityQueue doesn’t allow null elements. Lastly, the Java PriorityQueue is not thread-safe and it needs O(log(n)) time to enqueue and dequeue tasks.

Q14. What do you know about the big-O notation?

The Big-O notation defines the performance or complexity of an algorithm in the worst case scenario as the number of items in a data structure grows. The Big-O notation can also show other behavior such as memory utilization. Since the collection classes are actually data structures, we focus on the Big-O notation to decide which implementation to use, based on time, memory and performance. Big-O notation can provide a good sign about performance for bulk data.

Q15. What are some best practices concerning the Java Collection framework?

  • Based on the application’s needs, it is very important to choose the right type of the collection to use. For example if the size of the elements is fixed and known, we shall use an Array, instead of an ArrayList.
  • Some collection classes have the ability to specify their initial capacity. Thus, if we know the number of elements that will contain, we can use it to avoid rehashing or resizing.
  • Always use Generics for type-safety, readability, and robustness. Also, by using Generics you avoid the ClassCastException during runtime.
  • Use immutable classes provided by the Java Development Kit (JDK) as a key in a Map to avoid the implementation of the hashCode and equals methods for our custom class.
  • Program in terms of interface not implementation.
  • Return zero-length collections or arrays instead of returning a null in case the collection is empty.

Q16. What is the difference between Enumeration and Iterator interfaces?

  • Enumeration is faster compared to an Iterator and needs low memory.
  • Iterator is much safer compared to Enumeration, because other threads cannot access and modify the collection of objects that is currently traversed by the iterator.
  • Iterators give the possibility for the caller to delete elements from the collection, which is not allowed with Enumerations.

Q17. What is the difference between HashSet and TreeSet?

The HashSet is implemented with a hash table and hence, its items are unordered. The add, remove, and contains methods of a HashSet have constant time complexity O(1). In contrast, a TreeSet is implemented using a tree structure. The items in a TreeSet are sorted, and thus, the add, remove, and contains methods have time complexity of O(logn).

Java Threads

Q1. What is the difference between processes and threads?

A process is an execution of series of instructions, while a Thread is a single execution sequence within a process. A process may have multiple threads. A Thread is known as a lightweight process.

Q2. What are the available thread states in a high-level?

A thread can stay in one of these states during its execution:

  • Runnable: A thread becomes ready to run, but does not start running yet.
  • Running: The processor is executing the thread code.
  • Waiting: A thread is waiting for some external processing to finish, it is a blocked state.
  • Sleeping: The thread is forced to sleep.
  • Blocked on I/O: Waiting for an I/O operation to end.
  • Blocked on Synchronization: Waiting to get a lock.
  • Dead: The execution of thread is completed.

Q3. Explain different ways of creating a thread. Which one is better and why?

Three ways exist for creating a Thread:

  • A class can extend the Thread class.
  • A class can implement the Runnable interface.
  • An application can use the Executor framework, in order to create a thread pool.

The Runnable interface is the better choice, because it saves an object from inheriting the Thread class. In case your application architecture needs multiple inheritance, only interface may solve the problem. Moreover, the thread pool can be manipulated easily.

Q4. What is the difference between a synchronized method and a synchronized block?

In Java world, every object has a lock. A thread can get the lock for an object using the synchronized keyword. The synchronized keyword can be used in a method level (coarse grained lock), as well as a block level of code (fine grained lock).

Q5. How does thread synchronization occur in a monitor?

The JVM uses locks in combination with monitors. A monitor work exactly as a guardian watching over a series of synchronized code and ensuring that only one thread at a time executes a synchronized block of code. Every monitor is linked to an object reference. The thread cannot execute the code until it acquires the lock.

Q6. What’s a deadlock?

Deadlock is a state where two processes are holding the same resource and waiting for each other to finish, before continuing. The result is that both processes wait endlessly.

Q7. How do you make sure that N threads can access N resources without deadlock?

To avoid deadlock while using N threads, it is important to impose an order on the locks and make every thread follow that ordering. Therefore, if all threads lock and unlock the mutexes in the same order, no deadlocks can occur.

Java Exception Handling

Q1. What are the two types of Exceptions in Java?

Two types of exceptions exist in Java: checked exceptions and unchecked exceptions.

Q2. What is the difference between Unchecked and Checked Exception?

Unchecked exceptions are not checked at compiled time and do not require to be declared in the throws clause of a method or a constructor. On the other hand, checked exceptions are checked at compile time and should be specified in a method or a constructor’s throws clause or handled by the programmer code.

Q3. What difference exists between Exception and Error in java?

Exception and Error classes are both child of the Throwable class. The Exception class is intended to be used for exceptional situations that a user’s code should catch and handle. The Error class describes exceptions that are not expected to be caught by the user code.

Q4. What is the difference between throw and throws?

The throw keyword allows the explicit raising of an exception within the user code. In contrast, the throws keyword is used to specify the exceptions that are not handled by a method. Each method should explicitly specify which exceptions are not handled separated by a comma, so the callers of that method can watch out possible exceptions. Finally, multiple exceptions are separated by a comma.

Q5. Why is the finally block is important in exception handling?

The finally block in Java will be executed even if no exception is actually thrown. Even if the catch statement is not there and an exception is raised, the finally block will still be executed. Lastly, the main purpose of finally block is to release the resources used by the program like I/O buffers, database connections, etc.

Q6. What will happen to the Exception object after exception handling?

The Exception object will be garbage collected in the next garbage collection.

Q7. What is the difference between finally block and finalize() method?

A finally block will be executed whether or not an exception is thrown and allows the release of those resources held by the user code. Finalize is a protected method of the Object class, which is invoked by the Java Virtual Machine (JVM) just before an object is garbage collected.


Q1. What is JDBC?

JDBC is an abstraction layer that helps users to decide which database to use. JDBC enables developers to create database applications in Java, without worrying about the underlying details of a particular database.

Q2. Explain the role of Driver in JDBC?

The JDBC Driver has vendor-specific implementations of the abstract classes offered by the JDBC API. Each driver should implement the following classes of the java.sql package: Connection, Statement, PreparedStatement, CallableStatement, ResultSet and Driver.

Q3. What is the purpose Class.forName method?

This method allows the loading of the driver responsible of establishing a connection to the database.

Q4. What is the advantage of PreparedStatement over Statement?

PreparedStatements are precompiled and therefore, their performance is much better. Also, PreparedStatement objects simplify their reuse with different input values to their queries.

Q5. What is the use of CallableStatement?

A CallableStatement is used to execute stored procedures. Stored procedures are saved and provided by a database. Stored procedures can take input values from the user and may have a result. Stored procedures offers security and modularity, this is why it is highly recommended to use them.

Q6. Name the method, which prepares a CallableStatement?

CallableStament.prepareCall() is the method responsible of preparing a CallableStatement.

Q7. What does Connection pooling mean?

Interacting with a database uses a lot of resources, because of the opening and closing of database connections. Particularly, when the number of database clients raises, this cost is significant and a large number of resources is consumed. A pool of database connections is reserved at start up by the application server and is maintained in a pool. A request for a connection is served by a connection living in the pool. When the connection ends, the request is returned to the pool and may be used to satisfy future requests.


Q1. What is a JSP Page?

A Java Server Page (JSP) is a text based document that contains two sort of text: static data like HTML or XML and JSP elements. JSP is a technology that allows the creation of dynamic generated content.

Q2. How the JSP requests are handled?

When a JSP request arrives, the browser requests a page that ends with a .jsp extension. Next, the Web server interprets the request and converts the JSP page into a servlet class using the JSP compiler. Notice that the JSP file is compiled only once when the first request hits, or if the JSP file has changed. The generated servlet class is invoked, to handle the browser’s requests. When the processing of the request is finished, the servlet return a response to the client.

Q3. What are Directives? What are the different types of Directives available in JSP?

Directives are instructions that are processed by the JSP engine, when the page is compiled into a servlet. Directives allow setting page-level instructions, inserting data from external files, and specifying custom tag libraries. Directives are defined between < %@and % >.

You can find the different types of directives below:

  • Include directive: Used to include a file and merges its content with the current page.
  • Page directive: Used to define specific attributes in the JSP page, like error page and buffer.
  • Taglib: Used to declare a custom tag library which is used in the page.

Q4. What are JSP actions?

JSP actions are executed when a JSP page is requested. They can be dynamically inserted into a file, re-use JavaBeans components, redirect the user to another page, or generate HTML for the Java plugin. Some of the available actions are listed below:

  • jsp:include - includes a file, when the JSP page is requested.
  • jsp:useBean - finds or instantiates a JavaBean.
  • jsp:setProperty - sets the property of a JavaBean.
  • jsp:getProperty - gets the property of a JavaBean.
  • jsp:forward - forwards the client to a new page.
  • jsp:plugin - generates browser-specific code.

Q5. What are Scriptlets?

In Java Server Pages (JSP) technology, a scriptlet is a piece of Java-code embedded in a JSP page. The scriptlet is everything within the tags.

Q6. What are Declarations?

Declarations are same as variable declarations in Java. Declarations are used to declare variables for later use in expressions or scriptlets. To add a declaration, you must use the sequences to enclose your declarations.

Q7. What are Expressions?

A JSP expression allows the insertion of the value of a scripting language expression, after the conversion to a string, into the page returned to the client, by the web server. Expressions are defined between <% =and %> tags.

Q8. What is meant by implicit objects and what are they?

Implicit objects are those Java objects that the JSP Container makes accessible to developers in every page, without the need to be explicitly declared. JSP Implicit Objects are also called pre-defined variables.

You can find a list of those implicit objects below:

  • application
  • page
  • request
  • response
  • session
  • exception
  • out
  • config
  • pageContext

#blogger #blog #java #oop #JavaInterviewQuestions #java2019


Angular,7,Angular 8,1,Best Practices,1,Design,1,Firebase,1,Ionic,1,Java,5,Nodejs,3,Python,1,Restful API,1,Software Development,1,Spring,3,Spring Batch,1,Spring Boot 2,1,Typescript,1,Web Development,1,
Programming Tutorials, News and Reviews: Top 70+ Core Java Interview Questions To Land a Job in 2019
Top 70+ Core Java Interview Questions To Land a Job in 2019
This blog post covers the most popular Java interview questions about basic java definitions, OOPs concepts, java threads, java collections, Exceptions, JDBC, JSP, etc, so you can excel during the job interview process. .
Programming Tutorials, News and Reviews
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy