preface
Some time ago, I interviewed a number of small and medium-sized companies, stepped on a lot of holes, failed a lot, but also a lot of understanding and harvest. Here I want to record that experience, if it can be helpful to my relatives.
The interview process is also a process of self-knowledge and learning. Even if you don’t plan to change jobs for the time being, going out to see yourself every once in a while is beneficial. You can not only assess your value and competitiveness in the market, but also learn some new technologies and update your technology stack.
And if you stay in one place for a long time, you may fall into a kind of “comfort zone” unconsciously, and over time, just like the frog in warm water, it may be at a loss if it is “optimized” one day.
This article mainly summarizes from the “project” and “technology” two aspects, in addition to some more open questions.
New Year’s day passed, “jin SAN Yin Four” will be far? After the Spring Festival ideas dear people, can be high up!
project
Some people say: three years a hurdle.
For those who have worked for three years or so, “project experience” is the most important thing, more important than specific technical points.
Technical points are in fact much the same, some temporary brush questions can understand about. However, project experience is often difficult to make up, if not their own real projects, or not fully prepared, once the interviewer asked a little in-depth is likely to be unable to hold, a lot of points, or even directly failed.
Therefore, many interviewers like to start from the project, extract the cocoon, step by step, through the project to string together the technical points.
Different people’s projects vary greatly, but there are some common highlights: high concurrency scenarios, complex architectural design, JVM tuning, and troubleshooting.
It is better to have these highlights, but if there are more CRUD and not too many highlights, in fact, there is no need to panic. If there are not many technical highlights, you can think about some highlights in the business, such as:
- The business model is complex
- Be familiar with the overall business architecture design
- It is reasonable to split service modules
- What have you done to expand and optimize your business?
- What is the upstream and downstream flow of business data?
- What problems did you encounter and how did you solve them?
- , etc.
These are also highlights that show the interviewer that you have your own thoughts and understanding of the business, not just your own piece of work, not just a machine that writes code.
The interviewer doesn’t know anything about your project, and his or her impression is limited to the words on your resume (and some interviewers may have been pulled in on short notice, don’t ask me why I know 🐶). Interviewers usually start by asking you to introduce yourself, but this is also a place to test your language organization and oral presentation skills.
technology
After all, our face is a technical post, the importance of technology itself is self-evident.
In technical interview, the most important thing can be said to be “technical system”. That is, you should not only have the depth and breadth of skills, but also be able to string them together. In fact, many skills are similar or similar, and it is a good plus to be able to draw analogies and extrapolations from one another in an interview. Such as:
- Redis AOF and MySQL bin log
- Meta-information about beanDefinitions in Spring and classes in the JVM
- Bloom filter and HashMap
- , etc.
Although the accumulation of technology is mainly in peacetime, but brush interview questions is still very necessary, there are many are actually the so-called “eight-part essay”. Here is a list of my interview process in the real encounter some interview questions, only for reference.
Java
The thread pool
- What are the core parameters?
- Task Execution Process
- Task rejection strategy
The lock
- Synchronized Lock upgrade process
- ReentrantLock
- Implementation Principle (AQS)
- How is fair locking implemented?
- Volatile features
HashMap
- Implementation principles of HashMap and ConcurrentHashMap
- How is ConcurrentHashMap thread safe
MySQL
- The index
- Classification? Usage scenarios?
- InnoDB index structure (B+ tree), why not use B tree?
- How do I view index usage? Explain which fields to focus on?
- The transaction
- Isolation level
- The implementation principle of RC/RR
Redis
- Common data structures
- Implementation principle of Zset
- Hash Expansion Process
- Common Cache Issues
- Cache penetration, cache breakdown, cache avalanche, hot key
- How to solve the above problems?
- Persistence: RDB, AOF
- Why is Redis fast? What is the threading model?
- What if MEMORY is full? What are the elimination strategies?
- What cluster framework is used?
Spring
- IoC, AOP implementation
- Transaction propagation features, failure scenarios
- Difference between JDK and CGLib
- Spring Boot Startup principle
Dubbo
- Dubbo architecture
- Load balancing algorithm, fault tolerance strategy, gray scale test
- Mechanism of SPI
- RPC call procedure
- RPC & HTTP
- The difference and connection between the two
- Why does Spring Cloud use HTTP instead of RPC?
JVM
- Runtime memory partitioning
- Garbage collection algorithm
- An object’s memory allocation process?
- CMS collector
- Collection process
- Which process has STW?
- How to deal with memory fragmentation?
- G1 Collector Features
- What GC Roots do you have?
- What are common JVM parameter configurations?
- How do I rectify the fault that the memory usage is too high?
RocketMQ
- The overall architecture
- How to ensure the reliability of messages?
- How do you implement sequential messages?
- Idempotent design of consumer interface
- Transaction message implementation
distributed
- A distributed lock
- How is Redis implemented? The command?
- How to implement ZooKeeper?
- What can I do if I fail to obtain the lock?
- Distributed transaction
- 2PC: Weaknesses?
- 3PC: What problem did 2PC solve?
- TCC: Weaknesses?
- Final consistency: MQ implementation process
- Implementation Framework (Seata)
other
In addition to the “projects” and “techniques” above, other questions may be asked, such as scenario design and analysis, algorithms, and some more open questions. Here are some of the ones I encountered.
Scene Design & Analysis
- Second kill scene design
More typical scene design, e-commerce companies are likely to ask, there are many cases and article analysis online, here will not repeat.
- Distributed lock design
This should not be popular, I also encountered once, but that time was a little confused, maybe more is to investigate the idea, you can think about it.
- How to troubleshoot the JVM memory and CPU surge online?
It mainly involves some common Linux commands and JDK tools, such as Top, JStack, JMap, and Arthas, an open source tool from Alibaba.
Although in the actual situation we may have little chance to contact (small development usually do not have permission, or to support the operation and maintenance boss), but these tools still need to understand, you can run a local Demo to verify, so as not to answer.
- Disaster treatment
What if all the machines (including servers, databases, and cache servers) go down?
PS: These problems in scene design and analysis are usually relatively comprehensive. They are generally to investigate the overall design of a scene or the thinking of analyzing and solving problems.
algorithm
- Climb the stairs
- Binary tree traversal
PS: I have not encountered many algorithmic problems, and some of them may be simple interview procedures. Of course, byte this kind of company except, want to go certainly still have to brush a lot of algorithms.
In contrast, most companies focus more on “project depth” and “technical architecture”, or give some actual scenarios to examine the experience and ideas of analyzing and solving problems.
Open question
These questions are open-ended and have no set answer, perhaps because the interviewer wants to see how you improvise. Some of the problems encountered are as follows:
- Did you bring anyone? What was the experience like?
- If you are a PM, how do you coordinate a project as a whole?
- What would you do if you implemented DDD on your team?
- What are your weak points? Advantages?
- Career plan for the next three years?
- What is your major growth in the company?
- What do your superiors and colleagues say about you?
- What are you reading these days?
In the end
The interview process
Most of the interviews I do are “three rounds of technical interviews + HR interviews”, but some are two rounds of technical interviews, which may vary from company to company. One side is generally the initial screening of the telephone surface, and the two or three rounds of technical surface and HR surface are usually together. That would be nice. Just a trip.
State of mind
Interview mentality is also important. In fact, you and the interviewer are equal, the interview process is to let him know more about you, not his assessment of you.
I just began to meet, because for a long time did not interview, coupled with the original do not love to talk, at the beginning of the tension is not good, and then met several times before gradually a little feeling. If you don’t have an interview for a long time, you can meet with one or two companies to get a feel for it.
Of course, the whole interview time is not recommended to drag too long, otherwise the whole process will be more tired, it is best to work hard.
If you talk to the interviewer well, you will score well.
Finally, I wish to job-hopping pro all the way green light!