18
头图

Personal situation

  • Education: two
  • Working years: 2 and a half years
  • Interview results: I got offers from companies such as Byte, Pinduoduo, Meituan, Didi, Ouke Cloud Chain, etc.

interview preparation

review

Believe me, you have to read books to really study, and reading books can make your knowledge system more complete.

Of course, you can also read the articles of some big brothers to expand the knowledge base.

The list of Java related books I have read is as follows:

  • Java: "The Art of Java Concurrent Programming", "Java Concurrent Programming in Practice"
  • JVM: "In-depth Understanding of Java Virtual Machine" third edition, "In-depth Java Virtual Machine: Algorithm and Implementation of JVM G1GC", "Design and Implementation of New Generation Garbage Collector ZGC", articles related to JVM by Meituan technical team, R major Related JVM Articles
  • MySQL: "MySQL Technology Insider: InnoDB Storage Engine", "High-Performance MySQL", "45 Lectures on MySQL Practical Combat", "Understanding MySQL from the Roots", "Take You to Be a MySQL Practical Optimization Master from Scratch"
  • Redis: "Redis Design and Implementation", "Redis Development and Operation and Maintenance", Water Drop and Silver Bullet Redis Series Articles
  • Kafka: Orc Blog, "Apache Kafka in Action"
  • Zookeeper: "From Paxos to Zookeeper: Principles and Practices of Distributed Consistency"
  • Architecture: "Phoenix Architecture", "Domain Driven Design: Coping with the Complexity of Software Core"

Another point is that when reading a book, you can try to take notes, so that the efficiency will be higher, and you will not forget it after reading it.

图片

图片

For the books and articles mentioned above, the backend of the open source part can reply to " books " and pick them up by yourself. Some of the mind maps I have organized are also in it, and you can take a look if you are interested.

There are no open source books, I suggest that you can support the original, and buy physical books or corresponding courses.

algorithm

In terms of algorithms, there are not so many superb skills. It is enough to repeatedly brush the first 200 courses of LeetCode, which is more than enough to deal with social recruitment.

I only brushed 170 questions and interviewed more than a dozen big companies. Most of the algorithm questions were original questions.

图片

It will be very painful when you first start brushing. After a few days, if you have no idea, you can read the answer. After reading the answer, continue to write the code. If you can’t write the code, continue to read the answer. After repeated persistence, the algorithm will be done.

CV

In terms of resume, since graduating from university until now, I have been using the super resume: https://www.wondercv.com/ , I think it is very useful.

As for how to write a resume, I'm not an expert either, so don't say anything fancy, just give me a resume template for reference only.

图片 To mention a point, the resume you wrote is to delineate a range of knowledge, and then let the interviewer select topics from the question bank. If you do not know the knowledge points you have demarcated yourself, then you are definitely not sure about the interview. So, be sure to be responsible for every word on your resume, and be familiar with every technical point you write on your resume.

interview process

Self introduction

Self-introduction is a simplified resume. You don’t need to say some meaningless things. The interviewer doesn’t pay attention to whether you like playing basketball or singing. Just ask the most complicated questions.

for example:

Hello interviewer, my name is CoderW, I graduated from Harvard University in 2019.

Since graduation, he has been engaged in background research and development related work.

From 2019 to 22, he was in the Google middleware team, mainly responsible for the design and development of xx middleware. During this period, the transformation and optimization of xxx was completed, and the overall performance was improved by 80%;

In 22 years, I went to the Microsoft e-commerce team, responsible for the design of Microsoft's e-commerce system. In two years, I completed the process of building Microsoft's e-commerce from 0 to 1. Since its launch, the daily active volume has reached 1 billion, and the average QPS of the system has reached 1W.

This time, I am applying for a senior expert position in your company's middleware team. In terms of business direction and technology stack, I personally think that my match is relatively high. I really hope to join your company and build xx system together. Thanks!

Technical discussions

After self-introduction, there is usually a technical discussion session, which usually lasts for 30 to 50 minutes and is the most important part of the entire interview.

1. Neither humble nor arrogant

Remember, this session is a technical discussion session, not a question-and-answer session. A good technical discussion must have a back and forth, rather than a one-sided question and answer.

On the premise of respecting the interviewer, you can question and discuss some of the interviewer's conclusions. In my opinion, daring to put forward your own different views is a plus.

If you encounter an interviewer who disrespects you, or even insults you, I suggest you directly ask for your resume. Everyone is a migrant worker, so what is there to pretend?

2. Be sincere

Some interviewers like to ask some unpopular knowledge to verify the technical depth of the candidate. This is a very normal thing. You don’t need to be too nervous. Be sincere. Yes, yes, no, it doesn’t matter.

Don't be smart and forcibly make up, sincerity is always the first priority!

3. Diverge deeply

If you talk about a knowledge point that you are familiar with, you must grasp it well. You can try to deepen and diverge, and let the interviewer slowly enter your rhythm.

For example, when talking about Kafka's zero-copy.

  1. In-depth: You can go further and talk about sendfile+DMA Scatter/Gather.
  2. Divergence: Divergence after going deep. Let’s talk about why RocketMQ uses zero copy for writing logs, but Kafka does not need zero copy when writing logs.

In-depth is to show how well you understand the technology, and divergence is to show the breadth of your vision.

After answering a question, you can make a brief summary, so that you won't be alone in the clouds, so that the interviewer can't find the point you want to express.

Programming link

If your working years are not too long, there will usually be a programming session after the technical discussion session (this session may also be placed before the technical discussion).

There are two kinds of programming questions, one is algorithm questions and the other is language skills questions.

Algorithm questions may be understood by everyone, such as "two threads cross-printing A and B", "handwriting singleton pattern", "handwriting a simple factory design pattern" are language skill questions.

The algorithm questions have been mentioned above, just brush them wildly; there are only a few language skills questions, just memorize them.

rhetorical question

Personally, I think that the rhetorical question is useless and cannot change the whole interview result at all.

So I generally fix two problems:

  1. What technology stack do I need to use for the position I'm interviewing for?
  2. What was the biggest challenge for the position I was interviewing for?

face scriptures

The sutra is not very complete, I hope it can help.

SF Express

  1. HashMap, the expansion process, how to solve the hash conflict?
  2. I talked about a blog about MySQL that I wrote before, and talked about MySQL slow SQL optimization ideas? What aspects should be considered in the solution process?
  3. APM, how to monitor, what is the principle? Have you heard of Java Agent?
  4. G1, the biggest feature, mark bitmap, card table card page, SATB.
  5. Introducing TiDB, what is a distributed database? What are the advantages and disadvantages compared to MySQL?
  6. How to separate data from hot and cold? How to do sub-database sub-table? Why use ES?
  7. There are several implementations of distributed transactions, such as local message table, best-effort notification, and TCC. What did you choose? What's wrong with AT?
  8. Report DSL optimization, flyweight mode optimization process, how about the optimization effect?
  9. The difference between stand-alone and microservices, what's wrong with microservices? How to solve the data consistency problem? How to solve the idempotent problem?
  10. The current system is divided into several modules? How to divide? How to govern?
  11. What are the usage scenarios of MQ? Where is it used in the project?
  12. How does MQ message sending ensure consistency in MySQL transactions?
  13. Kafka has four elections, Controller election, Partition leader election, GroupCoordinator election, and consumer group coordinator election. Overall design issues, usage scenarios, and traffic planning?
  14. What are the specific scenarios of cache usage, consistency issues, and common problems with cache usage?
  15. The difference between circuit breaker and downgrade, what are the specific usage scenarios?
  16. What is the difference between QPS and TPS? What is the maximum QPS of your system? If the QPS is too large, what will be the problem and how to solve it?
  17. How to design an RPC framework? What points need to be considered?
  18. Are you on the lookout for new technologies? Are you concerned about log4j2 issues? Can you briefly introduce it?

Summary : The difficulty of the interview is low. The director basically talks about the scene design. The interview experience is very good. The director is very respectful and highly praised. Treatment is ok.

Pinduoduo

  1. Introduce one of the most satisfying projects you have done
  2. Introduce TiDB, RocksDb, levelDB, LSM tree, SSTable.
  3. How does XXL-Job secondary sharding work? What's the problem? How to optimize it?
  4. What is the complexity of the bit operation of HashMap, the contains method of HashSet, and the red-black tree?
  5. byte[] a = new byte[10 * 1024] memory allocation process? How big of an object go directly into the old age? Through what parameters to configure?
  6. Introduction to TLAB, PLAB, CAS assignments.
  7. Why pointer compression, why pointer compression? What is the principle?
  8. class loading process? Have you understood class isolation?
  9. Have you understood the underlying implementation principles of polymorphism and overloading at the bytecode level?
  10. Springboot automatic assembly, talk about the SPI principle?
  11. What is the difference between interceptor and filter? scenes to be used?
  12. Spring transaction implementation principle, how is Spring's ACID implemented? If you let you use JDBC to achieve transaction how to achieve?
  13. MySQL locks, which level of locks are table-level locks? Which layer of lock is the row lock?
  14. MySQL indexes? B+ tree? The size of each node of the primary key index? How big is a page? How to store a piece of data larger than 16KB? How much data can text store at most? Line overflow problem? What are the data storage formats? How are overflow pages managed?
  15. Redis ssd, Redis memory space optimization point, embstr and row, intset, ziplist.
  16. What is the physical storage architecture of the Kafka server? Zero copy, mmap, sendfile, DMA gather.
  17. How do you convince others of your plan? What points should be considered? How do you do it? What do you think could be improved?
  18. What should I do if the system traffic suddenly increases by 10 times? 100 times what?
  19. Whiteboard programming: singleton mode, why add volatile
  20. Whiteboard Programming: Implementing a Thread-Safe and Efficient Queue with Stacks
  21. Whiteboard programming: distance between two nodes in a binary tree

Summary : On the one hand, the difficulty is high, and I will keep asking until you can't. The later rounds of interviews are more business-oriented and design-oriented, which is relatively easy. The treatment is full.

Meituan

  1. How many services, how many machines? K8S, how to achieve isolation?
  2. How to do data consistency between services? How to guarantee business?
  3. TCC? Two-phase commit, three-phase commit?
  4. Synchronized, biased the lock for a long time and talked about the source code, the upgrade process, the JVM source code of Synchronized? (Interviewer is very interested in JVM)
  5. Safety point, the role of safety point? Some JVM source code (written in previous article, interviewer and interested)
  6. Garbage collection algorithm; PS+PO, CMS Why use mark-sweep algorithm? The predecessor of CMS, R's big article.
  7. ZGC, I talked about Peng Hancheng's "Design and Implementation of a New Generation of Garbage Collector ZGC" and an article by the Meituan technical team.
  8. G1, I talked about "In-depth Java Virtual Machine: Algorithm and Implementation of JVM G1GC" by Nakamura Chengyang.
  9. What is the difference between write barrier and read barrier?
  10. JMV optimization process, effect. Why upgrade the garbage collector?
  11. Introduce Spring IOC, what is the difference between annotation and XML? Post processor, what is the use of extension points? Have you used it in a project?
  12. MySQL binlog, redo log, undo log writing process? Brush mechanism and parameter settings. Do you understand the MVCC mechanism?
  13. Encountered deadlock problem? The deadlock problem caused by the unique key conflict, why is MySQL designed this way? Do you know what implicit locks are?
  14. What other locks do you know about MySQL? Gap lock, inspection lock...
  15. What is the election process for ZK? What if the network fails during the election process? What is the biggest difference between ZAB and RAFT?
  16. What are the specific messages of the Gossip protocol used by Redis? Rumors spread, why should it be centralized? What are the advantages and disadvantages?
  17. A comparison of Redis distributed locks and ZK distributed locks. AP and CP, talk about CAP theory?
  18. What are the advantages of Kafka? How does RocketMQ delay queue do? What would you do if you were allowed to optimize? Can Kafka implement delayed queues?
  19. Can Kafka guarantee that no data is lost? Why? What should I do if I lose data in business?
  20. Whiteboard Programming: Print Matrix Clockwise

Summary : Meituan's interviewers like to ask concurrent programming and JVM, and they have been talking about these things. The interviews in the next few rounds tend to be business and scenario questions, which are relatively easy.

The interviewer was very respectful and added the interviewer's WeChat account. Later, the interviewer called me and asked me to go to Meituan, but I refused because I had other options. Good luck!

byte

slightly

Summary : Algorithm difficulty is full, one round of algorithm, because it is a GO position, the basic requirements are relatively high, and I did not ask too many Java knowledge points. Treated well.

58 Group

  1. What work did MySQL migrate to TiDB, auto-increment primary key, and how much data?
  2. What kind of research has been done on the performance of TiDB? What is TP90 and TP95.
  3. What are the steps for TiDB to go online? How to avoid data loss? How to ensure reliability?
  4. How is XXL-Job packaged? What if the mission fails?
  5. How is DAG implemented? How does secondary sharding work?
  6. Redis usage scenarios, what data is cached? How to ensure data consistency?
  7. What else do you know about Redis, the advantages of Redis, CP or AP? CAP theory.
  8. What issues need to be paid attention to when storing data in Redis? How to deal with hot key problem and big key problem?
  9. Redis distributed lock, red lock. What's wrong with the red lock?
  10. Introduce the SpringBean creation process and AOP implementation principle?
  11. Difference between BeanFactory and FactoryBean?
  12. How does Spring solve circular dependencies? Does Spring resolve circular dependencies injected by constructors? Has the circular dependency under multiple instances been resolved?
  13. What is the difference between dynamic proxy, JDK dynamic proxy and CGlib dynamic proxy? How was Spring chosen? How to configure?
  14. How to do downgrade? How to do current limit?
  15. What are the load balancing algorithms? How does adaptive load balancing work? What's the problem? How is it optimized?
  16. What are the collections in Java and what are their characteristics?
  17. The difference between HashMap and ConcurrentHashMap? What is the expansion process like?
  18. Introducing AQS, CountDownLatch, Semaphore, volatile, synchronized
  19. Have you learned about thread pools, custom thread pools, and custom rejection policies? What scene is it used for?

Summary : The face is the risk control department, the old company, the interview is less difficult, and the money is less.

Didi

  1. What is the difference between process and thread? How do processes communicate with each other? What about between threads?
  2. HTTPS and HTTP comparison; CA digital certificate; Symmetric encryption Asymmetric encryption process?
  3. What are the common encryption algorithms?
  4. MySQL test, TiDB test, how to achieve smooth migration? How to ensure data is not lost?
  5. How does the task call center do? load balancing? How to collect CPU and memory usage of executors? How is task sharding done?
  6. Task idempotency transformation? How is ZK deployed, what if one of several machines hangs up?
  7. What is the structure of ZAB protocol, ZK election process, and ZXID? What is the use of ZXID?
  8. What is the underlying structure of String, the underlying structure of hash, and the rehash process of Redis?
  9. The difference between AOF and RDB of Redis, can they be used together? How to solve the hot key problem and the big key problem?
  10. Kafka's log, index, sparse index. Zero copy, mmap, sendfile, DMA gather
  11. Kafka rebalance strategy, specific process. GroupCoordinator election, consumption group coordinator election process? What is the default topic of kafka for?
  12. How to solve the circular dependency of Spring, why do you need to add a third-level cache, is the second-level not enough?
  13. What are the characteristics of Springboot, do you understand the automatic assembly principle of springboot?
  14. Wrote an original topic of LeetCode to exchange linked list nodes.

Summary : I met the online car-hailing department, the main language was GO, the interview experience was good, the interviewer respected people, and the money was okay.

Ouke Cloud Chain

  1. QUIC/HTTP3 understand?
  2. Use strokes to describe the storage process of a record in MySQL, the log writing process, and the two-phase log submission?
  3. JVM tuning process? How did you discover the problem with the JVM? How to do early warning processing?
  4. What is the trigger mechanism of Minor GC and Full GC?
  5. Can the ratio of Eden and Survivor be adjusted? What are the parameters? What other parameters are used?
  6. Introduce the migration process of TiDB and MySQL? What problems did you encounter? How to solve it?
  7. Know about RocksDb? levelDB, LSM tree, SSTable?
  8. Do you understand the Paxos algorithm? Introducing RAFT and ZAB, and the difference between them? Will there be a split brain problem? Why?
  9. A brief introduction to the writing process of Kafka messages. Why is Kafka so fast?
  10. Brief introduction of several election processes in Kafka?
  11. Have you heard of Kafka high water level? Why does Kafka need Leader Epoch?
  12. Have you used Netty? Talk about reactor. Do you know about Netty's empty polling bug?
  13. Tell me the difference between BIO, NIO, and AIO?
  14. How does Dubbo's service discovery work?
  15. How do the several data structures of Redis work at the bottom? What data is cached with Redis? How to update data? How to weed out data?
  16. How to solve the problem of cache and database consistency? Why delete the cache instead of updating the cache? What should I do if I fail to delete the cache?
  17. There is a large file containing 10 billion URLs, assuming each URL occupies 64B, find all the duplicate URLs in it.
  18. I gave a piece of paper with a piece of concurrent code on it, and asked what the execution result was, and the test was volatile.

Summary : The face is the digital currency trading system. I went to the on-site interview and drew a lot of structural diagrams. The interview experience was very good, and the interviewer's WeChat was also added. The pay is good and you can work from home.

JD.com

  1. Tell us about your project?

Summary : The interviewer let me dove twice, and suddenly called me later. I answered the phone in a hurry. After introducing the project, he asked a few questions and it ended. The whole process did not exceed 10 minutes. Maybe it's because I'm not my brother's brother?

result

Let’s talk about the results. Except for JD.com, the rest have received verbal offers.

As for why there was no face to Ali and Tencent, because at that time, Ali and Tencent were in the fiscal year liquidation and locked HC, so there was no face.

As for why the interview questions for Bytes were not written, I understand everything and can communicate privately.

Finally, I wish everyone can be an offer harvester!

The author's introduction: A back-end engineer of a large factory, the public account [CoderW], has played the front-end, worked in Java, Python and C++, and now writes Golang in Shenzhen. A migrant worker who loves life, likes stock trading, and dreams of buying a house in the center of the universe.

CoderW
148 声望1.1k 粉丝