I rejected the offers of SP and SSP from big manufacturers such as BAT, and finally chose Huawei. This is how I learned about C++!

02afd2422a041b3f87da25f8f573038b.png

First of all, the title of this article is not a title party, it is practical and realistic! This article is shared by my classmates in this class. It is a real personal dry goods sharing. I hope it will be helpful to students who are preparing to apply for C++ positions in the future. (Personal experience, for reference only!)

Autumn recruitment summary and learning experience sharing

Personal profile: Shuangfei is a 211 master. During the postgraduate period, there is no internship experience. During the period, the main research direction of the laboratory is computer vision. During the master's degree, the luck is also very good . During this period, the job-hunting intentions were mainly based on "C++" (back-end and server development), and of course, some QT development positions were also delivered.

The offer situation of autumn recruitment

The following picture is the time record of my resume submission for the written test and interview. Not all companies are listed here. Here are some examples. Students who are recruited in the autumn can also make a small record. After all, the resumes submitted during the peak period of the autumn recruitment will also be There are many, and there are interviews and written tests every day, and some specific information may be forgotten.

d3b4dcb8ce28db91e46552fde39888c3.png

Let’s talk about the delivery of resumes first. There are more than 40 large and small companies that have submitted their resumes, and the number of offers received is about 30. Basically, large factories have delivered them, and small and medium-sized factories are more interested in suitable positions. I tried it. Because of my serious procrastination, I basically submitted my resume under the pressure of DDL and multiple pushes from my friends. Fortunately, although I submitted it late, I still got the offer as I wished.

  • The overall offer situation of Qiuzhao is quite satisfactory. "ByteDance" , "Baidu, Pinduoduo" have all obtained "SSP" , "Tencent" and "NetEase" are SP, "Ali" is cabbage, and some other companies There are almost 20 offers. It's a pity that Meituan's pre-approval and formal approval both failed, and the reason was also that he was not sufficiently prepared in some aspects and was not favored by the interviewer.

  • Because I am from Shaanxi, I finally chose to stay in Xi'an and signed with Huawei. Huawei also won the lottery after I rejected many offers. At first, the "salary" offered by the big factory was very attractive. After the interview I have also added a lot of interviewers' WeChat. After I rejected the offer, I also received some pertinent opinions from the interviewer and supervisor. I also hope that I can consider it comprehensively. Although I have been shaken, I also expect Huawei to give an offer. A good result. After Huawei's prize draw, I instantly felt that the treatment of the previous big factories was no longer good. In addition, I was in Xi'an, the atmosphere of life was relatively calm, and the pressure of life was much less, so I didn't need to consider too many other factors. So I signed the contract without hesitation. Maybe this is the beginning and the end. The first resume was delivered to Huawei, and the final contract was also Huawei.

Signing site & signing small gifts

1212defbd1bece079e29392d3574b46b.png 1fd772aeec4ef9269447bc7aaaf1c0de.png

personal learning experience

"Undergraduate period" : The freshman year was wasted for a whole year, and I was addicted to "LOL" and couldn't extricate myself (I still play two games a day, after all, "EDG" won the championship).

"Sophomore" and "Junior" began to counterattack. At that time, they listened to some learning experiences of a particularly excellent senior, and then began to buy books to study. Most of the time, they wrote codes in the dormitory and library. At that time, they also collected books as a hobby. If you have a good book, you will buy it, and keep a lot of it at home and at school.

The picture below is a corner of the desk in the dormitory, and there is also a part of the home. I have read most of the books. I read "C++ Primer" about three times. Because it was too old, I bought a new one as a souvenir.

6a0fdfb59eff3dd49294d7fd46e5a820.png effb93a227e2fe8a0a3e26a614504fbe.png

Undergraduate reading books are mainly "C++, QT, Linux" network programming related. The books I read in my sophomore and junior year are probably "C++ Programming Language", "C++ Primer", "Effective C++", "Effective STL", "More Effective C++", "Deep Exploration of C++ Object Model", "C++ Templates" , "Unix Network Programming", "Linux Multithreaded Server Programming", "C++ Concurrent Programming Practice".

There are also a few books about QT, I can't remember the name of the book, and the other books may be flipped casually, mainly to eat ashes, I also wrote JAVA for more than half a year after the senior examination and graduate study. , and then also learned some Python stuff.

"Master's period" : Most of the time in "Graduate One" is dominated by classes, papers, and laboratory work. I am also very grateful to my sister in my laboratory for my postgraduate career (Department of Mathematics, the graduate student won the National Award, and there are several papers in hand. , is the god of dissertation) gave me a lot of guidance during the postgraduate period, and indeed let me learn a lot of scientific research-related things.

Yanyi seems to have passed by in a daze. At that time, I also witnessed the phenomenon of brothers and sisters looking for jobs gradually tending to involute, and then "I also began to brush the questions in Likou in January 2021." Before brushing the questions, I I have never had any algorithm competition experience or systematic study. To put it bluntly, I am an algorithm novice. Maybe I know a little bit about programming languages ​​and data structures (passed the postgraduate entrance exam), which saves me from learning programming language syntax and data structures. time.

In order to find a job , "Research II" also made up some books that were not read during the undergraduate period, roughly including: "In-depth Understanding of Computer Systems", "Top-Down Methods of Computer Networks", "Linux High-performance Server Programming", "STL Source Code Analysis" ".

Autumn recruitment preparation

Basic knowledge

  • My personal situation is that the computer network is relatively short, so I originally planned to read "The Top-down Method of Computer Network". Later, a friend recommended 小林coding的 《图解计算机网络》it. The author is very attentive. The pictures, text, actual packet capture analysis, and more The analysis of the kernel source code covers all of it, which is more in-depth than the general Bagu. At the same time, it also highlights the key points. It is enough to deal with the autumn recruitment. The style of the layout is also very good, so the students of the autumn recruitment can 《图解计算机网络》review and consolidate themselves.

  • Because the operating system has a little understanding of the Linux kernel, I have listened to 《Linux内核分析》that course in the first class, plus the PPT has an archive, and I also reviewed it before the autumn recruitment. The other is to look at some points that often appear in the face scriptures, and summarize them by myself. The more times I summarize, the more familiar they are. C++ players generally ask more questions about Linux or operating systems. After all, many students may be preparing for interviews mainly for Linux network programming projects, so they can focus on learning Linux-related things. So OS I recommend looking at 《深入理解计算机系统》something related to the Linux kernel.

  • In terms of data structure, I feel that there are too many questions, and many things are easily solved. There is not too much memory, and the focus is on understanding and thinking, so data structure can do more questions and try to analyze a question more. The space-time complexity of the algorithm, and what kind of data structures may be used in a certain problem, and whether it can be optimized in space and time.

  • There is no particularly good recommendation for databases and design patterns for the time being. I also mainly read blogs. This JAVA player knows better.

The basic knowledge of computer should not only have breadth when preparing, but also need a certain depth for some common points to achieve good performance in interviews. For example, everyone will notice the communication method between processes when reading materials. There are probably several types, but if you are asked about the specific implementation of a certain method, it is difficult to answer if you have not seen it before. These questions will also appear from time to time in general interviews, so prepare for autumn The recruited students should also pay attention to the underlying implementation of some things, not just know a fur. Of course, it is not necessary to trace the source to the source code for any problem. This time is far from enough. For the more common problems, you can still spend some time to learn some low-level problems.

Question brushing experience

84484de64b83ac0a7aecb24159e154ef.png 0909c7b2b6703db85fcc2697b8a9dc0e.png
  • In January 2021, I started to brush questions on Likou. At that time, I also added a C++ LeetCode learning and communication QQ group. At the beginning, there were only four small partners. I brushed the questions every day. Discuss some learning-related matters, and share some learning materials and experience. There are about 100 people in the group now. Now there are big bosses, and the group name is also more interesting . ""Future Successful People Exchange Group"  Now the autumn recruitment is also over. Now, the friends in the group also got their favorite offers.

  • From the beginning of writing the questions, I have maintained the progress of three questions per day, and then there are about 100+ questions every month, so from January to November, there are just "1000+" questions, of course. I have also done some questions on other platforms, such as "POJ" and "HDUOJ" , and often do some more representative questions, and when learning a certain algorithm, you may not be able to find a particularly good one in Likou question, and then choose to submit it on other OJs to check if you really learned it.

  • It is worth persevering to brush the questions. If the short-term brushing is to cope with the interview of some companies, you can focus on doing some 剑指offer系列and hot100, or you can look at some high-frequency question banks of the company. Of course, these questions are high-frequency questions. What kind of questions depends entirely on the interviewer, you may have seen it or not, and what kind of situation may happen, so I think that I will continue to brush the questions every day to broaden my knowledge and learn more about the factory.

  • Share and share some experience of brushing questions. If you are new to brushing questions, you can do it according to the classification tags, such as arrays, linked lists, binary trees, graphs, dynamic programming and other tags to practice, so that you can master a certain point. Faster, instead of choosing random question banks, you can selectively practice at 3 简单 4 中等 1 困难the , so that after a period of persistence, you can selectively do some topics that you are weaker and challenging. Topic, improve yourself.

Summary : It’s just right to brush more questions, brush questions on Likou, and find sutras for bullies. Of course, bulls can also brush questions, and Likou also has facial scriptures. When you encounter problems again, you must have ideas and work hard. Code can be written.

Project recommendation

  • Maybe most students see the recommended projects are Web servermainly based on , this project requires the foundation of Linux network programming to win, the reference book is "Linux High-performance Server Programming" (the author is You Shuang), because there may be per capita The phenomenon of Web Server, so I did not use it as one of the projects in my resume. Students who want to learn this project can read the book, the source code is also available on github, and there is even an improved and better version.

  • I personally recommend a project that combines C++ and OpenGL to be a game 我的世界. This is based on familiarity with C++ and a certain knowledge of OpenGL can be done. There are also many open source codes. I originally planned to use this project to meet game companies, but I didn't invest in game companies later, so I didn't use it, but it was indeed a good choice.

  • Secondly, cross-platform remote control projects can be considered, similar to the existing Sunflower and TeamViewer. Of course, the functions can be improved. There are also open source projects on github to learn from.

  • When you are preparing a project, you don't have to rely on C++ alone. You can use some other libraries to cooperate with C++. This will not only make the project unique, but also better use C++. If you are interested in images , you can also do some interesting things with Opencv and C++. If you are interested in audio and video, you can consider using FFmpeg.

My personal autumn recruitment project is roughly as follows, of course, I will also adjust the resume according to the company and position submitted:

  • Image semantic segmentation in autonomous driving, this is mainly related to deep learning, and has paper output. Through this project, two papers were introduced, and then I talked to the interviewer.

  • OCR identity information identification, this is a project of the bank, mainly to extract the information of bills and correct text errors.

  • Evaluation machine & duplication check, the evaluation machine is mainly made by C and Python, the duplication checking algorithm is based on and reproduced a master's thesis of a senior, there are traditional algorithms and machine learning based.

  • C language interpreter, the general requirements are virtual machine, lexical/syntax analyzer, recursive descent, variable function statement definition, etc. Of course, you can also use C++ to write a scripting language interpreter, which is also more interesting.

  • Multi-person IM has more complex functions, similar to Feishu and Tencent conferences. It was developed with QT, there are many bugs, and it is still being improved.

interview experience

  • Everyone knows that the interview is mainly about self-introduction, project experience, eight-part essay and hand-tear code. Because everyone prepares different things, but everyone will have their own advantages or highlights, so you can highlight them when introducing yourself. Your own highlights or advantages, if the interviewer is interested in what he has introduced, then the interviewer will also ask questions, so that you can show yourself well. Then don't put unfamiliar or blunt things on your resume or self-introduction, which will not only embarrass yourself, but also make the interviewer feel flashy.

  • The second is when submitting resumes. Now basically everyone has internal referrals, so when looking for internal referrals, you must find a reliable person who can keep in touch, so that you can follow up your progress and know your own in time. situation, don't worry about it all the time. The best situation is to know a certain department in advance, direct push by the department or direct push by HR, so that you can keep in touch with HR directly, whether it is the interview result or the relevant information of the department, you can know the first time.

Summarize the learning experience of C++

  • If you are a student without foundation, you can find a book that is not too thick (about 400 pages) to get started first. Maybe everyone knows that the books of C++ Primer or the father of C++ are good, but if you have no foundation, go directly to C++ Primer. It is still very difficult, and even many places are cloudy and foggy, so I personally think that you can first find a thin book to get started, and then go to Primer. Of course, you can’t just read the book without knocking, and you need to practice more. practise. "PS: "C++ Primer" can be watched twice or more"

  • After reading Primer, you can take a look at the Effective series. Of course, these books take time to read, and they also need to be patient. If you have more time, you can refer to those books in front of me, and if you are a student who is going to go straight to the autumn recruitment for half a year, you can take this route:

    Simply find this book to get started -> "C++ Primer" -> "Effective C++" -> "Deep Exploration of the C++ Object Model" -> "STL Source Code Analysis" -> "C++ Concurrent Programming Practice"

    Basically, this route is enough to deal with autumn recruits. Of course, other things need to be prepared, such as data structures, operating systems, computer networks, databases, etc.

Brush question recommendation

  • Everyone is writing questions, especially the solution of one question a day. There are also two LeetBooks that can be read for free on leetcode.

  • DP - Path Problems (https://leetcode-cn.com/leetbook/detail/path-problems-in-dynamic-programming/)

  • Designing Data Structures (https://leetcode-cn.com/leetbook/detail/designing-data-structures/)


Finally, I would like to thank Brother Peng for sharing his experience and for his suggestions and guidance in the process of writing questions.

6c5756f855336c88b650651cd7d0635c.png

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324041765&siteId=291194637