At the end of the year, I quit Ali and Meituan, but I got a Java post from Pinduoduo, and shared a three-sided summary

From the end of October to December, a total of 5 companies have been interviewed, among which Ali, Meituan, and Pinduoduo are impressive! Finally, I got the offer of Pinduoduo, and share the interview experience summary here, as well as some study notes at the end of the article to share!

1. Project aspect

  1. First come up and briefly introduce yourself. Then let the items in the resume be introduced.
  2. Talk about the difficulties in the project, the technical architecture.
  3. What problems have you encountered in the usual development process?
  4. Do you usually communicate with colleagues like this?

Second, the basic aspects of java.

  1. First of all, the old hashmap is still talked about. What is the time complexity of hashmap set and get?
  2. Why is O(1), is hashmap thread safe in jdk1.8?
  3. Why is it thread safe?
  4. Do you understand concureenthashmap? How does he achieve thread safety?
  5. Talking about java generics, why call java generics pseudo-generics?
  6. What are the benefits of generics? Can int be used as a generic type?
  7. Talk about the difference between static proxy and dynamic proxy?
  8. How is the bottom layer of the dynamic agent implemented?

Three, multi-threaded aspects

  1. The difference between thread run and start?
  2. What happens if the same thread is started twice?
  3. Talk about the threading model of java?
  4. Talk about the violet keyword? What is his principle? Is violate thread safe?
  5. Tell me about the difference between the two keywords violet and synchronized?
  6. Talk about the principle of thread pool? Have you used the thread pool in your project? How to use it?
  7. What is the difference between core threads and non-core threads? How do you determine the number of core threads in the project.
  8. Do you know the concureent package?
  9. What is cas? How does cas solve the ABA problem?
  10. Tell me about the difference between CountDownLatch and cyclicBarrier?
  11. Tell me about the working mechanism of the java class loader?
  12. Talk about JVM related. Have you done GC tuning, and talk about doing so?

Four, spring framework

  1. Talk about the startup process of springboot?
  2. What annotations are used in normal development?
  3. Talk about the principles of IOC and AOP

Five, database and java middleware

  1. What kinds of data structures are commonly used in redis, which ones have been used in your project, and the scenarios used in business?
  2. Have you ever learned about redis cluster, how to achieve high availability?
  3. What is the difference between redis cluster and sentinel mechanism?
  4. Do you understand the persistence mechanism of redis? How do you do persistence in the project?
  5. Have you encountered redis hotkey? How to deal with it?
  6. Is redis single threaded? Why is single thread so fast?
  7. Redis implements distributed locks and compares with the performance and stability of zk?
  8. The principle of Kafka? How to ensure that the message is not lost?
  9. What are the common ways to implement indexes and what are the differences?
  10. What are the MySQL storage engines and what are the differences?
  11. What method does InnoDB use to implement indexing, and how?
  12. Talk about the difference between a clustered index and a non-clustered index?

Sixth, handwriting algorithm

One handwritten title is leetcode 106. Constructing a binary tree from the middle order and post order traversal sequence Construct a binary tree
according to the middle order traversal and post order traversal of a tree.

Note:
You can assume that there are no duplicate elements in the tree.

For example, given

Mid-order traversal inorder = [9,3,15,20,7]
Post-order traversal postorder = [9,15,7,20,3]

Return the following binary tree:

 3
/ \
9  20
/  \
15   7

The two-sided handwritten question is leetcode 86. Separate linked list
Given a linked list and a specific value x, separate the linked list so that all nodes less than x are before nodes greater than or equal to x.

You should keep the initial relative position of each node in the two partitions.

Example:

Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5

At last

I compiled and summarized these Java advanced study notes and interview questions, which are also free to share with those in need, including Dubbo, Redis, Netty, zookeeper, Spring cloud, distributed, high concurrency and other architecture materials and complete Java architecture learning advanced map!

These materials have been organized into PDF documents, if you need to get the documents, please help three times

At the end of the year, I quit Ali and Meituan, but I got a Java post from Pinduoduo, and shared a three-sided summary

​Documentation

At the end of the year, I quit Ali and Meituan, but I got a Java post from Pinduoduo, and shared a three-sided summary

Guess you like

Origin blog.csdn.net/m0_46874920/article/details/114585317