Writing in the front

The Internet is full of interviews of Internet giants. They used to be BAT, but now they are Bytedance, Kuaishou and Meituan. Just my ability compares rookie, big factory stayed for a while to return medium and small factory, write the interview experience of medium and small factory.

Think also, the interview experience of big factory is like Hollywood blockbuster, certainly much better than the low-budget TV series, small factory don’t ask what is the difference between process and thread, what is there to write?

But think about it, there are 10 million programmers, and only a few thousand of them can go to Alibaba toutiao. The rest of them have to find a relatively good job to make a living. So in fact, I hope someone will write about the situation of small and medium-sized factories, this is a higher proportion of the current situation of programmers.

First define what is the small and medium-sized factory in this article. Dachang is easy to understand, such as Alibaba and Tencent, as well as a number of well-known Internet giants. But even if you add up these big companies, they’re still a tiny fraction of programmers. More are some unknown Internet companies, traditional IT companies that do systems for all walks of life, outsourcing companies, technology departments of big companies in traditional industries, entrepreneurial technology companies and so on. If you download a BOSS direct hire, 99% of the companies searched above are unheard of, and some good companies may not use it, but also from a side to illustrate this point.

My company

Back to me. The company I work for is a listed company specializing in making systems for the electric power and energy industries. You know, when someone asks you the name of your company, you shout it out twice and they still say, “Huh? That kind of company. But in the industry is still very famous, the power system is not we think is to calculate how much money is so simple, front-end, back-end, all kinds of technology can still be used, and there are individual systems with technology is quite new quite tide, of course, with Ali those certainly have no better than, but also far away. The treatment is not as good as the big factory, but it is not 996. The management is humanized, so it is not necessarily worse than the big factory in terms of cost performance. But if you have the ability to pursue, certainly do not stay in this kind of company, work more and get more.

Similar to such companies, I define as small and medium-sized factories. Since it is my company, I definitely prefer it, just as I still love my motherland no matter how bad China is, so I call it Zhongchang. As for the small factory is the kind of company with only a few programmers, who don’t know whether they will go bankrupt next month.

But back to the interview. Our company’s school recruitment is divided into spring recruitment and autumn recruitment. Last year, 2019, I was selected to be an interviewer for the college recruitment. Spring recruitment is mainly for interns, maybe there is a summer vacation, the time is also more appropriate; Qiu Zhao is a regular employee. Think about it, it also makes sense, if the autumn recruit after the process and then come in for an internship for half a year, the senior will soon graduate, the junior may not be too appropriate. Spring recruitment is scheduled for early May. Probably because summer is the prime time for internships, too early is not good. Since we haven’t started this year, let’s review last year’s.

I’m thinking

I received the notification email at the end of April, and decided to go to one book and three books in one school. The year before last, I heard that it was two books in several schools, so it is different every year. It’s my first time as an interviewer. I’m sure I’m a little nervous, and I have a few questions I don’t know:

  1. Recruitment process
  2. What should you recruit
  3. What is the right topic to ask

The first question is relatively simple, although it is not a big factory, but after all listed, the company still has training and information, otherwise who dare to buy your shares? That’s a question I cracked over the weekend. But the second and third questions are a little trickier. At first I thought, don’t you ask the hardest questions and hire the most skilled programmers? Turns out it wasn’t.

I don’t have the difficult questions first. You can’t really ask about your usual job in an interview. How do you write a CRUD? The interviewee is likely to turn his head and leave, or even write a recommendation article on the nuggets about the company’s interview questions. Although you can search a lot of BAT topics online and just use them, AND I believe quite a few interviewers do, I don’t want to do that. I always feel that I should ask myself something.

Then, if he knows all the BAT topics, why doesn’t he go to BAT and choose to come to this factory? So, obviously, this idea is wrong.

So the next day at work, the first thing I did was not write code. Instead, I stood up and looked around, taking a good look at all the fellow programmers I met day and night but never cared about, ignoring the ones I didn’t know well. In fact, these were the ones I needed to hire.

They generally have the following characteristics:

  1. It’s not very technical, but it solves real problems
  2. I don’t know the deep principle, but I know the basic concept and have a wide range of knowledge
  3. Not necessarily technological innovation, but familiar techniques write code very quickly
  4. Not necessarily what’s new in the technology, but familiar with the many pitfalls of development and able to avoid bugs most of the time
  5. No arrogant Daniel, always approachable

When I got to the fifth point, I remembered that the company had hired an Ali programmer a few years ago. He stayed for less than two months and left. I heard from my colleagues in the project that he was very skilled and always liked to use DDD, but no one in the project knew how to use DDD. Besides, he was just a developer without PM or design ability. He was a maverick and did not follow the existing code specifications. In this way, number five is the first. Think of a few days ago in logical thinking heard a sentence actually said correctly: interview is not a test, but a communication.

Exams are all about grades, while communication is all about likes and dislikes.

Then I wondered what kind of topic I should write to find such a person. The first thing that came to my mind was to ask me about the problems I encountered in the project. If I had ideas to solve them, I would be close to the level of my colleagues.

The interview questions

Such as:

  1. If you have used Mybatis: how is it used? Have you used mybatis-generator before? What are the benefits? What’s the problem? Do you know the general mapper of Tk. mybatis? Why is it needed? How does mybatis plus compare? In mapper, the database a_b is converted to aB by default. If the name of the database field is aB, the database field is automatically converted to aB. How to deal with this problem?

Actually, the last one was a problem my colleague had, and he solved it. In fact, there is no profound problem of underlying principles, but I think for a resume said to use Mybatis, it should be understood. Otherwise, I can only paste and copy, and I can’t solve my colleagues’ problems. Because this problem is searched on Baidu is more difficult to search the answer. The details can not be answered, but the idea is to have. The key is to check the official documentation and look at the source code, and my colleague finally relied on these two steps to solve the problem.

  1. Q2 if kafka has been used: what is the possible cause of a log rebalancing error one day? How to solve it? There are three reasons for this problem in the boiling point I made a few days ago, but in fact, in actual combat, one of them is the frequent occurrence.

Another colleague had a problem with displacement. What happens if the first message fails and the second message is delivered? How to solve this problem? This kafka client code I see a lot of people using native to write, some with spring @kafkalistener to write, will be a little different.

  1. Question 3 if you have used Redis before: How to generate a unique stream? If I place too much memory, how do I prevent it from exceeding redis memory? If your program A shares the same Redis cluster as someone else’s program B, how can you accurately control your own Redis memory usage? What could possibly go wrong without control?

  2. Question 4 if you have used mysql: Mysql sub-database sub-table can ask a lot of things, but relatively scattered, each company uses the basic different, most of the time can only ask some of the original. So I might not ask, but ask about business. How do you use @transactional in Spring? Sometimes it doesn’t work. Why? If you answer the AOP can incidentally ask; If you answer an exception, you can also ask in depth, etc.

Because redis and mysql have a lot of questions related to platform groups, developers in my company don’t have much access to them, so it’s not easy to ask in-depth questions online.

  1. Question 5: The above several are not directly related to Java, some people may not have used, it is not easy to ask. Most of my problems with Java are related to memory and multithreading. For example, the program suddenly out of memory error. How to check the cause? There are a lot of tools involved, jConsole, JVisualVM, JStack, JMap, etc., but some of them are only recreated in a Linux production environment, and some of them are not easy to debug on Windows or MAC. And then what? Sometimes it’s clear from the log or jStack, etc., which line of code threw an overflow. Does that mean there’s something wrong with that line? If not, how do you locate which row? If the memory of the program suddenly grows much larger (and has not yet overflowed), how do you locate the problem? What could be the cause? If the CPU also suddenly increased at this time and what aspects may be the reason?

If a program has a lot of loops, how can you avoid loops as much as possible? What’s wrong with an endless loop?

How to clear memory in a static Map? Sometimes you find that the Map clearly points to another object, but the original memory does not seem to be reclaimed, and the memory usage is still increasing. Why is this? Will it overflow eventually?

Multi-threaded problems are endless, such as multi-threaded SimpleDateFormat might have any problems? How to avoid it? How to use maps and lists in multithreading? , etc.

The last

These problems are still temporarily recalled, in fact, there are many problems, these problems are solved by my colleagues. Most of my colleagues could not go to the big factory, but they could solve all the problems. So if you can answer how to solve it, you pass the interview, even if the principles part is not very clear. For students with less experience, I think they can also provide ideas to solve the problem.

Last but not least, according to my observation, the interns’ transfer rate is basically 100%, and the rate of transfer is not high. Although most of them look down on our company, there are also many who find that they are not good at work, so the leaders will not let them transfer naturally. In addition, during the interview, I found that many students have internship experience in Tencent and Ali. I thought why would they choose our company? One may be more accumulation of experience, two may also be a big factory is not good. (If you want to read it, you can also write down the process.)

Written in 2020.4 Qingming.