The experience of the interview was good, the interviewer has been guiding, but it has been a long time since I have dealt with standardized writing 🤣
- Position: Backend Development
- Date: 2023-05
- Interview Duration: 1 hour 24 minutes
Java#
Basics#
-
What is the difference between String, StringBuilder, and StringBuffer?
- What is the reason for the better performance of StringBuilder?
-
What are the List implementations used in Java development? Can you explain their characteristics?
- What is the difference between ArrayList and LinkedList?
-
What are the Map implementations used in Java development? Can you explain their characteristics?
- What problems can occur with HashMap in concurrent scenarios, and what methods can be used to solve them?
Concurrency#
-
In daily development, when do you need to use a thread pool?
- Why do we use a thread pool instead of directly creating a new thread?
-
Besides using multithreading, what other approaches do you use to solve concurrency problems in programming (such as locks)?
- Have you used the synchronized keyword in Java? Can you explain how it is generally used?
- Can synchronized be used to modify methods? What phenomenon will occur?
-
What is the usage and difference between Sleep() and Wait() methods?
JVM Virtual Machine#
- Are you familiar with Java Virtual Machine's garbage collection (GC)?
- Which GC model is used in your project?
Database#
- What are the transaction isolation levels in MySQL? Can you give an example for each level?
- Can you introduce MySQL locks, such as gap locks?
- Are you familiar with indexes?
- Why is the query efficiency of primary key indexes faster than that of regular indexes?
- What is the difference between unique indexes and primary key indexes?
Data Structures and Algorithms#
- Please introduce quicksort and heapsort.
- Write the inorder and preorder traversal of a binary tree using recursion.
Projects#
- Please provide a detailed explanation of the projects you have worked on.
- Why did you use SpringCloud's OpenFeign to call third-party services in your project?
- How is the log calling chain implemented in your project, and how does it work in practice?
- What are the differences between MySQL and ProgresSQL, and why did you switch the database from MySQL to ProgresSQL?
- How do you achieve a smooth transition during the database switching migration process?
- How do you achieve a smooth database switch without stopping the service?
- Scenario: Calling an API where Step A is executed sequentially and Step B is executed asynchronously in the background to record the call log (which takes longer to execute). Now, if Step A is successful and returned to the user, but the service crashes during the execution of Step B and the log is not recorded, how would you handle this situation?