Hello everyone, my name is Dabin~
My undergraduate degree is not computer science. In my senior year, I started to learn Java by myself and found an offer from Zhongda Factory. I encountered a lot of problems on the way to self-study. Every night, I insisted on going to sleep until one or two o'clock, and finally got an offer of 30w.
I also remind the juniors and juniors to determine their future direction as soon as possible, whether to study for graduate school or work. If you are looking for a job, you should also determine the job position as soon as possible. If you want to change careers, you need to spend more time preparing. Many students only think about what they want to do in the future when they are about to graduate in their senior year, and it is already a bit late at this time. If you miss the school recruitment and go to the social recruitment channel to find a job, the difficulty will increase by a level, and it will be too late to regret it!
Well, let me share with you my self-study experience.
First look at the Java learning roadmap:
There is still a lot of content, and you need to keep persevering!
I would like to share with you a well-organized high-frequency questions PDF 161edfa1cab6dd. The friends who need it can download it by themselves:
Java Basics
The advice for beginners is: more codes! More typing! More typing!
Learning programming is reading books and practicing. You have to do more hands-on, otherwise you will soon forget the knowledge points you have read, and you will encounter many pits and enrich your experience with more practice. You can go to github to find some projects to practice your hands, and consolidate your knowledge by doing projects, and each time you implement a function, you will have a full sense of achievement, and it will also motivate you to keep learning.
Recommended Books:
- 《head first java》
- "JAVA Core Technology Volume"
The books in the head first series are more interesting and easier to understand. "JAVA Core Technology Volume" is relatively moderate in difficulty and comprehensive in content, and some chapters (such as Swing) can be skipped.
basic knowledge of Java mainly includes:
- class and object
- Object-Oriented Features
- abstract classes and interfaces
- Data types, overriding overloading, encapsulation inheritance polymorphism
- Container class Map/List/Set, etc.
- IO operations: InputStream, OutputStream, Reader/Writer, file reading, various stream reading, etc.
- exception handling
- reflection mechanism
- Generics
- The role of the final keyword
- throw and throws
- custom exception
- inner class
- anonymous inner class
IO stream operations:
- File class operations on files
- byte stream write data
- How to read data from byte stream
- Byte stream completes the copying of video files
- code table
- character stream write data
- String read data
- Use of character buffer streams
- standard input and output streams
- object serialization stream
- memory operation flow
- RandomAccessFile
- SequenceInputStream
- compress stream/decompress stream
set basis :
- Collection frame
- Features of ArrayList Collection
- Constructor of ArrayList
- Common operations of ArrayList
- HashMap、HashTable、Hashset
- HashMap source code
- Iterator Iterator
- Map collection traversal
- LinkedHashMap
- ConcurrentHashMap
Java Web
Java Web is a synthesis of a series of technologies, and it is also the technical direction of most Java developers. It is necessary to learn. Check out the video tutorial for this part.
Video recommendation [Shang Silicon Valley]'s full set of JavaWeb tutorials, HTML/CSS/JavaScript and other related front-end can be viewed at double speed.
https://www.bilibili.com/video/BV1Y7411K7zz
The Java web tutorial of [Dark Horse Programmer] is generally good, IDEA version: https://www.bilibili.com/video/BV1qv4y1o79t
HTML&CSS (understand)
- Basic use of HTML
- HTML common tags
- CSS selectors
- What's New in HTML5
- CSS3 new features
JavaScript (understand)
- Embedding in JavaScript
- Basic JavaScript syntax
- ECMA6 new features
- JavaScript flow control
- array, function, object
- JavaScript Object Oriented
- Commonly used built-in objects
- JavaScript event binding/triggering
- JavaScript DOM manipulation and API
- JavaScript BOM object and API
Servlet
- Servlet overview
- Servlet execution process analysis
- Analysis of the Implementation of Servlet
- The class of Servlet tries to explain in detail
- Servlet life cycle
- Analysis of Thread Safety of Servlet
Java EE
- JavaEE Specification
- Static and dynamic resources
- C/S and B/S
- Tomcat overview
- Tomcat download and installation
- Support for each version of Tomcat
- Tomcat startup and startup problem analysis and solution
- Tomcat directory structure
- JavaEE Engineering Overview
tool
The first is Git, the version control tool, that must be mastered. Many students who have just started working may often encounter Git-related problems, such as code conflicts, branch merges, etc., so they still have to learn Git. Recommended Mad God video:
Git zero-based entry to actual combat detailed explanation:
https://www.bilibili.com/video/BV1FE411P7B3
Next up are Maven and Gradle, build tools used to build and manage various projects.
Getting started with maven zero basis:
https://www.bilibili.com/video/BV1TW411g7hP
Git basics
- Git overview and features
- Basic concepts of Git
- Git History Version Control
- Git branch version control
- Git remote repository
- Git remote hosting platform
- Git conflict resolution
Maven Basics
- Maven environment setup
- Maven builds & automated builds
- Local Warehouse & Central Warehouse
- Maven creates Java and Web projects
- pom.xml, dependency management
- Coordinates, dependencies, lifecycle, etc.
- Introduction to pom file dependency transitivity
- Dependency conflict resolution
- Maven project inheritance relationship
- Maven project aggregation relationship
- Building aggregated projects by sub-modules
- Introduction and construction of private server warehouse
- Upload local resources to private server
- Download resources from private server to local
- Install third-party resources to the local repository
- Install third-party resources to private server repositories
Docker Basics
- Docker image command
- Docker container commands
- Docker deploys MySQL, Redis, etc.
- Container save to image
- mirror backup
- Image recovery and migration
- Dockerfile
- Docker Compose common commands
- Docker private repository usage
database
The database is also a must-learn, mainly the Mysql database. Book Recommendations:
- "mysql must know must know"
- "High-performance mysql"
"mysql must know must know" is mainly the basic grammar of Mysql, which is easy to understand. After you have the foundation, look at "High Performance MySQL". This book mainly explains indexes, SQL optimization, advanced features, etc. Many MySQL related interview questions come from the book "High Performance MySQL", which is worth reading.
MySQL Basics:
- CRUD
- Transaction characteristics, isolation level
- Indexing principle, optimization
- b+ tree
- Leftmost matching principle
- storage engine
- MVCC
- Implementation plan
- Sub-library and sub-table
- log, bin log/undo log/redo log
- complex query of data
- use of constraints
- Multi-table relationships (one-to-one, one-to-many, many-to-many)
- Database restore and backup
- Multi-table query operation
- Business introduction
- transaction isolation
- Database user management and authority management
- Use of views
- Use of stored procedures
- Use of triggers
- Storage Engine Principle
- Index efficient query
- lock mechanism
- database cluster
frame
Mainstream frameworks are:
- spring: face-to-face, dependency injection, recommend the book "Spring in Action", and take you step by step to build Spring applications through demo
- springboot: Habit is better than configuration, automatic configuration. At present, many companies use Spring Boot internally. Book recommendation "Spring Boot in action"
- springmvc: a lightweight web framework based on the MVC architectural pattern
- Mybatis: orm framework, recommended book "Mybatis in simple language"
- springcloud: Now interviews are basically asked about microservices, and it is best to know about microservices. Service registration and discovery, load balancing, service degradation, API gateway, etc. Recommended book "spring cloud microservices in practice"
Spring
- Spring overview
- Coupling and Decoupling
- Factory Design Pattern
- IoC overview and role
- The concept of dependency injection
- Dependency Injection in Spring
- Spring annotation-based IoC configuration
- The use of common annotations
- component scanner
- BeanFactoryPostProcessor
- BeanPostProcessor
- InitializingBean
SpringMVC
- Common Components
- @RequestMapping annotation
- Request parameter encapsulation
- Notes on form validation
- ServletAPI related annotation usage
- Detailed explanation of the return value of the controller method
- An introduction to asynchronous interactions and related annotations
- Rest-style URLs
- @PathVariable annotation
- Detailed explanation of cross-domain access and use of @CrossOrigin annotation
- Exception Handling in SpringMVC
- Interceptors in SpringMVC
MyBatis
- global configuration file
- mapping configuration file
- CRUD
- Parameters in depth
- result set encapsulation
- Connection pooling and transactions in depth
- dynamic sql statement
- Multi-table query
- lazy loading strategy
- Add pagination plugin
- log integration
Spring Boot
- Core Features of SpringBoot
- Advantages of SpringBoot
- Analysis of the principle of starting dependence
- Analysis of the principle of automatic configuration
- Customize starter dependencies and implement automatic configuration
- SpringBoot configuration file type
- Attribute mapping method between configuration file and configuration class
- SpringBoot integrates Mybatis
- Custom Starter
- event listener
- initialization process
SpringCloud
- Service registry Eureka introduction
- Eureka server development
- Microservice development and registration to the Eureka service registry
- Eureka Protected Mode
- Client load and server load
- Ribbon implements client load balancing
- Implementation of Feign
- How Feign works
- Avalanche effect and fuses
- Fuses Hystrix use
- Gateway introduction
- Building Gateway Service Based on Gateway
- Access microservices through Gateway
- Spring Cloud Config
- Configuration management using Git storage
- Microservice transformation obtains configuration information from the configuration center
- Introduction and application of service bus Spring Cloud Bus
Dubbo
- Introduction to Dubbo
- Dubbo Architecture
- Dubbo service provider
- Dubbo service consumer
- Dubbo related configuration
- monitoring Center
- Architecture Principles
- How It Works and Service Governance
- Heartbeat and Communication
middleware
Redis
- Advantages of Redis
- Five data types of Redis
- Basic Operation Commands
- Redis persistence (RDB and AOF)
- lua script
- Distributed lock
- pipeline
- Redis Data Deletion Policy
- Redis data elimination strategy
- Cluster master-slave replication
- Cluster Sentinel Mode
RocketMQ
- Building RocketMQ
- RocketMQ-Console
- RocketMQ mode
- message lost
- message repeat
- MQ-based distributed transaction solution description
JVM
JVM is also often asked in interviews. Java developers do not need to perform memory management and garbage collection by themselves. JVM does it for us, but it is still necessary to understand the working principle of JVM, so that when problems such as oom occur, they can have ideas to troubleshoot and solve problems. The book recommends Teacher Zhou's "In-depth Understanding of Java Virtual Machine".
Basic knowledge of jvm:
- JVM memory structure (program counter, virtual machine stack, native method stack, heap, method area, runtime constant pool, direct memory)
- class loading process
- class file structure
- object header
- parental delegation
- memory allocation and reclamation
- Garbage Collection Algorithm
- garbage collector
- Tuning tools (jsp/jstack/jstat/jmap, just understand)
Concurrency
For the related content of concurrent programming, you can see the book "JAVA Concurrent Programming Practice". The main contents are:
- Basic Definition of Thread
- ways to implement threads
- thread running status
- Thread Pool Principle
- Inter-thread communication
- Locks (synchronized, ReentrantLock)
- Concurrency tool class (CountDownLatch/CyclicBarrier/Semaphore)
- Atomic class
- AQS
- Methods of communication between threads
- thread synchronization
- thread deadlock
computer basics
Usually take the time to learn basic computer knowledge, consolidate the foundation.
Data Structures and Algorithms
The recommended book "Data Structure and Algorithm Analysis Java Language Description", describes various data structures and algorithms in Java language, which is easier for Java developers to understand, mainly learn the following content:
- Basic data structures (arrays, linked lists, stacks, queues, etc.)
- Trees (binary trees, avl trees, b-trees, red-black trees, etc.)
- heap structure
- Sorting algorithms (bubble sort, selection sort, insertion sort, quick sort, merge sort, heap sort, etc. and time and space complexity)
- dynamic programming
- backtracking
- how are you
computer network
The "Top-Down Approach to Computer Networks" is recommended:
- network hierarchy
- TCP/IP
- Three handshakes four waves
- Sliding window, congestion control
- HTTP/HTTPS
- the entire process of accessing a link
- DNS
- Network security issues (CSRF, XSS, SQL injection, etc.)
operating system
It's a big head to learn, you can go to station B to find the video, recommend Tsinghua University's open class . Book recommendation "In-depth understanding of computer systems", tome, classic books, it is worth reading several times.
Basics:
- process thread
- inter-process communication
- thread synchronization
- What is deadlock? producing conditions
- Deadlock handling strategy
- Pagination and segmentation difference
- Process scheduling strategy
- what is virtual memory
- page replacement algorithm
- signal
- ...
linux
Recommended book "Brother Bird's Linux Private Kitchen".
The above is the Java learning route. It takes at least half a year to learn the entire route. Persistence is victory!
Finally, I will share with you a github repository, which more than 200 classic computer books , including C language, C++, Java, Python, front-end, database, operating system, computer network, data structure and algorithm, machine learning, programming Life, etc., you can star, and the next time you find a book, you can directly search on it, the warehouse is continuously updated~
github repository: https://github.com/Tyson0314/java-books
If github cannot be accessed, you can access the gitee repository.
gitee repository: https://gitee.com/tysondai/java-books
It is not easy to code words. If you find it helpful, you can !
I'm @Programmer Dabin, I regularly share the core knowledge of Java background, welcome everyone to pay attention~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。