Home Java JavaInterview questions Collection of classic Java interview questions (3)

Collection of classic Java interview questions (3)

Jul 07, 2020 pm 04:54 PM
java Interview questions

Collection of classic Java interview questions (3)

1. The difference between String, StringBuffer and StringBuilder

(Related tutorial recommendations: java interview questions)

The value of String is immutable, which results in a new String object being generated every time an operation is performed on String.

Objects of the StringBuffer and StringBuilder classes can be modified multiple times without generating new unused objects

The speed is: StringBuilder > StringBuffer > String

The biggest difference between the StringBuilder class and StringBuffer is that StringBuilder's methods are not thread-safe.

Look at the picture:

Collection of classic Java interview questions (3)

(Recommended tutorial: java entry program)

2. All All classes inherit from the object class. What are the direct subclasses of the object class that you have used? What are the commonly used methods of the object class?

  • Boolean

  • Character

  • Class

  • ClassLoader

  • Compiler

  • Enum

  • String

  • System

  • Thread

Common methods of Object class

  • toString ();

  • ## equals();

  • hashCode();

3. What are generics, how are they used, and what are their benefits?

is a special type that defers the work of type clarification until when the object is created or the method is called.

Parameterized type, pass the type as a parameter. It is a design pattern that supports polymorphism very well, such as various containers.

Benefits:

Advances runtime problems to the compilation period, avoiding forced type conversion.

4. Why should serialversionUID be used for Java object serialization?

1. Why serialize objects?

  • The process of converting objects into byte sequences is called object serialization

  • The process of restoring a byte sequence into an object is called object deserialization

2. There are two main uses for object serialization:

(1) Permanently save the object's byte sequence to the hard disk, usually in a file;

(2) Transmit the object's byte sequence on the network.

3. Why use SerialversionUID

If the user does not declare a serialVersionUID by himself, the interface will generate a serialVersionUID by default. If a new field is added to the object, the serialversionUID allocated by the system will change, resulting in Deserialization exception.

(Video tutorial recommendation:

java video tutorial)

5. Advantages and disadvantages of reflection

1. Advantages

Reflection improves the flexibility and scalability of Java programs, reduces coupling, and improves adaptive capabilities. It allows programs to create and control objects of any class without raising the hard-coded target class.

Reflection is not available in some other commonly used languages, such as C, C, Fortran or Pascal.

Java reflection technology has a wide range of applications, such as software testing, JavaBean, etc.

Many popular open source frameworks such as Struts, Hibernate, and Spring use this technology in their implementation.

2. Disadvantages

(1) Performance Overhead

Reflection includes some dynamic types, so the JVM cannot optimize these codes. Therefore, reflective operations are much less efficient than those non-reflective operations. We should avoid using reflection in frequently executed code or in programs with high performance requirements.

(2) Security Restrictions

Using reflection technology requires that the program must run in an environment without security restrictions. This is a problem if a program must run in a security-restricted environment, such as an applet. .

(3) Exposure of Internals

Since reflection allows code to perform some operations that are not allowed under normal circumstances (such as accessing private properties and methods), using reflection may cause leading to unexpected side effects. The code has functional errors that reduce portability. Reflective code breaks abstraction, so when the platform changes, the behavior of the code may also change.

The above is the detailed content of Collection of classic Java interview questions (3). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Laravel lazy loading vs eager loading Laravel lazy loading vs eager loading Jul 28, 2025 am 04:23 AM

Lazy loading only queries when accessing associations can easily lead to N 1 problems, which is suitable for scenarios where the associated data is not determined whether it is needed; 2. Emergency loading uses with() to load associated data in advance to avoid N 1 queries, which is suitable for batch processing scenarios; 3. Emergency loading should be used to optimize performance, and N 1 problems can be detected through tools such as LaravelDebugbar, and the $with attribute of the model is carefully used to avoid unnecessary performance overhead.

Integrating PHP with Machine Learning Models Integrating PHP with Machine Learning Models Jul 28, 2025 am 04:37 AM

UseaRESTAPItobridgePHPandMLmodelsbyrunningthemodelinPythonviaFlaskorFastAPIandcallingitfromPHPusingcURLorGuzzle.2.RunPythonscriptsdirectlyfromPHPusingexec()orshell_exec()forsimple,low-trafficusecases,thoughthisapproachhassecurityandperformancelimitat

python memory management example python memory management example Jul 28, 2025 am 01:10 AM

Python's memory management is based on reference counting and garbage collection mechanisms. 1. The reference counting mechanism ensures that objects are released immediately when the reference number is 0. The return value of sys.getrefcount() is 1 more than the actual reference because it increases its reference itself; 2. Circular references cannot be cleaned through reference counting, and it depends on the generational recycling of the gc module. Calling gc.collect() can recycle unreachable objects; 3. In actual development, long-term holding of large object references should be avoided. We can use weakref weak references, timely place None to release memory, and use tracemalloc to monitor memory allocation; 4. Summary: Python combines reference counting and garbage collection to manage memory, developers can use tools and optimize reference pipes.

Laravel raw SQL query example Laravel raw SQL query example Jul 29, 2025 am 02:59 AM

Laravel supports the use of native SQL queries, but parameter binding should be preferred to ensure safety; 1. Use DB::select() to execute SELECT queries with parameter binding to prevent SQL injection; 2. Use DB::update() to perform UPDATE operations and return the number of rows affected; 3. Use DB::insert() to insert data; 4. Use DB::delete() to delete data; 5. Use DB::statement() to execute SQL statements without result sets such as CREATE, ALTER, etc.; 6. It is recommended to use whereRaw, selectRaw and other methods in QueryBuilder to combine native expressions to improve security

Reactive Programming in Java with Project Reactor and Spring WebFlux Reactive Programming in Java with Project Reactor and Spring WebFlux Jul 29, 2025 am 12:04 AM

Responsive programming implements high concurrency, low latency non-blocking services in Java through ProjectReactor and SpringWebFlux. 1. ProjectReactor provides two core types: Mono and Flux, supports declarative processing of asynchronous data flows, and converts, filters and other operations through operator chains; 2. SpringWebFlux is built on Reactor, supports two programming models: annotation and functional. It runs on non-blocking servers such as Netty, and can efficiently handle a large number of concurrent connections; 3. Using WebFlux Reactor can improve the concurrency capability and resource utilization in I/O-intensive scenarios, and naturally supports SSE and WebSo.

Notepad   find and replace with regex capture groups Notepad find and replace with regex capture groups Jul 28, 2025 am 02:17 AM

Use regular expression capture group in Notepad to effectively reorganize text. First, you need to open the replacement dialog box (Ctrl H), select "Search Mode" as "regular expression", 1. Use () to define the capture group, such as (\w ) to capture words; 2. Use \1 and \2 to reference the corresponding group in the replacement box; 3. Example: Exchange the name "JohnDoe" as "Doe, John", find (\w )\s (\w ), replace it with \2,\1; 4. Date format conversion 2023-12-25 to 25/12/2023, find (\d{4})-(\d{2})-(\d{2}), replace it with \3/\2/\1; 5. Log reordering can extract time, level, ID and other information

Optimizing Memory Usage in Java Applications Optimizing Memory Usage in Java Applications Jul 28, 2025 am 02:40 AM

UseefficientdatastructureslikeArrayListoverLinkedListandprimitivecollectionstoreduceoverhead;2.Minimizeobjectcreationbyreusingobjects,usingStringBuilderforconcatenation,andcachingexpensiveobjects;3.Preventmemoryleaksbynullifyingreferences,usingstatic

Using MapStruct for Painless Bean Mapping in Java Using MapStruct for Painless Bean Mapping in Java Jul 28, 2025 am 03:20 AM

MapStruct is a compile-time code generator used to simplify mapping between JavaBeans. 1. It automatically generates implementation classes by defining interfaces to avoid manually writing lengthy set/get mapping code; 2. It has type-safe, no runtime overhead, supports automatic mapping of the same name fields, custom expressions, nested objects and collection mapping; 3. It can be integrated with Spring and uses @Mapper(componentModel="spring") to inject mapper into Springbean; 4. Simple configuration, just introduce mapstruct dependencies and annotationProcessorPaths inserts

See all articles