I’m sure you’ve experienced some of these:
I’ve been working for two or three years, and I’ve been working overtime to finish every project, but the salary increase is not good enough.
I heard that jin SAN, an old colleague who resigned after the New Year, just won the high salary offer and his annual salary went straight to 500,000 yuan.
Because the current company can not access to new technology, the market competitiveness of their own anxiety, the future career path?
You finally understand that there are few job opportunities and it’s hard to get a big salary increase. The annual salary of a Java engineer is determined by skills, so it’s time to improve your skills and plan your future career path in advance.
As a Java engineer, you are already very busy at work. How can you move up the ladder and quickly raise your salary to 450,000 or even 1 million?
Share some of the experience of those who have come, for your reference.
To obtain the data and related brain maps: pay attention to the public account at the end of the article
1. Data structure and algorithm basis
- · Describe several common sorting algorithms and their complexity.
- · Write a bubble sort algorithm in Java
- · Describe the chain storage structure.
- · How to traverse a binary tree?
- · Invert a LinkedList.
- · Write a recursive traversal of all files under the directory in Java.
Second, Java foundation
- · What is the difference between interface and abstract class?
- · What are the types of exceptions in Java? How to use them separately?
- · What are the commonly used collection classes? For example, how do I sort a List?
- · What are the internal implementations of ArrayList and LinkedList? What are their differences and strengths and weaknesses?
- · What about memory overflow? Can you give me an example?
- · what is the difference between equals and equals?
- · What does the hashCode method do?
- · What is NIO? What scenarios are applicable?
- · Implementation principle of HashMap, how to ensure thread safety of HashMap?
- · JVM memory structure, why GC?
- · NIO model, select/epoll difference, principle of multiplexing
- · How many bytes is a character in Java? Extension asks how many bytes are int, long, double
- · What are the ways to create an instance of a class?
- · Final /finally/ Finalize?
- · The difference between Session and Cookie?
- String/StringBuffer/StringBuilder difference, expanding to ask their implementation?
- · Life cycle of servlets?
- · How to allocate a contiguous 1GB of memory using Java? What should I pay attention to?
- · Java has its own memory reclamation mechanism, but why is there a memory leak problem?
- · What is Java serialization and how is it implemented? (Write an example)?
- · String s = new String(” ABC “); How many String objects are created?
Third, the JVM
- · Basic structure of JVM heap.
- · What are the garbage algorithms of JVM? The basic process of CMS garbage collection?
- · What are the common startup parameters of the JVM that can be adjusted?
- · How do I check the MEMORY usage of the JVM?
- · Will the Java program run out of memory and leak the memory? Just a few examples.
- · What are your common JVM configuration and tuning parameters? What do they do?
- · Memory structure of JVM?
- · Common GC policies, when will YGC be triggered and when will FGC be triggered?
Four, multithreading/concurrency
- · How to create a thread? How to keep thread safe?
- · How to implement a thread-safe data structure
- · How to avoid deadlocks
- · What does the Volatile keyword do?
- · What should be noted when using HashMap in a multi-threaded environment? Why is that?
- · Is run or start used to start a thread in a Java program?
- · What is a daemon thread? What’s the use?
- · What is a deadlock? How to avoid
- · What is the difference between thread and process?
- · How is Threadlocal implemented in Java?
- · How does ConcurrentHashMap work?
- · The difference between sleep and wait
- · Differences between Notify and notifyAll
- · Use of the volatile keyword
- · Function and implementation of ThreadLocal
- · How do two threads execute sequentially
- · What does context switch mean
- · Can I kill a thread at runtime?
- · What are conditional locks, read-write locks, spin locks, reentrant locks?
- · How does ThreadPoolExecutor work?
5. Linux use and troubleshooting
- · Create a file using two commands?
- · The difference between hard links and soft links?
- · What are the common Linux commands?
- · How to look at the resource consumption of a Java thread?
- · What are the possibilities of excessive Load?
- · What is the /etc/hosts file used for?
- · How can I quickly replace all “ABC” with “xyz” in a text?
- · How to search for error logs in log files?
- · If disk space is insufficient, how to quickly find the file that occupies the most space?
- · Java server troubleshooting (OOM, high CPU, high Load, class conflict)
- · Java common troubleshooting tools and usage (TOP, IOstat, VMSTAT, SAR, tcpdump, JVisualVM, JMap, JConsole)
- · How to analyze Thread dump files (Runnable, lock, code stack, OS Thread ID correlation)
- · How to view thread information of Java application?
Six, frame use
- · Describe the three states of Hibernate?
- · Lifecycle of beans in Spring.
- · SpringMVC or Struts processes the request.
- · What problems does Spring AOP solve? How do you do that?
- · What about the propagation properties of Spring transactions? What does it affect?
- · What is the difference between BeanFactory and FactoryBean in Spring?
- · What is the principle of IOC in the Spring framework?
- · What are the methods of Spring dependency injection
- · Struts workflow
- · How to implement a facet with Spring?
- · How does Spring implement database transactions?
- · Hibernate’s use of primary and secondary caches, lazy-load understanding;
- · How does Mybatis implement batch submission?
7. Database related
- · Features of MySQL InnoDB and Mysaim?
- · The difference between optimistic lock and pessimistic lock?
- · What is the database isolation level? What does it do?
- · Basic principle of MySQL master/slave synchronization
- · Select * from table t where size > 10 group by size order by size
- · How to optimize database performance (index, database table, batch operation, paging algorithm, SSD upgrade, service optimization, master-slave deployment)
- · When SQL does not use indexes (not including, not equal to, functions)
- · What fields are generally indexed on (the fields with the most filtered data)
- · How do I find all rows in a table that do not contain “XYZ” in the name field?
- · MySQL, B+ index implementation, row lock implementation, SQL optimization
- · Redis, RDB and AOF, how to make high availability, clustering
- · How to solve the problem of high concurrent inventory reduction
- · Index implementation mechanism in mysql storage engine;
- · Several granularity of database transactions;
- · Row lock, table lock; Optimistic lock, pessimistic lock
Network protocol and network programming
- · TCP connection establishment process.
- · Process of TCP disconnection.
- · What is the logic behind the 302 redirect in the browser?
- · Interaction flow of HTTP protocol. The difference between HTTP and HTTPS, the interaction flow of SSL?
- · What is the relationship between Rest and Http? Rest is said to be lightweight. What do you think of the Rest style?
- · What is the use of TCP’s sliding window protocol? Talk about the principles.
- · What are the methods of HTTP protocol?
- · What is the difference between switches and routers?
- · Basic process of Socket interaction?
- · Protocol (packet structure, breakpoint continuation, multi-threaded download, what is long connection)
- · TCP protocol (connection building process, slow start, sliding window, seven-layer model)
- · WebService protocol (WSDL/SOAP format, different from REST)
- · NIO benefits, Netty threading model, what is zero copy
9. Redis and other cache systems/middleware /NoSQL/ consistent Hash, etc
- · List a common Redis client concurrency model.
- · How to implement fuzzy query in HBase?
- · List a common message-oriented middleware, and how to achieve the message order preservation?
- · How to implement a Hashtable? How does your design take into account Hash conflicts? How to optimize?
- · Distributed cache, consistent hash
- · LRU algorithm, slab allocation, how to reduce memory fragmentation
- · How to solve the hot spot problem of cache single machine
- · What is a Bloom filter and how does it work? What does False positive mean?
- · Differences between Memcache and Redis
- · What functions does ZooKeeper have and how does the election algorithm work
- · Map/Reduce process. How to use Map/Reduce to realize joint statistics of two data sources
Design patterns and refactoring
- · Can you give examples of some common design patterns
- · What principles do you follow when designing a factory bag?
- · Can you name an open source project/library that uses the Visitor/Decorator pattern?
- · What are the most common design patterns you use when coding? In what context?
- · How to implement a singleton?
- · Proxy mode (dynamic proxy)
- · Singleton mode (slacker mode, villain mode, how to solve concurrency initialization, use of volatile and lock)
- · What design patterns have impressed you in JDK source code?
Eleven: micro services
1. What are microservices?
2. How do microservices communicate independently
3. What are the differences between springCloud and Dubbo?
4. Springboot and SpringCloud, please talk about your understanding of them?
5. What is microservice circuit breaker? What is service degradation?
6. What are the advantages and disadvantages of microservices? Tell me about a pit in your development
7. What do you know about the microservices stack? Please list one or two
8. Both Eureka and ZooKeeper provide the functions of service registration and discovery. What is the difference between them?
I’m sure you’ve experienced some of these:
I’ve been working for two or three years, and I’ve been working overtime to finish every project, but the salary increase is not good enough.
I heard that the old colleague who quit after the New Year just won the high salary offer, and the annual salary went straight to 500,000.
Because the current company can not access to new technology, the market competitiveness of their own anxiety, the future career path?
In this cold winter, you finally understand that there are few job opportunities and it is difficult to get a large increase in salary. The annual salary of Java engineers is determined by skills. It is time to improve skills and plan future career paths in advance.
As a Java engineer, you are already very busy with your work. How to advance and grow quickly?
Share some of the experience of those who have come, for your reference.
Once you become a Java engineer, you are destined for lifelong learning.
Tony has experienced this in his 13-year career as a Java engineer, and the motivation for me to keep learning mainly comes from the following three aspects:
1, constantly increase their value, have more options
If you compare technology to a tree, for every language you learn, you light a fruit on the tree. The more you get, the more fruit the tree has, and the more valuable it is. Once you’ve accumulated enough fruit on your skill tree, you’ll be able to move up the technical ladder and up the career ladder.
The Internet has no comfort zone, standing still is regressive
Computer technology updates rapidly and new technologies emerge endlessly. If you want to be a good Java engineer, you must be ready to learn at any time and persevere, so as to keep up with the rapid development of the Internet.
Learning is the best way to face the competition and overcome the midlife crisis
Java engineer is a well-paid profession, in recent years, with the rapid development of Internet, but also became a hot hot jobs, so that more and more people join in this profession, hammering too easily, want to or left behind, only study hard, become a high pay for the Internet company in the high-end Java engineer, can you not fear the cold winter.
At present, the Cold winter of the Internet has made many Internet people awake. Many large enterprises have downsized and their recruitment demand has contracted, mainly targeting at basic posts and those who boil frogs to death in warm water. There is still a shortage of middle and high-end Java engineers in the market.
Mainstream technology selection for Internet companies
Advanced advanced Java, architect must learn 6 major skills, including: data structure and algorithm, Java advanced features, source code analysis, database, Java framework and necessary tools, system architecture design, hope to really help to want to go from programmers to advanced Java, architect road friends.
1. Distributed architecture
As the volume and importance of services increase, the single architecture mode cannot correspond to large application scenarios, and the system cannot be unusable due to single point of failure. Therefore, the service system must be split vertically or horizontally to form a distributed architecture to eliminate single point of failure and improve the availability of the entire system.
Distributed Session, distributed cache, database, consistency, load balancing, message queue (RabbitMQ, ZeroMQ, Kafka), and so on
image.png
2. Micro services
Depending on the circumstances, the benefits of choosing a microservices architecture will far outweigh the costs.
Enterprises with small scale can consider introducing appropriate micro-service architecture, transforming existing systems or building new micro-service applications, and gradually accumulating experience in micro-service architecture. Instead of implementing micro-service architecture completely, they should consider cost, efficiency and practicality comprehensively.
Tony has a series on microservices in his latest architecture series BAT Architecture Technology Collection, with the address at the end of the article.
Reading these interview questions, 45K monthly salary is no problem?
3. JVM performance optimization
image.png
4. Concurrent programming
Only by deeply understanding the operation principle of the bottom layer and strengthening logical thinking can we write efficient and safe multithreaded concurrent programs.
Including: collection framework (source), tool classes, framework Spring, SpringMVC, Mybatis, Shiro, Netty, server (Tomcat, Nginx), network programming, serialization, JVM, etc.
image.png
image.png
5. Design patterns
Design pattern is the foundation of reusable object-oriented software, learning design model test is the only way for every Java engineer to advance, flexible use of design pattern, can make the code become concise, easy to understand, reuse higher.
Common design patterns are: factory pattern, agent pattern and so on.
Reading these interview questions, 45K monthly salary is no problem?
6. Develop relevant framework tools
The following frameworks and tools are often used by Java programmers. If you want to do a good job, you must first sharpen your tools. Mastering and applying these tools can help us to carry out work more efficiently and with quality, such as debug, efficient de-duplication, code review and so on.
Reading these interview questions, 45K monthly salary is no problem?
7. Building critical infrastructure
Reading these interview questions, 45K monthly salary is no problem?
Workplace or life, each stage has certain obstacles and bottlenecks, which we all have to experience.
If you can identify who you are and where you are, think about it in a targeted way, keep doing the right thing, and put in more effort than others, you will be better than others and have more opportunities. This is often called the Matthew Effect: the harder you work, the luckier you will be.
To obtain the data in this paper and related brain maps: follow the public account below to obtain