The idea written at the beginning
Last year was a disaster. It was more important for each of us to live healthily than anything else. Many companies are having a hard time with layoffs, so it’s good for most to keep their jobs, let alone move to a higher position.
But this year I, it seems to be more lucky than a lot of people, specialized subject one’s previous experience, the starting point is very low, in a lot of big factories that value academic qualifications fight their way out. After two years of work, I jumped to Suning and stayed in Suning for three years, but now I am in Ali. Many people around me wonder, how on earth did I do it? Here’s how I’ve been promoted so fast these years, hoping to give you some inspiration and help.
This article mainly shares 4 points, can be read on demand:
- Share1: Ali Java post interview questions
- Share2: Suning development three years, how do I accumulate experience?
- Share3:5 years of development experience, how to move to Ali?
- Share4: How to improve the interview pass rate of Ali Social recruitment?
Share1: Ali Java post interview questions
(1) Zookeeper
- The CAP theorem
- ZAB agreement
- Leader election algorithm and process
(2) Redis part
- Application scenarios of Redis
- Data types supported by Redis
- Data structure of zSET table
- Redis data Expiration Strategy
- Redis LRU expiration strategy concrete implementation
- How to solve Redis cache avalanche, cache penetration problem
- Redis persistence mechanism
- Redis pipeline
(3) Mysql
- The basic elements of a transaction
- Transaction isolation level
- How to solve the concurrency problem of transactions (dirty read, phantom read)?
- MVCC multi-version concurrency control?
- What are binlog,redolog,undolog and what do they do?
- InnoDB row/table lock?
- What is the difference between MyISam and InnoDB? When to select MyISam?
- Why choose B+ tree as index structure?
- What can be stored in leaf nodes of index B+ trees?
- When does the query not go to the (expected) index?
- How to optimize SQL?
- How does explain parse SQL?
- The order by the principle of
(4) JVM
- Runtime data area (memory model)
- Garbage collection mechanism
- Garbage collection algorithm
- Minor and Full GC trigger conditions
- Stop the world in GC
- Characteristics and differences of each garbage collector
- Parental delegation model
- JDBC and parent-delegate model relationships
(5) Java basic part
- HashMap is different from ConcurrentHashMap
- ConcurrentHashMap data structure
- How is the loop of a high-concurrency HashMap generated?
- Volatile role
- How Atomic classes are guaranteed atomicity (CAS operations)
- The difference between synchronized and Lock
- Why use thread pools?
- Parameter to the core thread pool ThreadPoolExecutor
- The workflow of ThreadPoolExecutor
- How do I control the priority of thread pool threads
- How do threads communicate with each other
- Boolean takes several bytes
- What are the new features in JDK1.8 / JDK1.7?
- Exception and Error
(6) Spring
- Spring IOC/AOP implementation
- Dynamic proxy implementation
- How Spring resolves loop dependencies (Level 3 caching)
- Spring’s post-processor
- How is Spring’s @Transactional implemented?
- Spring’s transaction propagation level
- The connection and difference between BeanFactory and ApplicationContext
(7) Other parts
- How to implement current limiting in high concurrency system?
- Design of high concurrency SEC kill system
- How to design load balancing?
Share2: Suning development three years, how do I accumulate experience?
(1) Be good at using fragmented time to learn and improve yourself
There is no other shortcut from junior programmer to senior developer, and from beginning to end I believed that progress came through learning, and learning came over time. Now the Internet industry is basically 996 trend, programmer overtime is more obvious, so using fragmented time to learn, is the most appropriate way to improve themselves.
Calculate my personal study time account first (can refer to, can learn from) :
- About 30 minutes after waking up each morning (toilet, breakfast, commute, etc.)
- Every day when I go to work, I take advantage of others’ paddling time to search some technical information and browse technical blogs for about 30 minutes.
- Evening commute and dinner (at this stage, I usually take a rest and entertainment to adjust my status, such as checking weibo and wechat moments)
- When I get home in the evening, NO matter how tired I am, I will spend 1-2 hours studying, reading and watching videos.
* This works out to an average of 2-3 hours a day and at least 10 hours 5 days a week, not including weekends.
(2) To solve bugs and accumulate experience (to improve my optimization ability)
There is a saying on the forums that most programmers gain experience through bugs, and every BUG you solve is your experience.
In fact, the idea is not to emphasize the importance of bugs, but to suggest that programmers can improve their optimization by fixing bugs, but this “fixing” is critical.
How to “change”?
- In the process of development, I always encounter big and small problems. When encountering problems, I first consider to solve them with my own personal ability. I will look at the relevant source code, or Google the relevant information or technical blogs. If the problem is too big to be solved, I will go to the big man for advice instead of entangling, wasting time and delaying the progress of my project. Consult the big man also have exquisite, not let him help you solve the problem directly, but in is the suggestion or train of thought on the basis of their own thinking.
- Another meaning is that we need to take the initiative to improve their optimization ability. In the process of writing code, I will actively introduce object-oriented thinking and design patterns; Performance optimization (how to make SQL statements faster, how to make virtual machine memory performance better) is considered; On the basis of the “standalone” program ask yourself, how to build a cluster? How can you leverage existing cluster-oriented components? (For example, Eureka can be used to build a service governance cluster, and Ribbon can be used for load balancing in the cluster)
- Finally, I will learn more about Redis, message middleware, JVM tuning, MySQL optimization and Spring Cloud.
(3) Participate in open source projects
In fact, in many interview tips and sharing, we can get a message: candidates who have worked on open source projects tend to be more sought-after and more likely to get an offer.
So why are programmers who have worked on open source projects more in demand?
- Large open source projects are almost always built by large teams and are very complex, so you can infer that your personal skills and qualities are up to scratch;
- Developing open source projects shows that my comprehensive ability has been greatly improved, including “written communication ability”, “know how to choose and negotiate things to be dealt with”, “perfect Git process /GitLab process”, “understand language grammar” and so on;
- Others: Building an online reputation, maintaining personal motivation, etc.
(4) Improve your soft power and make yourself more professional
As FAR as I’m concerned, junior programmers are more like students, while senior programmers need to be able to “be on their own”. This transition takes time and is one of the things I’ve been working on for the past two years.
Improve your soft power and become a more professional programmer:
- To learn to actively communicate;
- Improve their ability to solve problems (bug), accumulate experience in solving problems (bug);
- Ability to coordinate (wrangling) : work actively to coordinate departments;
- Learn to work together to accomplish a task or goal.
Share3:5 years of experience how to move to Ali?
Step1: Know yourself and know your opponent (understand job responsibilities and plan career growth path)
① Job responsibilities
When applying for a job, we tend to pay more attention to the resume than to the key words “job responsibilities”, which can actually affect the outcome of our interview.
As the saying goes, “Know yourself and know your enemy, you can win a hundred battles without danger of defeat”. The job responsibilities are clearly marked what should be done, how to do it, and what standards to do. For programmers, the degree of technical mastery and subsequent development content should be clearly understood.
Take random companies for example, let alone BAT first-line factories
② Growth path
After my first job, I thought very hard about where I wanted to go in the future, and in fact the sooner a programmer’s growth path (promotion path) is determined, the better. The direction of programmers is roughly divided into technical positions and management positions, and these two directions value the ability or has a very big essential difference.
The growth path is as follows:
- Management position: beginner → Technical manager → Technical Director → Vice president → President
- Technical post: beginner → senior engineer → technical expert → domain expert → domain authority
Step2: set goals (set clear, measurable, achievable, time-bound goals)
In the workplace, you must set your own goals, so that you will inevitably be “salted fish”. If you want to be promoted quickly, you must start from the goals, which should meet the SMART principle:
- Be Specific
- Measurable
- Attainable (Attainable)
- Relevant
- Time-based with a definite deadline
In simple terms, my operation is to split their goals periodically, such as 1-3 years I need to reach a stage, 3 to 5 years to achieve what stage, and then continue to split in this stage, set up a a small target, then constitute a big target, general objective, that would be much easier to achieve.
Step3: Be good at thinking (cultivate reverse thinking and optimize thinking)
Don’t want to mechanical code code, fast promotion of the way to first change their thinking, to slowly adjust, good at thinking about some problems, cultivate reverse thinking and optimization thinking.
The so-called reverse thinking, is to ask yourself why? Such as:
- Why do you need this data?
- Why do these things?
- Why summarize?
- Why planning?
- Why do code reviews?
Optimization thinking is to do things better. Even trivial things, there is room for optimization, including efficiency and effect. Everything has room for optimization, but the lack of eyes is to find.
Share4: How to improve the interview pass rate of Ali Social recruitment?
(1) Prepare your resume
The interview will be based on your resume to ask questions, especially for developers, after seeing your project experience, more or less will ask questions about the project, and even first-tier Internet companies will ask questions about the project, so preparing your resume is particularly important.
When preparing your resume, be truthful. Faking your resume is a major no-no. Secondly, it is necessary to distinguish the difference between “understanding, familiarity and mastery”. The degree of mastering the technology stack is closely related to the difficulty of the interview questions.
Of course, in order to help you successfully through the resume, I also prepared some template package, including my own resume is also in it, welcome your reference:
(2) try to find internal push
School recruitment is easy, social recruitment is difficult. This is a common phenomenon of the first line of the Internet, for the requirements of college graduates is relatively loose, but for people who have a certain number of years of work, the technical requirements are relatively high, so a lot of midway want to enter the first line of big factory people said that the recruitment is too difficult, resume can not pass.
In fact, there are some “shortcuts” to go, you can find some internal push opportunities, relative to direct recruitment, the odds are greatly improved.
(3) To master a certain breadth and depth of technology
Since it is a technical post, so the enterprise has its own corresponding requirements for the breadth and depth of technical mastery, education is not so important in front of technology, so efforts to improve their technical level is the primary goal of programmers.
So, how far should the technology go? In particular, the technical route is sorted out as follows:
How well am I mastering some of the most popular technology frameworks? In fact, I have a habit of recording learning experience and taking notes, so I have my own summary and experience on some technologies.
- Java Core Growth Notes:
- SpringBoot Core Technology Notes:
- SpringMVC Development Core Notes:
- Spring source code deep parsing:
- Redis learning summary
(4) What department is it? What do you like to ask in an interview?
Before the interview, know what department you are interviewing with and do your homework. For example, the projects of business divisions such as Alipay and Ant Financial are mostly related to finance, while taobao and Pinduoduo are e-commerce. These differences will also affect the focus of the interview.
As for what the interviewer likes to ask, it is necessary to rely on the usual brush questions to accumulate, brush questions, to do one by one, the interview is still of great help.
A maxim written at the end of the text
Read ten thousand books, travel ten thousand miles. As a programmer, all say career to 35 years old is over, in fact, don’t need to believe this kind of age anxiety, 35 years old programmers also have a lot, don’t want to be eliminated by the market, first of all your value, you have no value, no matter what occupation is eliminated by the society.
Study, will never live up to you, by learning, will always be your most precious wealth.