After learning C / C + + Grammar, I believe many friends will be confused. What should they learn?
In fact, to sum up, it is nothing more than:
1. Network programming;
2. Operating system;
4. Data structure and basic algorithm;
Mastering these basic knowledge is like our internal skills. If we want to go further in the future, these internal skills must be cultivated. The framework is ever-changing, but the general underlying knowledge is almost unchanged. Understanding this knowledge can help us learn a knowledge faster and understand the operation mechanism of the computer better.
1、 Network programming
Among the programs we use, 99% are inseparable from the network. As a programmer, I think it is necessary to understand the computer network. In university courses, this course is generally offered. In fact, you may have this question: how does one computer send messages to another computer? For example:
1. Two computers are not connected to any line, how can we send messages to him?
2. There are so many computers in the world, how can we find the characteristic computer? Some people say that we can use MAC or IP to make a unique identity, but the doubt comes again. The world is so big and there are so many computers. With this identity, how can we find it? Traverse all computers?
3. Multiple programs send messages to a computer at the same time. How can the computer accurately send these messages to these different programs?
4. What if the message sent is lost?
In a word, a lot of questions, after looking at the computer network, suddenly enlightened.
So here, I strongly suggest that you learn, in the interview, the computer network is also a high-frequency test site, here I summarize someMust learn protocol and interview high frequency test site：
1. HTTP protocol, including: encapsulation format, common response code, differences between different versions, common request methods, what security risks exist, what is stateless protocol, etc.
2. The detailed process of establishing a connection with HTTPS, where symmetric encryption is used, where asymmetric encryption is used, and do you know the encryption algorithm (such as RSA)?
3. TCP protocol: three handshakes, four waves, how to ensure reliable transmission, flow control, congestion control, sliding window and so on.
4. UDP broadcast multicast
I think the above agreements are quite important, especially in the interview.
Recommended booksMethods of computer network system (4th Edition) and detailed explanation of TCP / IP
2、 Operating system
Operating system is also a very important knowledge, in the interview is also asked a lot. For the operating system, there are too many things to learn, such as:
What is a process, what is a thread, their essential difference? Where do we put the data when we run a program? Where is the code? Why do we have to separate piles and stacks? What does context mean when threads switch?
What the hell is a virtual address? Why do threads need so many states? What are optimistic lock and pessimistic lock? How is deadlock caused? What are the strategies to solve deadlock? wait
For the operating system, I summarized some of the core, interview relatively easy to be tested.
1. Communication mode of process
2. Process address space segmentation
3. Memory management, including: virtual memory (key), paging, segmentation, paging system address mapping, memory replacement algorithm (key).
4. Deadlock handling strategies (deadlock prevention, deadlock detection and recovery, deadlock avoidance)
5. Process scheduling algorithm
6. Disk seek algorithm
I think the above is more important. If you haven’t learned it, I believe you can learn a lot after learning it. Knowledge is just one of them.
Recommended booksThe book I have read is “philosophy of operating system”, but the big guys all recommend “in depth understanding of computer operating system (the third edition of the original book)”. I have read the catalog, and I think it’s not bad. I also recommend this one here. However, for the zero basis, I suggest that you read a book specially for Xiaobai: “how does the program run?”.
Hope to help you! We will continue to share it next time~
If you want to better improve your programming ability, enter Baidu Tencent and other large factories to work, learn C / C + + programming knowledge, and become a high paid software development engineer! So you’re lucky~
C language c + + programming learning circle,QQ group 1090842465【Click to enterWeChat official account: C language programming learning base
Share (source code, project video, project notes, basic introductory course)
Welcome to change and learn programming partners, use more information to learn and grow faster than their own thinking Oh!
Programming learning video: