ios and android prospects! Sao Nian, your screen adaptation method should be upgraded, Dachang Mianjing Collection

basic situation

I am an ordinary undergraduate, Android development post.

This article is mainly a summary of autumn recruitment interview experience, and finally got offers from Baidu and Tencent.

It mainly includes three sides of Ali, four sides of Tencent, three sides of Baidu, three sides of Netease, and one side of Meituan.

Why do you want to go to ByteDance

In fact, this work change is not in my plan. It was just in April that I accidentally learned that Bytedance Shanghai was moving to the vicinity of Hechuan Road subway station, I was suddenly moved. Why, because my home is only a ten-minute walk from Hechuan Road Metro Station. I have a high reputation for treatment in the universe, that is to say, as long as I can come here, I can take two of the best money in my life and the impossible triangle of being close to home. So in May, I started quietly preparing for interview headlines. The purpose is to be able to live a life of getting up at 8:30 in the morning, and then slowly walking to the company not late (maybe one of the people who came early).

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

Because of this kind of mentality that I'm OK and I'm fine even if I don't show up, I feel that I played better during the interview. It is a process of mutual selection, and in this process, the company is relatively fixed, because his recruitment standards are unlikely to change much. Take an example that I often use to confuse people: I often say to others that for technical development, English is very important. You need English to see the latest technical documents, and some translations are not accurate, you may need to read the original text to understand what it means. Some people would tell me at that time, ah, it's a pity that my English is not very good. I will return at this time. It’s okay. It’s not your fault that your English is not good now, but if I ask you how your English is in a year or even two or three years, if you still tell me your English is not good, Then you have to check your own problem. 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 at this time, but it’s okay. As long as we know what other people’s requirements are, we should study hard and prepare well. We will interview again in one year, and interview again in two years. Try again after three or five years. It's okay. What people are most afraid of is not not achieving a goal, but not having a real goal. Therefore, before changing jobs, you have to think clearly why and start preparing in advance.

What have I prepared?

In fact, I haven't had a formal interview for a long time. When I switched from Shuyun to GIO three years ago, because the relevant technology on the resume was too matched, I basically talked to the CTO and determined it was over; later when I went back to Shuyun, I had a drink with the director. The coffee is back. That is, in about 5 years, I have not accepted an interview formally. So before I was ready to vote ByteDance, I voted for several companies and did a warm-up event. Remember, there is no need for psychological baggage at this time. Because the chances of successful interviews for their own candidates are relatively low, they are also happy to see a suitable candidate who can be interviewed, and in case you really want to change jobs, but your favorite company is not available, and the warm-up company gets it. offer, you can also consider looking at it. And you don’t have any psychological baggage at this time, because you are here for the interview anyway, so you may perform better during the interview, so maybe the final offer you get will be better than the one you want to go to. What?

Of course it doesn't include me. I was brutally abused TT during the first interview. When I participated in the middleware competition, I used netty to do the realization. Personally I feel that I have some understanding of netty. As a result, the interviewer asked me to directly write the source structure of netty, including the main classes and names, as well as the relationship between each other... I used kafka in the project I was working on. Let me make a message queue to buffer traffic and protect the system. As a result, let me directly describe the storage structure of Kafka... During the game, I used various means to make the program free of GC. As a result, I directly asked me to explain the principles and principles of various GC algorithms. Application scenario... We wrote KV for PolarDB competition, and the target was RocksDB. As a result, let me describe the index structure of RocksDB...

Of course, although basically I know everything he asked, and I know where the application scenarios are, but when it comes to the details, I am a little confused. Although I am sure that I can figure out every detail with a little look, but when I can't stand the interview, I can't open my mouth. At this time, it felt as if I had become Yang Guo when I was young. Suddenly a Golden Wheel Fa King appeared next to me and said to me: "Brother Yang, you have a lot of martial arts, but I rely on the old and sell the old to say that it is wonderful to learn from others. , But it is inevitable to refute impure. Which martial arts are you best at? What martial arts do you want to use against Guo Jing and his wife?". Yes, I have a wide range of knowledge, and I may have heard of various application frameworks and new technologies, but which one is my best? Although I deeply know that what I am best at is Scala and Akka, Play, Lagom, etc., but no one will ask TT if I can't stand it.

This is the end of the matter. Although I have been as handsome as Yang, but at this time I have to think about sorting out what I have learned in my life, identifying the strengths and weaknesses, and then aiming at the interview. So a week after the first warm-up interview, I was basically sorting out my knowledge structure. I roughly made a mind map according to the following structure:

  1. JVM related
    1. Runtime structure
    2. GC algorithm
    3. JVM tuning
  2. Programming language
    1. Scala
    2. Java
  3. Data Structures and Algorithms
    1. Table, stack, queue
    2. tree
    3. Hash
    4. Priority queue
    5. Sort
    6. Advanced data structure
  4. Concurrent programming
    1. Java memory model
    2. Basic tools
    3. Lock-free concurrency
    4. Reactive tools
  5. Microservice
    1. Microservice design
    2. Service governance
  6. Middleware
    1. Distributed cache
    2. message queue
    3. RPC
  7. database
    1. Relational Database
    2. NoSQL
    3. NewSQL
  8. Machine learning algorithm
    1. Recommendation algorithm

Among them, JVM, Scala-related, concurrent programming, message queues, etc., I have written carefully; the Java language is too simple and I didn't get it. I looked at the data structure for a while and felt that the long dusty memory in my mind was suddenly awakened, so also I didn't take notes, I didn't know the microservice-related information, the recommendation algorithm was too difficult and I didn't do it; the database-related content was too much, I didn't do 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 it from time to time, even before the interview, you can take a look and deepen your memory. (If you want to get my index notes, follow my official account and reply to "Knowledge Index" in the background.)

After that, I conducted the second interview. In the second interview, the technical-related issues are not too big a problem. The main test is related to my speaking skills. I have something wrong with me. I think too much and want to do too much. These are not really big problems, but I like to talk to people about things that I'm not sure about, and I talk to people regardless of the occasion. For example, I met a middleware team, but in my final interview, I said that I was interested in deep learning because of the recommendation algorithm before, and I wanted to take a job as a graduate student to learn about deep learning this year. But in fact, what am I talking about at this time? Is your head a little twitchy? And he asked me a handwritten code question, I thought for a long time but didn't figure it out. The question is how to calculate the value of the root number 2. My first reaction was quick, Newton's iteration method! But when he said that when I wrote the code on paper, I was always trying to remember what the Newton iteration method is and how it should be used to calculate the root number 2. Then I kept deriving the derivative on paper, what the hell... Until he reminded me that this is not a mathematical problem, and that binary search can be calculated, I reluctantly started to write the binary search (inner OS: Newton's iteration method is definitely better than binary search! Why don't you give me time to recall Newton's iteration!). At this time, I exposed another problem. I haven't written code by hand for a long time. When I don't have an IDE, I basically don't have anything... After writing for a long time, I reluctantly got a version out. It is probably not bug free. Therefore, in the end, the company's offer was not obtained. I have worked hard to recommend the general frame.

After that, I learned about the 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 up the questions, but you must be able to write at least a rough idea about what you ask. So I logged into the website AlgoCasts made by my friend Qiu Jia and personally, and watched his carefully recorded small video. Then followed the code. After that, I started looking for someone to help me push Bytedance.

Byte Beat Interview Experience

Byte actually I interviewed for two positions. The first position feels pretty good, the interviewer is very friendly, and the questions asked are quite good, and then I have a lot of room to play, so it went smoothly. When I was on the second side, I couldn't talk about it, and the more I talked, the more I felt that the position was inappropriate. So my friend helped me to re-post a position, which is the data platform department where I am now. The interviewer on the other 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 stuck. Do not play cards according to the routine at all! I have never met anyone who would ask me about Akka! ! ! Why would anyone ask me Akka! ! ! After a burst of ecstasy and excitement in my heart, I first cleared up my mood, and slowly sorted out the Akka characteristics that had been jumping in my mind and raising my hands and shouting "tell me, tell me". So let's start with the threading model, talk about its M:N essence, the message passing mode that the Actor model relies on, the supervision responsibilities of the hierarchical structure, the failure processing that makes it collapse, the horizontal expansion supported by the Akka cluster, etc. and many more. Then I asked some small questions around Akka, and it passed smoothly. Later, I asked about the cache-related content, which talked about a cache avalanche problem. I didn't respond for a while. The problem is actually very simple. Suddenly there are a bunch of requests to access the same key, and this key does not exist in the cache. So all requests will access the database at the same time and then update the cache at the same time. How should such a cache avalanche effect be solved? This question actually sounds very familiar, but I didn't think of it short-circuited at the time. Later, I remembered that Akka-Http-Caching (formerly Spray-Caching) was specifically designed to serve this situation. 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 document refers to when caching, do not cache a value, but aFuture[T]. In this way, the first request to get the value is also cached. Subsequent requests will access this Future, and then you can register a callback to it , and wait for the cache action to complete before completing the callback. Of course, I didn't get a particularly good answer and it was fine. I asked me some things about JVM later, and finally wrote an algorithm question by hand. Then it passed smoothly.

After that, the two sides were basically asked around my resume. I talked about the principle of the recommendation algorithm that I did at the time, and I talked about the basic principle of Spark. Then I finally did an algorithm problem, and then it went smoothly (in fact, there are still Some other questions, but I forgot what I asked...). Of course, the realization of this algorithm problem is not the best. The content of the subject is the addition of the 26 hexadecimal system. In fact, it involves the addition and subtraction of single characters and the processing of carry. In this way, the details of the implementation will have to deal with a lot of things, and there may be errors. So I took a trick. I first converted all the characters and numbers into integers, then added and subtracted the integers to get the result, and then converted the result into 26 hexadecimal characters. Although the result is not optimal, it will definitely overflow if the number is large. But at least it was done, so the two sides went smoothly.

On three sides, I first asked some related questions around my project, so the answers were quite plain, but it was okay. Then he asked me how to do flow control. Ask me flow control! ! ! Then, I forcibly suppressed my inner joy, and roughly 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 talk about some non-technical issues.

I'm quite satisfactory with HR. At that time, I felt stable after the interview, but after waiting for a long time, I have not communicated with me about the offer. I was a little uncomfortable after waiting... After that, HR contacted me and said that he would give me an interview and said that the boss of the team wanted to meet me. . Originally, byte interviews were generally OK with 3+1, and then the sudden addition of interviews made me feel a little nervous, so the subsequent interviews were not as good as the previous ones. In fact, when I recalled later, I might have thought that the previous interview performance was not good and I couldn't confirm the offer, so there would be more interviews later. So the mentality was not good at the time, and the answer was not decisive. Later, after the fifth side was over, the boss of the team was still not sure, and I had to add a cross-interview. At this time, I was willing to go. It doesn't matter, it doesn't matter if the face is not up. Anyway, the byte beating is next to my house. As long as the temple doesn't move, I can get in. So the last chat with the leader next door was relatively better. The question didn’t ask anything special, it just asked carefully about a project I’ve done recently, where are the advantages, where are the disadvantages, and where are the difficulties. Then follow the difficulties to expand, why is it difficult, how to solve it, what are the solutions, and what are the advantages and disadvantages of these solutions. Fortunately, I still think about my work, so I got a good answer in the end. So finally around June 10th, HR and I are determined to make an offer.

Share readers

In 2013, the author switched to Java for Android development. He has been in a small factory, and he has also been to a large factory such as Huawei and OPPO. In April of 2018, he joined Ali until now.

I have been interviewed and interviewed many people. I know that most junior and intermediate Android engineers want to improve their skills. They often grow up on their own. The unsystematic learning effect is inefficient and long, and it is easy to encounter the ceiling technology stagnation!

We have compiled a complete set of learning materials for Alibaba P7-level Android architects, which are especially suitable for in-depth learning and improvement for small partners with more than 3-5 years of experience.

Mainly include Tencent, and ByteDance, Alibaba, Huawei, Xiaomi, and other mainstream Internet companies such as mainstream architecture technologies. If you need it, just take it away.

Tencent T3 Architect Learning Special Materials

If you feel that your learning efficiency is low and you lack correct guidance, you can click to join the technical circle with rich resources and strong learning atmosphere to learn and communicate together !

There are many first-line technical experts in the group, as well as code farmers who are working in small factories or outsourcing companies. We are committed to creating an equal and high-quality Android communication circle. It may not be possible to make everyone's technology advance by leaps and bounds in the short term. In the long run, vision, pattern, and long-term development direction are the most important.

The 35-year-old middle-aged crisis is mostly caused by being led by short-term interests and squeezing out the value prematurely. If you can establish a correct long-term career plan from the beginning. After 35, you will only be more valuable than those around you.

In other words, vision, pattern, and long-term development direction are the most important.

The 35-year-old middle-aged crisis is mostly caused by being led by short-term interests and squeezing out the value prematurely. If you can establish a correct long-term career plan from the beginning. After 35, you will only be more valuable than those around you.

Guess you like

Origin blog.csdn.net/fanzhang_vip0723/article/details/114132774