Even at the end of the year, I quit naked and risked losing my job.

I used to work in Shenzhen. As A native of Jiangsu province, I didn’t want to develop in Shenzhen for a long time, so I quit my job and returned to Shanghai to facilitate my interview.

This is the second time I resigned naked, with the experience of the last naked resignation, I this time in psychological preparation, obviously more effortless.

I spent a little more than a week in Shanghai to participate in the interview of more than a dozen companies, including Meituan, Bytedance and other large companies, but I was rejected due to lack of ability or mismatch in technology stack. Finally, three or four companies wanted me, and I got a satisfactory offer.

The interview is a very exhausting process, and I can hardly imagine what kind of collapse and despair I would have faced if I had not been lucky enough to get several satisfactory offers in this bleak and cold Shanghai.

Therefore, I sincerely hope that I can share some of my interview experience to help some friends who are looking for jobs, so that their job hunting road more smooth, less like me.

I have been working in Python for three years. I am looking for a position in back-end development or operation and maintenance development. I would like to talk about some experience in Python recruitment based on my actual interview experience

Before the interview

The market environment

First, let’s talk about the overall environment. China’s Internet environment has gradually become stable and mature, but there are still too many junior and intermediate programmers and too few senior ones. So if you want to stand out from the crowd of applicants, strength is the king.

In addition, the usual recruitment season is golden three silver four or golden nine silver ten, after all, there are few people like me looking for jobs in November, but I think Shanghai is a big city after all, it is impossible to say that there are no jobs in the market, and in the off-season, there are few people competing with me. Therefore, based on the above judgment and my own courage, I decided to resign, from Shenzhen to Shanghai.

Personal locator

In my opinion, every employer should make a reasonable assessment of their position in the market, so as to accurately know what type of company they want to find, whether it is a large company, a large platform, a small and medium-sized enterprise, or a start-up company? It depends on your strengths, the direction of your career path, and your knowledge of the market.

But if it is not clear, it does not matter, when the delivery company can be all kinds of companies to cast a cast, large and small companies are to meet one side, in short, do not put eggs in a basket, more to make some opportunities for themselves. The interview is a good way to get in touch with the outside world and get to know your level of competence, which can help you get a clearer picture of the market environment. After the interview, there are usually rhetorical questions. Take the opportunity to ask about what the company is doing, the technology stack it uses, etc.

As for myself, I regard the interview as a good opportunity to test myself and exchange skills with other companies. Therefore, in the usual work process, you can also go out for an interview every three to five to see their ability level geometry, to avoid their disconnection with the market for too long, and the situation of warm water boiling frogs.

resume

The next step is to create a resume. There are plenty of tutorials on how to create a resume online. I think the key to a technical resume is to be clear about your outstanding projects and your technical stack, which are frequently asked in interviews. In addition, because I am obsessed with Markdown, I tried the resume of Markdown style for the first time, and the effect was quite good and clear.

channel

As for the selection of recruitment channels, it is best if there is internal promotion from friends. In addition, it is suggested to register several apps and look for interview opportunities through multiple channels, such as pull hook, boss direct hiring, hunting hiring and so on. The job boards on the websites of companies you want to work for are also a good source of information.

Interview preparation

As a technical interview, how to review and prepare for the interview, I think we can consider the following points.

Data structures and algorithms

Why put this in the first place, because it is very important in the technical interview, but usually the most overlooked part of the work. All say “interview build aircraft carrier, work screw”, if not algorithm post, programmer in the daily work algorithm use scenarios are very limited, but this is a key point of the interview investigation.

I met about a dozen companies, and basically every company will test some algorithm questions, or let you talk about ideas, or directly handwritten procedures, if you have not prepared in advance, it will be particularly difficult to adapt, especially the whiteboard algorithm piece.

So, my prep advice is to spend at least a week before an interview practicing algorithmic questions to get comfortable.

First push leetCode website, the Chinese website is leetcode-cn.com/. Leetcode is a very famous problem solving website, which gathers classic algorithm problems of various enterprises, and can submit code online, customize test cases, view other people’s problem solving and so on. If you don’t have the answers you want, you can also look at leetcode.com/, they all have the same order of questions, but Chinese is a little stronger in terms of localization.

If you are pressed for time, I suggest you focus on the following data structures and algorithms:

  1. Various sorting algorithms, bubble sort, heap sort, quick sort, etc., time complexity space complexity analysis, can do handwriting.

  2. Common data structures. Linked lists, binary trees, heaps, stacks, etc.

  3. Classic algorithm. (To be sorted)

Basic knowledge of

In any technical interview, basic knowledge must be the most important. For python programmer interviews, I find the following three topics to be very important and very frequently examined.

  1. Language foundation

Mutable objects, immutable objects, decorators, iterators and generators, threads and processes, magic methods, dynamic interpretation, metaclass, etc.

  1. The web based

HTTP requests, status codes, network security, the order in which Django processes requests, cookies, and sessions

  1. The database

Mysql transactions, indexes, locks, performance tuning, noSQL database redis more investigation.

Experience in project

Generally speaking, basic knowledge is very important for fresh graduates. For social recruitment, project experience is a very important part.

I suggest preparing your project from the following perspectives:

  1. Project introduction

STAR model is recommended.

S — Situation, in what context is the project produced T — task, what is your task A — action, how do you do it and R — result, what is the result

  1. Difficulties and bright spots in the project

I believe that everyone who has actually done their own projects will certainly think about their own projects. Summarize the most difficult part of the project and the most exciting part, and also use the STAR model above.

  1. The project framework

Some interviewers will ask you to draw the outline or design of the project on a blank sheet of paper. This can also be prepared in advance to make it clear.

conclusion

The interview was a difficult battle, and I found that in the intense atmosphere of playing chess, I never experienced the feeling of super performance. I prepared 100 points, and it was very good to play 60 points. Therefore, it is recommended that every interviewer should prepare some must-ask things (personal introduction, project experience, etc.) in advance, and simulate the expression, in case you are nervous and forget the words.

The interview questions,

Since both my own company and start-up companies will go to the interview, I have the impression that the investigation of the company will be deeper, such as how to use Python to locate some problems with full memory and CPU, how to optimize mysql performance and so on. Smaller companies ask more basic questions and a match based on your previous experience.

Here are 30 common interview questions from my own experience, covering all aspects of python interviewing, that you can test yourself on.

Python based

  1. What python is, and how it differs from other languages.
  2. Threads and processes in Python, and how they’re used, do you know about coroutines?
  3. What is a GIL, why is there a GIL, what happens if you remove it, why do you need to lock the program when there is a GIL?
  4. What are an iterator, an iterable, and a generator? What are the functions and usage scenarios of generators?
  5. What are decorators in Python? How to do that? Usage scenarios?
  6. What is a metaclass in Python?
  7. The difference between mutable and immutable objects in Python.
  8. What are the differences between new, init, and __call__
  9. What is Django’s middleware
  10. Celery principle, how to configure worker weight

project

  1. How to locate the fault that the memory or CPU is too high
  2. Draw the structure of your project
  3. What was the biggest difficulty you encountered during the project and how did you solve it?
  4. What was your most fulfilling aspect of the project?
  5. How did you learn programming as an amateur? Which books to read? What projects have you done?

web

  1. Differences between HTTP, GET, POST, PUT, and PATCH
  2. The meaning of the status code and the occurrence scenario, 301,302,404,500,502,504, etc
  3. The difference and relation between cookies and sessions
  4. What happens between the URL request and the return
  5. The difference between HTTP and HTTPS, how does HTTPS encrypt

The database

  1. Mysql > create index (B+ tree)
  2. What are transactions in mysql and what is the isolation level
  3. How do I optimize SQL statements
  4. Mysql performance optimization, etc

The operating system

  1. The difference between heap and stack
  2. What is IO multiplexing
  3. Nginx configuration

algorithm

  1. Find the maximum k number of integers in the list, time complexity
  2. Enter the one-dimensional array array and n to find any two elements whose sum is n
  3. Common sorting algorithms, time complexity analysis
  4. Generate a rotation matrix

The career development

As a code worker, I still have a long way to go to be a great programmer, and I can’t afford to slack off.

I can’t guess from the perspective of HR or technical leader which kind of interview is more favored by the interviewer. However, through my extensive interview experience, I can deduce some of the requirements of being a competitive programmer.

1. Technology is king

There is no doubt about that. Programmer I am not an English major, in the aspect of technology growth is more of a work in middle school, but it is not enough, each one wants to be Daniel programmer, must be to learn the underlying principle, such as operating systems, networks, data structures and algorithms, etc., may seem useless, these things in your work is to improve your technical depth, A very important part of broadening the technological horizon.

I am a person who is easy to feel inferior. In the interview, it is very easy to be frustrated when I cannot answer the questions, and I feel very weak. Specialization is one thing, but many of the basic things are a programmer’s basic literacy, it is easy to lose points on this or give the interviewer a bad impression. In addition, the points covered in the interview may not hit exactly what you are preparing for. I think you should actively “sell” yourself during the interview. Even if you fail to answer a question, you should try your best to show what research you have done in this area, so that the interviewer will not make a wrong estimate of your level.

In addition to the basics and underlying principles, the other piece of technology is what you do at work. In my work, I often see a group of people who are only satisfied with the assigned tasks, holding the concept of more than less than one thing, not to understand a problem in depth, and afraid of technical challenges. I used to be such a group myself.

If you don’t get out of your comfort zone, you’ll always be a programmer for CURD, not competitive in the marketplace. The best way to show yourself in an interview is how you research, think and solve technical problems. Therefore, when you encounter technical problems at work, be sure to treat them as technical touchstones and valuable opportunities for growth, rather than as obstacles to escape.

2. Work Experience

One of the most common questions asked by interviewers is what are your career plans for the future. I don’t know if other people have a clear plan. For me, IT’s more about taking one step at a time and not thinking too far ahead, which is actually very bad.

Once, an interviewer told me that five years is a key point. If you work for five years and still don’t have a splendid resume, or your working ability is still at a small level, it is very dangerous, and the market will doubt your ability.

I think, as a person with five years of development experience, he has almost changed two or three jobs. From the situation of each company and the content of each job, we can see whether there is a clear path for his career development. If a person’s goal is clear, he must have his own internal logic in each job change, his technical growth will not be too bad. However, if every job change is blind and there is no continuity of technical growth, it is very likely that although you have worked for many years, there is no core technical competitiveness, this is to be cautious.

Planning for the future of this content, I also very short, because I always hold to the idea of “be yourself”, for some natural reject secular theories, is actually left a lot of detours, but since I realized it, it’s not too late, better late than never “in the future, will contact some technical and more, for some technical BBS, not set in your comfort zone, Find a quick career path early.

Teacher Xue Zhaofeng once said, “Everyone is working for his resume.” I feel the same way here. The seller only provides jobs, and the competition is always between the buyer and the buyer. So, want to get ahead, must work harder than other employees, young don’t work hard, old beggar.

Pattern of 3.

I heard it from a friend of mine who was a headhunter. He said that what matters most to a guy in the workplace is structure.

I understand it this way, only what height you are willing to reach, you can become what height of person. For example, if you are only willing to be an engineer, you should be a low-level coder, and if you can stand in a higher dimension to do something, I believe you can gain a lot of valuable things.

For example, in the actual development, we should introduce some new technologies in the industry, instead of just being satisfied with the mature development framework; Instead of just completing the tasks assigned by the leader, we should look at problems from the perspective of the company or the team and have more global vision. When encountering problems, do not simply solve the problem, to learn to go deep into the bottom, and by analogy, this kind of problems are solved, the formation of their own thinking problem logical framework……

These things are also missing in my previous work. I hope I can think more and settle more in the new work to form my own technical pattern. After all, it is not a white person who has just entered the workplace. I should put forward higher requirements for myself, which is also for the sake of the next recruitment process, to be more smooth.


Every time I get an offer, I feel relieved that I can take a break. But then came the challenges of entering the job, adapting to the new job, working with a new team, moving and finding an apartment.

Still can’t slack off, hope oneself can settle down safely in the 21st century in the decade, with the best attitude to meet 2020! I also wish all the friends who are looking for jobs to get a satisfactory offer as soon as possible.

Finally, I have set up a Github project where I will continue to update my Python learning experience and interview instructions. Welcome to Star ~

Github.com/ZhiyuSun/py…