Java Architects interview questions, how to become architectsOften interview some candidates, sorted out my interview using the topic, LU continued to organize a lot of problems, so each time to draw a part to ask. The answer will be gradually released in later articles.
Basic Topics
State of Java Threads
The difference between process and thread, how processes communicate, how threads communicate between
What the HASHMAP data structure is. How it is achieved. The difference between the Hashtable,concurrenthashmap and the
The difference between cookies and session
What's the use of indexing. How to build an index.
How ArrayList is achieved, the difference between ArrayList and LinkedList. ArrayList how to achieve expansion.
Equals method implementation
Object-oriented
Thread state, what's the difference between blocked and waiting?
How the JVM loads byte-code files
JVM GC,GC algorithm.
What happens when the full GC appears, and what happens to the Yong GC.
JVM Memory model
Java Runtime Data area
The realization principle of the transaction
Technical Depth
Have you seen the JDK source code, see the class implementation principle is what.
HTTP protocol
TCP protocol
Consistent hash algorithm
How the JVM loads byte-code files
How the ClassLoader unloads byte codes
The difference between IO and NIO, the advantages of NIO
The implementation principle of Java thread pool, the function of KeepAliveTime and other parameters.
Implementation principle of HTTP connection pool
Realization principle of database connection pool
The realization principle of database
Technical Framework
See what source framework source code
Why use Redis,redis have the advantages and disadvantages. Redis how to achieve expansion.
Netty is how to use the thread pool, why do you use
Why use Spring,spring's pros and cons
Spring's IOC container initialization process
Spring's IOC container implementation principle, why beans can be found through byname and Bytype
Spring AOP Implementation Principles
How the message middleware is implemented, and what are the technical difficulties
System Architecture
How to build a highly available system
Which design patterns can increase the scalability of the system
Introduces design patterns, such as template mode, command mode, policy mode, adapter mode, bridging mode, decoration mode, observer mode, state mode, visitor mode.
Abstract ability, how to improve the efficiency of research and development.
What is high cohesion low coupling, please give examples of how to implement
What is the situation with the interface, what situation with the message
If AB two systems depend on each other, how to unbind
How to write a design document, what is the directory
What scenario should split the system and what scenario should merge the system
The difference between system and module, which is used in different scenarios
Distributed Systems
Distributed transactions, two-phase commit.
How to implement distributed locks
How to implement distributed session
How to guarantee the consistency of messages
Load Balancing
Forward proxy (client proxy) and reverse proxy (server-side proxy)
Implementation principle of CDN
How to improve the QPS and throughput of the system
Practical Ability
Have dealt with the online problem. Memory leaks, CPU utilization elevation, and how to deal with the application without response.
Any technical problems encountered in the development. How to solve the
If you have a billions of whitelist, you need to have a high concurrent query every day, and you need to update it at night and how to design this feature.
How Sina Weibo is implemented to push Twitter to subscribers
How Google returns the search results to the user in a second.
12306 How to achieve the booking system of the website, how to ensure that no ticket will not be oversold.
How to implement a second kill system to ensure that only a few users can buy a product.
Soft Ability
How to learn a new technology, such as how to learn Java, focus on what to learn
What new technologies are there to focus on
How to deal with a lot of work tasks when they are very miscellaneous
How the project delays processing
How to deal with the different design ideas of colleagues
How to ensure the development quality
What is career planning. Short term, what is the long-term goal
What is the team planning?
Can introduce the next from the work to the present own growth in there
The level of the Java architect:
Now that the Java architect, first of all, if you're a senior Java Siege Corpse, use a variety of frameworks and know how they're implemented. JVM virtual machine principle, tuning, understand that the JVM allows you to write better code; Pool technology, what object pool, connection pool, thread pool ...:; Java reflection Technology, but there are serious performance problems, alternative Java bytecode technology; NIO, there's nothing to say, It is noteworthy that the "Direct memory" features, the use of the scene; Java multithreading synchronous asynchronous; Java various collection Object Realization principle, understand these can let you choose the appropriate data structure in solving the problem, solve the problem efficiently, such as hashmap principle of realization, A lot of people over five years of experience don't know, and there are performance problems when it comes to expansion. Without figuring out these principles, you can't write efficient code, and you'll think you're doing the right thing. In short, the more basic things more important, many people think they will use them to write code, in fact, just know how to invoke the API, it is still far from the use.
Proficient in the use of various data structures and algorithms, array, hash, list, sort tree ..., a sentence is either time to change space or space to change time, here to expand can say a lot of, need to have some application experience, to solve a variety of performance or business problems;
Skilled use of Linux operating system, the necessary, nothing to say.
Familiar with the TCP protocol, create a three-time handshake and disconnect four times the entire process of handshake, do not understand, can not be optimized for high concurrent network applications; Familiar with HTTP protocols, especially HTTP headers, I've found that many more than five years of work are not clear about the lifecycle of sessions and cookies and the associations between them.
System cluster, load balancing, reverse proxy, static and dynamic separation, Web site statics.
Distributed Storage Systems Nfs,fastdfs,tfs,hadoop understand their pros and cons and apply scenarios.
Distributed caching technology Memcached,redis, improve the performance of the system must, in a word, put the contents of the hard disk into the memory to speed up, by the way an algorithm consistent hash.
Tools Nginx essential Skills super easy to use, high-performance, basically will not hang off the server, a lot of functions to solve various problems.
Database design capabilities, MySQL essential, the most basic database tools, free to use, the basic parameters of its optimization, slow query log analysis, master-slave replication configuration, at least to become half MySQL DBA. Other NoSQL databases such as MongoDB.
There is also the queue middleware. such as message push, you can first write the message to the database, push put on the queue server, by the push server to queue to obtain processing, so that the message can be placed in the database and queue directly to the user feedback, push process by the push server and queue Server completion, the benefits of asynchronous processing, ease the server pressure, the solution of the Lotus root system.
The above is a commonly used technology, there are a lot of their own slowly to explore it; because there are many things to know, so to become a qualified architect, you must have a strong self-learning ability, no one will hand-hand to teach you everything.
Want to become an architect is not to understand a lot of technology on it, these are the basis for the problem, is the tool, do not know how to solve these solutions. This is necessary to become an architect.
Architects also need to address business features, system performance requirements to solve the problem of the lowest cost of the design is qualified, someone else a hundreds of users of the system, a small amount of traffic, data, you give people on the cluster, distributed storage, high-end server, in order to structure and architecture, this is the most nonsense, The architect's role is to meet business requirements first, the second lowest hardware network cost and technical maintenance costs.
The architect also needs to be based on the business development phase anticipate the solution to the next phase of the system architecture, and take into account the upgrade of the schema when designing the current architecture, and make it easy to upgrade; otherwise, if the system bottleneck comes up, there is a problem, or the existing schema cannot be expanded to throw the redo directly, or expand the problem of a lot of trouble, which will cause losses to the enterprise.
Programmers should need to have self-knowledge, will be, will not be, the rapid development of the Internet era, can only keep up with the progress of the times, will not be eliminated.