In the field of programmers, who graduated from junior college, how to get the same treatment as '985'?

I. Introduction

What does education mean? An educated programmer will never understand the pain of not having an educated degree, just like not knowing the darkness of night during the day.

Recently, there is an article that has spread all over the Internet! As a programmer, I also think, don’t we also have such an experience? Rich work experience, high skills, long working qualifications, but there is no corresponding treatment because of academic qualifications! Even some highly capable college students can’t even enter Dachang’s door! What changes their destiny is not just how many scores they have in the college entrance examination, but whether they continuously improve their own quality during the process of entering the society, and whether they are not. Give up studying! I always believe that as long as I improve my own strength, I can stand with those graduate students and doctoral students!

2. Why do companies only recruit high-educated qualifications

Why do companies require academic qualifications? This question has to be explained from the perspective of company managers. When recruiting, academic qualifications are just the lowest threshold for a company when recruiting. Then, during the interview, you can guess and evaluate some of your usual habits and behaviors through your words and deeds, and your detailed actions. . See if you can quickly integrate into the team, most companies will prefer cheerful employees. But why must it depend on academic qualifications?

One aspect is that people who have read have certain logic and thinking about things. Some people say that reading is useless, but everyone hasn't noticed that reading will affect our thinking subtly, some ways of handling things, and more one's creative thinking. On the other hand, there are several types of people without academic qualifications:

The first is Chollima, that is, talents without diplomas. Many well-known companies will find them, but they are rare.

The second type of people don't want to make progress. Many people who are content with the status quo give up their efforts when they become leaders.

The third kind of people have no principles, no knowledge, people who are waiting for the pie in the sky, and so on... Such talents with no education are very few in large companies, and they are mixed in the team. If you are a manager, what do you do? Identify which are talents and which are stupid talents. Besides, your leader is such a person, would you dare to stay one more day?

Some people may say that ability is the most important, and ability is really important. Technically speaking, it is nothing more than proficiency or unskilled. The order of entry is just that. In fact, academic qualifications only represent your past. As long as you have the ability to learn, you can look forward to the future.

It is necessary to take the time to improve your academic qualifications. In recent years, the frontline settlers pay more and more attention to academic qualifications, but don't be afraid to think that academic qualifications represent everything. Unless you start a business, then you are awesome and everyone will only admire it.

Three, data analysis

Let me first show you a statistical chart of average interview invitation data received by programmers with different educational backgrounds. It is not difficult to see from the figure that just looking at the number of interviews received, the number of invitations received by junior colleges, undergraduates, and masters is not much different, while doctoral students received fewer interview invitations. Of course, this may have something to do with their professional focus more precisely!

Look at this picture again, the average annual salary of junior college students with 6-10 years of work experience exceeds that of undergraduates! The longer the working years, the lower the educational background takes the advantage!

So, what is the reason for this?

Because compared to other industries, IT is a more application-oriented industry. In daily work, many technical experts are able to type a series of jaw-dropping high-level codes, relying more on a lot of rigorous logic exercises and practical experience. And these can't be obtained by relying on a paper academic certificate!

Many people may not have achieved success in the so-called sense in the field of traditional exam-oriented education, but this does not mean that they are not strong, more just different directions and points of interest!

Therefore, although academic qualifications represent a better learning ability to a certain extent, with the rapid development of the Internet, in the IT industry, "education first" is no longer the only criterion for companies to select talents. Compared with a certificate, what companies value more is your level of programming and your ability in actual work. Otherwise, even if you have a job offer as a stepping stone, you are just a silly Mr. Nan Guo.

4. Efforts to improve, technology is king

Never underestimate yourself, let alone underestimate your potential. Everyone has his own Maxima in his heart.

Counterattack Microsoft

  • ready

My instructor told me before that he knew a friend at Microsoft who could help me push me. I said that I could push Suzhou, but Shanghai or Beijing would not be considered. Later the instructor asked and found out that the friend's department was in Shanghai and there was no branch in Suzhou, so he gave up.

So Microsoft went directly to the official approval and voted for a software engineer from STCA Suzhou. Then I waited for the unified written test, thinking that I could not repeat the same mistakes.

  • Interview

Microsoft’s written test platform this time has been replaced by amcat, and the written test is not allowed to switch windows, and the mouse cannot leave the window. This suddenly increases the difficulty for us, because Microsoft’s written test is just a few algorithmic questions, and you can’t jump out of the window. The code is too scary.

To everyone's surprise, Microsoft's algorithm problems this year are suddenly much simpler, and it can be said that there is no problem with the code by hand. There are a total of five questions, many of which can be written in a few simple lines of code. The most difficult one is changing coins, which is actually very obvious dynamic programming. So there is no pressure on the written test, only two or three test cases failed, waiting for the interview notice.

After waiting for several days, I received the notice of the on-site interview from Microsoft Suzhou. It is worth mentioning that several students from the same laboratory who did well in the written test did not receive the interview notice, so Microsoft probably did not send the interview notice based on the written test results.

After that, I went to Suzhou for an on-site interview. When I signed in, I saw that the sign-in form was densely packed with students from Nanjing University and Zhejiang University. There are four rounds of interviews. Sitting in a conference room, the interviewer takes out the mode of the interview. Microsoft's interview model is notoriously writing code without asking anything, and this time is no exception.

  • one side

One side lasted for more than half an hour. The interviewer asked me to introduce my most shining/characteristics at the very beginning, but when he came up, I was confused because he only prepared to introduce myself. Tell the interviewer that after I think about it for two minutes, I will start talking. The starting point is that I have strong learning ability and good learning; I took the initiative to say that my undergraduate course is a weapon of learning, and spent nearly two years of spare time preparing for the postgraduate entrance examination. I was admitted to Nantah University. During the preparation for the postgraduate entrance examination, I taught myself the four major professional courses and affiliated courses in computer science. I also learned very well at the graduate level. The interviewer expressed satisfaction.

Then I asked the algorithm question. It was a classic algorithm question. Adding two large numbers of strings. This question is the original LeetCode question, so I wrote it quickly. Then the interviewer expanded to ask how to modify the algorithm if it is a decimal. I said that the integer part and the decimal part of the number should be treated separately, and the previous algorithm should be added separately and the problem of the decimal to the integer carry-over is completed. The interviewer agreed .

Then I asked me if there is any other way to deal with decimals. I said that I can treat decimals as integers. After the addition is completed, calculate the position of the decimal point and insert it into the string. The interviewer asked me to write it out. I It was quickly written on paper. Then the interviewer asked me to think about what test cases could be designed to check the correctness of the algorithm. I wrote a few test cases.

Then the interviewer asked me a probability question. Roll a dice n times. After each dice roll, you can choose to stop immediately, take the current dice value as the result, or ignore the current dice value and continue to roll the dice. What strategy can get the largest number.
I’m having trouble with this question, because I thought about similar problems before and got around myself. This time around, I got around and got confused the more I thought about it. In the end, I just said that every time I roll more than 3, I stopped immediately. Continue toss if you don't exceed it; the interviewer immediately gave an example and said that suppose you can toss 9 times in total, and the first time you toss 4, should you stop immediately? I can't answer.

The interviewer reminded me two or three times and said that I should consider how many more rolls in the future. I understand that we should not look at the previous rolls, and should calculate the probability that the subsequent rolls will exceed the current value based on how many times there are no rolls. If the probability is greater than 50%, you should continue to roll, and then write the formula to calculate the probability. The interviewer agreed with my answer, and then he added that it can also be viewed with the idea of ​​dynamic programming. Finally, the interviewer told me that I was too nervous and needed to relax.

  • Two sides

The second side is almost half an hour. At the beginning, the interviewer asked me to introduce the project I was doing, and was very interested in my scientific research project. He asked more, but didn't go deep. Then I started to do algorithmic questions. The topic was binary search tree. I asked about the time complexity of searching. Let me give examples on the paper the time complexity of various situations (best, average, worst), and then let me analyze How to find nodes that are only smaller than the specified node in the binary search tree (that is, the predecessor node of in-order traversal), so I discussed with the interviewer how to find the predecessor node under different tree shapes, and the interviewer asked me Write this algorithm.

I thought about it for a while. In fact, the middle order traversal can be done, so I wrote a non-recursive reverse middle order traversal in silence, and then showed it to the interviewer and explained the principle; however, this is not the result the interviewer wants, the interviewer I hope that I will find the precursor node through the parent-child relationship of the node instead of traversing. I thought about it, and then I told the interviewer that each node must have a parent pointer to its parent node. The interviewer said that there can be a parent pointer.

Then I followed the various situations discussed before and wrote out the methods to find the precursor nodes one by one. The interviewer looked at the code I wrote and agreed, but told me that my code can be streamlined. In fact, it is the two cases that continue to traverse upward to judge. Then the interviewer asked me to design test cases to check the correctness of the algorithms I wrote, and I quickly wrote a few. Then let me later, the interviewer simply asked me questions such as Fibonacci sequence, and the interview ended happily.

  • Three sides

It's almost half an hour on three sides. The three-sided interviewer also asked me to introduce the project first. I introduced my scientific research project. After he asked some performance parameters, he asked me if I considered the power consumption of mobile phones. I said no, mainly because this field is not done. He talked about his views on power consumption, and I agree.

Then the interviewer asked me if I asked about English in the first two rounds of interviews. I did not answer. The interviewer said that we will communicate in English from now on, so the whole process will be English. Then it's time to do algorithm questions. Unlike the previous two rounds of interviews, which were written on paper, this time they were written directly on the whiteboard on the wall. I asked about the original question on LeetCode—Judging the Mirror Binary Tree (LeetCode 101). I had prepared for this question.

First, I drew a mirror binary tree and confirmed with the interviewer that I did not understand the meaning of the question. Then I started writing smoothly. After I finished writing, I asked the interviewer to check it. The interviewer first asked why my incoming parameters used a and b to represent two trees. I answered for the sake of simplicity, and then the interviewer said whether left and right can be used to represent two trees (recursive structure, here refers to the left sub Tree and right subtree), I can’t answer, because the first parameter may not always be left, and the second parameter may not always be right. If left and right are used, it will be misleading. The interviewer agrees.

Then the interviewer asked me to design test cases. I wrote seven or eight test cases. After reading it, the interviewer said that I actually missed the most important test case. I couldn’t figure it out, so I asked the interviewer what kind of test case it was. The interviewer said that the test cases I wrote are all to check the algorithm is not correct, and the test case should first check the algorithm is correct, that is, the normal test case, I said that this is indeed what I did not expect. Then the three sides are over.

  • All sides

There are department bosses on all sides, and it lasted about forty minutes in total. At the beginning, I was asked to introduce my scientific research project. He expressed his interest and asked me to introduce some details of the system. So I drew the whole process and the whole process of the system I designed on the whiteboard on the wall. Some details, interspersed with interviewer’s questions. Then I entered the topic and started to do algorithmic questions, which is also the original question on LeetCode—Wildcard Matching (LeetCode 44). I was shocked when I saw this question from the interviewer, because I had seen this question during the review the day before. I didn't make it, and because this is a Hard difficulty question, I don't think it would be asked in the interview, so I didn't find the answer to make it. However, I encountered this question.

So I took the initiative to tell the interviewer that I saw this question the night before, but I didn’t make it. The best solution to this question should be dynamic programming, but I won’t. The interviewer replied whether he regretted it now. I didn't read this question, it doesn't matter, think about it now, and try to do it. Then I stood in front of the whiteboard and thought for several minutes. Fortunately, I finally figured it out, used recursion to do it, and then slowly wrote the code. Then I showed it to the interviewer and explained the algorithm work process line by line. The interviewer said it was pretty good. Isn't this done? Then it was time to write test cases and learned three lessons. This time the test cases were written quickly. This ends the four sides.

After all around, I went back to the conference room and asked HR when the interview result would be available. HR said that the result would be available in about ten minutes. So I sat there and waited, and then HR called me, went out and told me that my interview situation was pretty good. Now in the hirable list, I may decide whether to post an offer after about two weeks. Then I went back to school happily.

But waiting for Microsoft's offer is a long time. After HR bounced twice in a row, I finally received an offer call. I was pleasantly surprised that I got Microsoft's SP, and this year Suzhou Microsoft's salary package has also been greatly improved compared with previous years.

5. Who says academic qualifications and everything

Academic qualifications are indeed a stepping stone. We do not have this stepping stone to work a lot, but we can work hard to improve ourselves. If the academic qualifications are not good, and there are companies that require academic qualifications, I really want to go. You can work while taking self-examination to improve your academic qualifications. Everything has a solution. It depends on whether you are willing to do it. I entered a small company as a junior college, but I did not give up because I aimed at a company that is not too big or small. I have spent 2 years working in this small company. During this period, I have never slackened, and I took the exam while working.

Once admitted to the undergraduate course, I successfully got the offer of iFLYTEK. So I set my goal at Microsoft again, and spent 3 years preparing for the next opportunity while taking the postgraduate exams. The effort paid off. Finally, I did it. It took a full 5 years from a junior college student to a graduate student, a small factory to the Microsoft "counter-attack" that all programmers dream of . Although it was very hard and lonely, I did it, didn't I?

Finally, I would like to send a message to everyone, the difficulties that cannot defeat us will eventually make us stronger!

Sharing of my study notes during six or five years

I have been doing Android development by myself in the 5th year. In the second year after graduation, I was fortunate to join the big family of ByteDance. In the 4 years of Byte, I have witnessed too many people coming and going. I am deeply impressed by a colleague who switched jobs to Ali and directly doubled his salary. However, I also saw many people bumping into the wall covered with "big factory" gold. Technically!

I may be considered a successful example myself. I managed to achieve 2-2 from 1-1 in 4 years. Of course, the "sorrowful tears" behind this will be discussed later. In general, thanks to my continuous learning, review and summary, and improve my skills! Let me share my specific study route and notes in the past 4 years, hoping to help friends who are interested in improving technology!

  • Essential skills for architects

At present, the mainstream language for Android APP development is the Java language. The biggest feature of the Java language is to improve the possibility of software interaction. It can be said that almost all applications on Android phones are written in the Java language.

Knowledge points:
1. In-depth understanding of Java generics
2. Explaining in-depth explanations
3. Concurrent programming
4. Data transmission and serialization
5. Java virtual machine principles
6. Efficient IO

Essential skills for architects

  • Interpretation of open source framework for design thinking

With the continuous development of Internet companies, there are more and more modules in product projects, and user experience requirements are getting higher and higher. It is becoming more and more difficult to achieve the purpose of small steps and fast iterations. The application of plug-in technology is born. If there is no plug-in technology, the applications that integrate a large number of "app" such as Meituan and Taobao may be as big as a few g.

Therefore, today's Android mobile development will not be hot-fixed, plug-in, and componentized, and more than 80% of the interviews will not pass.

Knowledge points:
1. Hot fix design
2. Plug-in framework design
3. Component framework design
4. Picture loading framework
5. Network access framework design
6. RXJava responsive programming framework design

Interpretation of open source framework for design thinking

  • 360° all-round performance tuning

In the hands of development engineers at different levels, because of the uneven technical level, even if many mobile phones are running with very high software performance, there will still be lag when opening applications.

In addition, as product content iterates, functions become more and more complex, and UI pages become more and more abundant, which also becomes an obstacle to smooth operation. In summary, the performance optimization of APP has become a comprehensive quality that developers should have, and it is also a guarantee for developers to complete high-quality application works.

1. Design ideas and code quality optimization

2. Program performance optimization

  • Optimization of startup speed and execution efficiency
  • Layout detection and optimization
  • Memory optimization
  • Power consumption optimization
  • Network transmission and data storage optimization
  • APK size optimization

3. Optimization of development efficiency

  • Distributed version control system Git
  • Automated build system Gradle

4. Project actual combat

  • Start speed
  • Fluency
  • The practice of Douyin in APK package size resource optimization
  • Full analysis of Youku's responsive layout technology
  • Network Optimization
  • Revealing the Secret of the Performance Optimization Project on Taobao Double Eleven
  • Analysis of source code dependence of AutoNavi APP full link
  • Sharing of actual combat experience of completely eliminating OOM
  • WeChat Android terminal memory optimization practice

360° all-round performance tuning

  • Android framework architecture

Android framework architecture (advanced UI+FrameWork source code) This piece of knowledge is currently the most users, we call it the technology of Android 2013~2016.

Android developers are often familiar with and unfamiliar with this frequently "used" code because they are used to copying code online: the familiar is dealing with them almost every day, copying the code every day; the unfamiliar is that although with these every day Dealing with codes, but I haven't studied the principles of these codes in depth, and the connotations of the codes.

Knowledge points in this article:
1. Advanced UI promotion
2. Android kernel components
3. Essential IPC for large projects
4. Data persistence and serialization
5. Framework kernel analysis

Android framework architecture

  • NDK module development (audio and video series)

NDK (abbreviation of Native Development Kit) is a software development kit based on native programming interface that allows you to use C and C++ code in Android applications. The program developed by this tool runs directly locally, not a virtual machine.

In Android, NDK is a collection of a series of tools, mainly used to extend the Android SDK. NDK provides a series of tools to help developers quickly develop C or C++ dynamic libraries, and can automatically package so and Java applications into an apk.

Knowledge points in this article:
1. Introduction to C/C++ developed by NDK
2. JNI module development
3. Linux programming
4. Low-level image processing
5. Audio and video development
6. Machine learning

NDK module development

  • Flutter learning advanced

2019 is undoubtedly a year in which Flutter technology is in full swing.

Every mobile developer is crazy about the features and concepts of "rapid development, expressive and flexible UI, native performance" brought by Flutter, from super apps to independent apps, from pure Flutter to hybrid stacks, developers We are enthusiastic about exploring and applying Flutter technology in different scenarios, and we are also facing various challenges.

Key points of knowledge in this article:
1. Overview of Flutter cross-platform development
2. Building Flutter development environment in Windows
3. Writing your first Flutter APP
4. Getting started

with Flutter Dart language system ...

Flutter learning

  • WeChat applet development

As one of the most popular programming development application scenarios, WeChat applets are very popular in the market, which makes many developers greedy. But for beginners, they are completely confused. I don't know what knowledge needs to be learned for the development and production of WeChat applets. Friends in need can refer to this article.

The main points of knowledge in this article:
1. Overview and introduction of
applets 2. UI development of applets
3. API operation
4. Shopping mall project combat

WeChat applet development

  • Interpretation of Android-related source code
    As long as it is a programmer, whether it is Java or Android, if you don’t read the source code and only look at the API documentation, it will just stay on the skin. This is not good for the establishment and completeness of our knowledge system and the improvement of actual combat technology. of.

Android related source code interpretation

Android-related source code interpretation part of the content

Due to space reasons, if you need the complete study notes pdf above, you can like and comment to support the editor, click here to pick it up for free !

More information about the Android architecture can be obtained for free here

Guess you like

Origin blog.csdn.net/Android578/article/details/113609497