Preface
Linux C/C++ The learning route from zero basis to great God , My real learning route , Dry a lot , Recommended collection , Read carefully .
during school days , What I've been walking is Linux C/C++ Learning route , After summer internship 、 Autumn move decisive battle 、 Most of the positions invested during the school recruitment period are Linux C/C++ Backstage direction , In this direction , With my own understanding .
From the contact C++ Now I'm officially working , There are about 2 More than a year , For the learning route in this direction 、 As well as the learning programming method, groped out some , Look at the end of this article , Hope for the walking Linux C/C++ Students on the road can help .
【 Article Welfare 】 Xiaobian recommends his own linuxC/C++ Language communication group :832218493! I have sorted out some learning books that I think are better 、 Video data is shared in group files , If necessary, you can add it by yourself !~
One 、 The school recruit Linux C/C++ offer situation
I studied in Shuangfei University 、 Non undergraduate students , Professional is partial to hardware ( There is only one course in school C Language is related to programming , The rest of the course has nothing to do with programming ), I didn't win any big awards in school .
Computer foundation is zero , My sophomore came into contact with C Language , I studied in my sophomore year C Language and data structure , Junior in the school laboratory began to learn computer basics and learning C++ Direction , Self taught programming all the way , Always believe in yourself , Also got the big factory offer.
The school recruit offer situation :
- tencent Background development engineer ( Internship to regular )
- Baidu Hand hundred feeds flow , Software Development Engineer
- Meituan The background and development (C++ Direction interview )
- Homework help Background development engineer
- Good future Background development engineer
- thunderbolt Background development engineer
- Shanda game C++ Development Engineer
...
2018 Tencent summer internship ,2019 The beginning of the year internship Baidu , The school has taken more than ten Linux C/C++ The direction of the offer, The final choice is also metaphysical , I went to the company I wanted to go to , Do what you like , Now I'm going further and further on the road of programming .
Two 、Linux C/C++ Some thoughts on the direction
The choice of direction , A lot of people have chosen Java perhaps Python Direction ,Java perhaps Python There are a lot of people who really learn the direction , There is a lot of demand for jobs , Entry can be compared to Linux C/C++ The direction is easier , But learn more , Each has its own difficulty , We've decided the direction first , Further study .
Linux C/C++ Direction , People who are really in control in China , In fact, there are very few , The number of students in this direction is relatively small , The first choice for beginners is C Language or Python,C、C++ In programming charts, it's also enduring , rank the top , If you like , have interest in , It's OK to go in this direction .
Linux C/C++ Direction , Many big companies in China have recruited jobs in this direction ,BAT There are , Especially Tencent , The underlying architecture is C++ Written , Baidu core search many modules are also C++ Written , Alibaba cloud is also recruiting C++ Direction Engineer , In this direction , I've learned a lot , There's no need to worry about finding a job , General , In fact, it is more difficult to find .
Linux C/C++ Is more efficient than Java、Python Faster , More to the bottom , Can operate memory directly , For programming thinking 、 The improvement of logical ability is helpful ; In fact, learning this direction , It's a little boring , Unlike Python Reptiles 、Java、 The front end can make something interesting , Small programs develop some products , Can be quickly used in actual combat , Get the fun of programming , Further stimulate yourself to learn .
C++ Direction there's not so much fun to do , For a long time , Keep learning with your own interest .
Come all the way , It's really painful , I've always wanted to give up this direction in school , I wanted to learn Java It might be better ( Learn from your side Java There are still a lot of people ), Whenever you're about to give up , I think I've been studying for so long , Stick to it again , It's all the way here ; I think I'm really lucky , occasionally , You don't have to have a head iron C++ Direction , It depends on the whole market , For those routes , Choose the right direction , In the deep !
about Java still C++ The choice of direction , No direction is sure to find a job , There is no certain direction of high wages , The Internet , Especially when it comes to technology , It all depends on your own technical ability .
Choose to go C++ The direction of the , Be sure to go Linux C/C++, Network programming , Learn to Linux crucial !
Big factories like to investigate the basic knowledge of computer , How well do you know the basics , To a large extent, it will determine whether you can enter a large factory , We must pay attention to the study of basic knowledge ; Prepare for autumn : Basics + Algorithm + project , Add your own direction (C++、Java、Python、 Front end, etc ), Every part of it has to be ready , In order to get the largest factory offer, Consciousness is important , With consciousness , Let's look at the specific learning route .
3、 ... and 、 Sort out the basic knowledge of computer
Fundamentals of computer : data structure + Algorithm 、 operating system + computer network 、 database + Linux、C Language
Tools for work :Linux + Git + Sql
No matter what direction you're learning , None of these foundations can be ignored , If you have time , We must be solid , With a solid foundation , You can go further and faster in this business !
In terms of algorithm requirements ,C++ The direction of the algorithm is obviously higher , The basic knowledge of algorithm must be solid !
Four 、C++ Direction of in-depth learning route
C++ Basics :C++ It's an object-oriented language , Be sure to understand the idea of object orientation , The first C++ The basic knowledge points should be firmly established , Just transformed from process oriented , Be sure to adapt to object-oriented writing .
When learning object-oriented , We should also consider how to implement object-oriented with process ( In fact, there is a member in the structure that is a function pointer ), about C++ Basic knowledge of , I'll list it briefly as follows :
- const Usage of
- The use of quotation
- define usage
- Constructors
- Destructor
- Copy structure
- new、delete and malloc、free The difference between
- Access qualifier public、private、protected
- Deep copy and light copy
- Friend function
- static
- Inline function
- Inherit 、 Virtual inheritance
- The question of diamond inheritance
- Covering problem with the same name
- Virtual function table
- Virtual pointer
- Virtual functions 、 Pure virtual function
- Interface
- polymorphic
- rewrite
- heavy load
- function overloading
- Operator overloading
- Stream class libraries and files
C++ Advanced : Function templates 、 Class template ,C++ Exception handling in , Understanding of the underlying layers of inheritance and polymorphism , about virtual Understanding at the bottom, etc .
about C++ in boost How to master and understand the eight intelligent pointers of the library , Its core is to understand and analyze the corresponding source code , <scoped_ptr/shared_ptr/weak_ptr> These three are the core intelligent pointers , To understand the essence of smart pointers is , Memory application and release are all handed over to object management , To avoid human negligence , Causing memory leaks .
STL Source code : about STL Container analysis in , Common containers are list、vector、stack、queue、map etc. , Investigate the principle of automatic expansion 、map The underlying implementation of (RBtree), The source code must be parsed manually at least once .
For iterators 、 Space configurator understanding , such as : Primary space configurator 、 What are the applications of the secondary space configurator ? What is the essence of the primary and secondary spatial configurator , How to use memory pool to manage ? What are the problems , How to realize the source code and so on , All these problems need to be considered .
Linux Network programming :
1、Linux Process environment : Zombie process 、 Orphan process 、 Daemon 、 Process group 、 conversation 、 Foreground process group 、 Background process group
2、Linux Seven communication modes of process :signal、file、pipe、shm、sem、msg、socket
3、Linux Threads : The mutex 、 Locking mechanism 、 Condition variables, 、 Semaphore 、 Read-write lock
4、Linux Under the concurrent model : Multi process 、 Multithreading 、 Thread pool
5、Linux Next I/O Reuse :select、poll、epoll High concurrency
6、Linux Network programming
7、 Static and dynamic libraries !
5、 ... and 、 summary
Last , If you find learning materials difficult to find , You can add small made up C Language /C++ Communication group :832218493! Learning materials have been shared in the group , Looking forward to your joining ~
image
Accumulate over a long period , There's always a way !!!