What is a programmer?
Code farmers, program ape, program yuan
Use programs to achieve value
Program = data + algorithm
Software = program + software engineering
Programmer = engineer?
Programmer pyramid
Programmer knowledge structure
Interview makes rocket, work makes mosquito
What is your lower limit and what is your upper limit
The lower things determine the upper limit
Learning desire
Eliminate 1 year of work experience repeat N years
If you encounter such a problem, how will you solve it, compared with the solution in the data?
Why would someone else come up with this solution?
Is it your lack of experience or lack of skill points that leads to not coming up with a good solution?
What is the basic idea of solving this kind of problem?
The ability to learn
Not knowing more, but learning faster
Know what it is, but also know why: technology prioritizes depth
Analogue reality: A simulation of the real world
Become more receptive to information: build your own knowledge; Read and take notes to incorporate knowledge
Deep thinking: Read a book
Hands-on, frequent practice: project-driven learning; Active thinking
Self-summary: improve the knowledge system; Notes, blogs, sharing
Continuous learning: Escape from your comfort zone; It is never too late to learn
How to learn new skills
How to read source code
Read the architecture documentation for the technology to understand its overall architecture and composition
Classify source files into modules or hierarchies based on the overall architecture.
Choose the most independent (least dependent) module code from modules you have never read before.
Read the functional documentation for this module.
Read the source code for this module: run the program, breakpoint debugging.
Organize the call diagram as you read.
Go to step 3.
Consult official documents or classic books
Computer thinking
Von Neumann system: program storage, sequential execution.
Binary storage: Solve problems with bits
Bit operation: The efficiency of bit operation
Logical branches: conditional judgment, loop, iteration, recursion
Personal planning
Long-term planning: career planning; vision
Short-term planning: specific skills, promotion, learning planning; Priority sorting
Basic subjects
Physics: Circuit principles; Quantum computer
Mathematics: Engineering optimization; Linear algebra; Differential and integral calculus
English!!!!! : Reading English literature; Computer terms
Computer composition principle
The hardware composition and operating principle of a computer
Von Neumann system, Moore’s Law, Amanda’s Law
Machine representation of data: source code, complement, inverse, floating point/fixed point
Instruction system: complex instruction set, simple instruction set
Storage: classification, cache
CPU: pipeline, pseudo-sharing, cache
IO devices: IO bus, DMA, interrupt
Computer operating system
Shielding the middle layer of computer hardware
Job scheduling: scheduling policies and priorities
Process management: process and thread, interprocess communication
Storage management: memory, virtual memory, file system, page, page cache
I/O management: Read and write operations on I/O devices
Linux Operating system
Computer network
Interconnection between individual computers
TCP/IP stack: Layer 4 / layer 7
TCP Connection Status
Differences between TCP and UDP
HTTP and RESTful specifications
Network security
The Internet today: IPv6, Internet of Things, 5G
Compilation principle
Converting the code into machine-understandable binaries helps implement DSLS
Lexical analysis, grammatical analysis
Type checking
Runtime environment, intermediate code
Code generation, code optimization
Data structures and algorithms
Program = data + algorithm
No matter where you are. Technical improvement is all on your own. This is the Internet age, even if you are in the mountains, you are still in sync with the world.