Successfully joined ByteDance and shared my experience from all sides!

Today, I officially joined ByteDance. The office environment is also very good. One building here is an office area. The company is equipped with a variety of snacks, drinks, and free coffee. There is also a gym on the 15th floor. And the company comes with three meals. At about 3:30 in the afternoon, there will be an aunt pushing a cart to bring afternoon tea to everyone. I heard that it is easy to gain weight after joining a job. However, if you want to keep in shape, the company also provides special fitness meals on the second floor. You can also book a professional massage service on Tuesday and Thursday to effectively regulate the cervical and lumbar spine. The life service is so intimate, I feel that I just need to work hard here, haha

Why do you want to go to ByteDance

Actually, this job change was not in my plan. It was only in April that I accidentally learned that ByteDance Shanghai was going to move to the vicinity of the Hechuan Road subway station, and I was suddenly moved. Why, because my home is only a ten-minute walk from Hechuan Road subway station. The cosmic treatment itself has a high reputation, that is to say, as long as I can come here, I can get two of the most prosperous money in my life and the impossible triangle that is close to home. So back in May, I started sneakily preparing for interview headlines. In order to live a life where I can get up at 8:30 in the morning and walk slowly to the company without being late (maybe one of the early people).

Of course, this is the reason why I want to go to ByteDance. When converting to yourselves, you should also think about why you want to change jobs or go to a certain company. For salary? environment? platform? Or the name of a big company? Remember, no matter what it is for, it's OK. Talking about money does not hurt feelings, the goal is clear, and the mind is firm, and then a series of preparations can be made around this goal. During the interview, every time the interviewer asked me why I wanted to come to ByteDance, I bluntly said that I was close to home, and said that if I couldn’t meet this time, I would prepare for the interview, and I would interview after a while. Anyway, your company is right next to my house, and it may not be able to escape in three or five years, haha.

Because of this mentality of being OK on the face and okay if you don't, I feel that I performed better during the interview. It is a process of mutual selection, and in this process, the company is relatively fixed, because its recruitment standards are unlikely to change too much. Take an example that I often use to insult people as an example: I often tell others that English is very important for technical development. You need English to see the latest technical documentation, and some translations are inaccurate, you may need to read the original text to understand what it means. Some people would say to me at that time, hey, it's a pity that my English is not very good. I will reply at this time, it's fine, it's not your fault that your English is not good now, but if I come back to ask you how your English is in a year, or even two or three years later, if you still tell me that your English is not good, Then you'll have to look into your own question. You don't want to learn English at all, how can English be good?

By analogy, if you don’t want to go to this company at all, how can you come to this company? If you really want to go to a company, you may not meet the requirements for the time being at this time, but it’s okay, as long as we know what other people are asking, we should study hard, prepare well, interview again in a year, interview in two years, or even You can try again in three or five years. What people fear most is not not having a goal, but not having a real goal. So, before changing jobs, you need to figure out why and start preparing in advance.

What have I prepared?

In fact, I haven't tried it formally for a long time. When I switched from Shuyun to GIO three years ago, because the relevant technologies on my resume were too matched, I basically chatted with the CTO and decided it was over; later when I went back to Shuyun, I had a drink with the director. Coffee is back. In other words, for about 5 years, I did not have a formal interview. So before preparing to vote on ByteDance, I voted for a few companies and did some warm-up activities. Remember, you don't really need any psychological baggage at this time. Because their candidates are less likely to be successful in interviews, they are also happy to see a suitable candidate who can be interviewed, and in case you really want to change jobs, but the company you like is not available, and the warm-up company gets it offer, you may also consider taking a look. And at this time, you don't have any psychological burden, because you are here for the interview anyway, so you may perform better during the interview, so maybe the final offer will be better than the one you want to go to. Woolen cloth?

Of course it doesn't include me. I was tortured by blood during my first interview. When I participated in the middleware competition, I used netty to do the implementation. Personally, I feel that I have some understanding of netty. As a result, the interviewer asked me to directly write the source code structure of netty, including which major classes and names and the relationship between each other... I used kafka in my work project To do a message queue, to buffer traffic, to protect the system, the result directly let me describe the storage structure of kafka... During the competition, I used various means to make the program GC-free, and the result directly asked me to tell the principles of various GC algorithms and Application scenario... We wrote the KV for the PolarDB competition, and the target is RocksDB. As a result, let me describe the index structure of RocksDB...

Of course, although I basically know everything he asked, and I know where the application scenario is, but when it comes to the details, I am a little confused. Although I confirmed that I can handle every detail with just a little look, but I can't stand the interview when I can't open my mouth. At this time, I felt as if I had become Yang Guo when I was young, and suddenly a Golden Wheel Dharma King appeared beside me and said to me, "Brother Yang, you have a lot of martial arts tricks, but I will tell you that it is great to learn from others. , but it is also refuted and impure. Which kung fu are you best at? What martial arts do you use to deal with Guo Jing and his wife?". Yes, my knowledge is very broad, and I may have heard of various application framework new technologies, but which one am I best at? Although I deeply know that I am best at Scala and Akka, Play, Lagom, etc., but no one will ask TT.

At this point, although I am as handsome as Yang Guo, at this time I have to think about sorting out what I have learned in my life, find out my strengths and weaknesses, and then target them during the interview. So a week after the first warm-up interview, I was basically sorting out my knowledge structure. I made a mind map roughly according to the following structure:

1. JVM related

Runtime Structure GC Algorithm JVM Tuning

2. Programming language

Java scale

3. Data Structures and Algorithms

Table, Stack, Queue Tree Hash Priority Queue Sort Advanced Data Structure

4. Concurrent programming

Java Memory Model Basic Tools Lock-Free Concurrency Reactive Tools

5. Microservices

Microservice Design Service Governance

6. Middleware

Distributed cache message queue RPC

7. Database

Relational database NoSQL NewSQL

8. Machine Learning Algorithms

Recommendation algorithm

Among them, JVM, Scala related, concurrent programming, message queue and so on, I have carefully written it; Java language is too simple to do, and after a little look at the data structure, I feel that the memory that has been dusty in my mind for a long time is suddenly awakened, so I also I didn’t take notes, I was too familiar with microservices, and the recommendation algorithm was too difficult, so I didn’t get it; there was too much database-related content, so I didn’t get it. But generally speaking, the index structure is here. After you get xmind, you can complete or modify it according to your own knowledge structure system, and then learn from time to time. You can even look at it a little to deepen your memory before the interview.

After that, I had a second interview. In fact, the questions related to the second interview technique are not too big of a problem. The main test for me is the things related to speaking skills. There is something wrong with me. I think too much and want to do too much. These are not really big problems, but I also like to talk to people about things I am not sure about, regardless of the occasion. For example, I met with the middleware team, but when I finally interviewed, I said that I was interested in deep learning because of the recommendation algorithm I worked on before, and I wanted to take an on-the-job postgraduate study this year to learn deep learning. But actually, what am I talking about at this time? Are your brains a little twitchy? And he asked me a question about handwritten code, which I couldn't figure out after thinking about it for a long time. The question is how to calculate the value of the square root of 2. My first reaction was fast, Newton iteration method! But when he told me to write the code on paper, I kept trying to find a way to remember what the Newton iteration method was and how it should be used to calculate the square root of 2. Then I kept deducing the derivative on paper... until he reminded me that this is not a math problem and that it can be calculated by binary search, I reluctantly started to write binary search (inner OS: Newton iteration is definitely better than binary search! Why don't you give me time to recall Newton iteration!). At this time, another problem was exposed to me. I haven't handwritten code for a long time. When I don't have an IDE, I'm basically nothing... After writing for a long time, I reluctantly got a version out, and it's probably not bug free. Therefore, in the end, the company's offer did not get it. Hard work for me to recommend the general frame.

After that, I came to know a few shortcomings of my interview. The first is to speak appropriately, and not to talk about topics that are not related to the interview; the second is that I have to practice handwriting code. It is not necessary to brush the question, but you must be able to at least write a general outline of what you are asking.

ByteDance interview experience

Bytes I actually interviewed for two positions. The side of the first position felt very good, the interviewer was very friendly, the questions asked were also in place, and then there was a lot of room for me to play, so it went smoothly. When we were on the second side, we couldn't talk a little bit, and the more we talked, the more I felt that the position was not suitable. So later, a friend helped me re-promote a position, which is the data platform department where I am now. The interviewer on one side was young, tall and handsome, and basically asked questions about my resume. Of course, when the first question asked me to talk about Akka, I was really dumbfounded. Don't play cards according to the routine at all! I've never met anyone who would ask me for Akka! ! ! How could anyone ask me Akka! ! ! After a burst of ecstasy and excitement in my heart, I cleaned up my mood first, and slowly sorted out the Akka characteristic that kept jumping and raising my hand in my mind and shouting "Tell me about me". So let’s start with the thread model, and talk about its M:N essence, the message passing mode that the Actor model relies on, the supervisory responsibility of hierarchical division, the failure handling of its collapse, the horizontal expansion supported by the Akka cluster, etc. etc. Then I asked some small questions around Akka, which basically went smoothly. Later, I asked about cache-related content, and it mentioned a problem of cache avalanche. I didn't respond for a while. The problem is actually very simple, that is, there are suddenly a bunch of requests to access the same key, and this key does not exist in the cache. In this way, all requests will access the database at the same time and then update the cache at the same time. How should such cache avalanche effect be solved? This question sounds very familiar, very familiar, but at the time, my head was short-circuited and I didn't remember it. Later, I remembered that Akka-Http-Caching (formerly Spray-Caching) was specially designed for this situation. What foreigners say is that this kind of problem is called the thundering herds problem, which is that many requests access the same key together before the first request is completed (This approach has the advantage of taking care of the thundering herds problem where many requests to a particular cache key (eg a resource URI) arrive before the first one could be completed. ). The This approach mentioned in the documentation refers to when caching, do not cache a value, but a Future[T]. In this way, the process of the first request to get the value is also cached. Subsequent requests will access this Future, and then you can register a callback with it and wait for the cache action to complete before completing the callback. Of course, it's okay if I didn't answer this very well. Later, I asked me something about JVM, and finally I wrote an algorithm question by hand. Then it passed smoothly.

After that, I basically asked about my resume. I talked about the principle of the recommendation algorithm I did at that time, talked about the basic principle of Spark, and finally did an algorithm problem, and then I passed it smoothly (in fact, there are also Some other questions, but I forgot what to ask...). Of course, the implementation of this algorithm problem is not the best. The content of the topic is the addition of hexadecimal. In fact, it involves the addition and subtraction of single characters and the processing of carry. In this way, it is necessary to deal with a lot of details in the implementation, and it is very possible to make mistakes. So I took a trick, I first converted the alphanumerics into integers, then added and subtracted integers to get the result, and then converted the result into hexadecimal characters. Although the result is not optimal, because the number will definitely overflow. But at least it was made, so the two sides went smoothly.

When I was on the third day, I also asked some related questions around my project, so the answers were quite bland, but it was okay. Then he asked me how to do flow control. Ask me about flow control! ! ! Then, I forcibly suppressed the joy in my heart and talked about the content of flow control in Chapter 16 of "Reactive Design Patterns". Maybe it gave me such a space to play, so I passed the third side smoothly. It didn't take long for the HR interview to roughly talk about some non-technical issues.

I'm pretty good at HR. At that time, I felt stable after the interview, but I haven't communicated with me about the offer after waiting for a long time. I felt a little uncomfortable waiting... After that, HR contacted me and said that they would give me an additional interview, saying that the team boss wanted to meet me. . Originally, the byte interview was generally 3+1, and then the sudden interview made me feel a little nervous, so the later interview was not as good as the previous one. In fact, in retrospect later, I may have thought that I did not perform well in the previous interview and could not confirm the offer for me, so there would be more interviews later. So I was in a bad mood at the time, and I didn't feel as decisive as before. Later, after the fifth session was over, the team boss was still not sure, and a cross-interview would be added. At this time, I gave it my all. It doesn't matter, it doesn't matter if it's not on the face, anyway, ByteDance is next to my house, as long as the temple doesn't move, I can get in. So the last time I chatted with the leader next door was relatively better. The question didn't ask anything special, just asked me carefully about a project I've done recently, where are the advantages, where are the disadvantages, and where are the difficulties. Then follow the difficulty to expand, why is it difficult, how to solve it, what solutions are there, and what are the advantages and disadvantages of these solutions. Fortunately, I usually think about work, so the final answer is not bad. So finally around June 10th, HR and I are sure to make an offer.

Experience summary

The entire interview process, if you add the unsuitable positions before, will have a total of 8 interviews, with a span of more than one month. Then today, I finally got hired. It's still a bit long. If you add the previous two warm-up interviews, it may span nearly two months. To be honest, I am not the kind of engineer that others like at first glance. Because I have been working on a small structure in a small company, and the main programming language is relatively unfamiliar, the scope of positions suitable for me is relatively narrow. I actually looked at two projects related to my work today, one go, one python, my scala skills may be wasted for a long time in the future... but that's ok, it's close to home and out of the comfort zone Looking at other landscapes, I feel like it's a good thing for me too.

In the end, why I succeeded in ByteDance? First of all, my foundation is actually OK. Although the interviewer in the second interview felt that my foundation was not good, in fact, when I went deeper into the content, I put my ideas and structure. , The ins and outs are clear and clear, so even if you forget, you can quickly put it into the system and understand it thoroughly; secondly, I have my own fist product, so I don’t need to ask in the interview, once I ask about Scala, Akka, Play, When Lagom or the reactive architecture can be involved, as long as Jiahe and Pinshen are not in this street, I will be the most handsome boy in this street! ! ! In the end, I know why I want to go to this company, and even if I don't go, there is no big loss, so I can be neither humble nor arrogant during the interview, and I will be calm, so I can perform well. Besides, the company is right next to my house anyway, so I didn't have a face-to-face this time, so I'll meet again in a while.

These experiences are converted to your side: if you say that your foundation is not good now, I will say it’s okay; but if you still tell me that your foundation is not good one year, two years, or three years later, do you need to reflect on yourself? Woolen cloth? If you say that you don't have a fist product now, I'll say it's okay; if you still don't have a fist product in a year, two, or three years, then what's the use of reading my article? Then the mentality problem may need to be adjusted by itself. As long as you have the foundation, you have a high level, and then come to the interview calmly, I believe that you will definitely be successful in the interview.

{{o.name}}
{{m.name}}

Guess you like

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