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.