编程知识 cdmana.com

The monthly salary is 50K, which is recommended by programmers. Learning from Linux C / C + + is enough

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 !~
image.png
image.png

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 !!!

版权声明
本文为[Programmer grey]所创,转载请带上原文链接,感谢

Scroll to Top