This article is a reprint
Author: November de arrogant
Link: https://juejin.cn/post/7047706117584977934
Yesterday was my last day at Byte.
When I joined the company last year, I was thinking, how long will I stay at Byte, a year? Or two years? After all, "one year in bytes, three years in the world". Now the answer is revealed, one year and two months. Fortunately, it exceeds the "average tenure" of seven months.
In the past year, I participated in the Douyin Spring Festival project, which was closed and developed in Beijing for more than two months. I was responsible for the development of the Koi venue. I started the self-developed cross-end framework from scratch, and made a lot of performance optimizations to provide users with static Page-like smooth experience. I have also met many excellent colleagues, so I will not name them one by one.
During this year, I participated in maintaining the company-level Node.js framework, refactoring type generation, optimizing the TS development experience, and providing multiple CLI commands to assist development.
In the past year, I participated in the construction of the front-end R&D framework of Mutual Entertainment. Based on the front-end infrastructure and the back-end Node.js framework, I built the ability to integrate the front-end and back-end from scratch, so that the front-end and back-end can be developed, constructed, and deployed together. It can be used as Page Server or server-side rendering. The front-end can directly call back-end functions in communication, and no longer need to register routes. The function functions are enhanced through high-order functions and decorators. The stack development efficiency has successfully supported the Douyin PC version and many internal middle and backstage projects.
In fact, this year has grown quite a lot. Before coming to Byte, I only did PC-side business and H5. After coming to Byte, I did cross-end and Node.js. Moreover, the atmosphere of byte technology is also very strong, and various discussion groups can learn a lot of knowledge. The results of the two performance evaluations I have experienced are also good, I can be promoted, and the Byte, which is the peak of my entry, also has a salary increase. Everything seems to be developing in a good direction.
But I still had to leave, just when a headhunter asked me if I saw the opportunity. For me, the work of Bytes is not that good, and the various operations this year have made me more and more disappointed with Bytes. I also started to reflect on what else I could get out of this job, and how meaningful it would be to keep doing it. Once the idea of leaving a job arises, it will take root and linger. It will make me stop working crazy overtime and slow myself down. Looking back, I will find that I used to be quite "rolled", and looking forward it seems like an endless black hole. I started to turn inward, I started to get tired of the days when I could not see the sunset after get off work, I started swimming and fitness, and I also started a job-hopping journey.
The job-hopping was actually not smooth, because I didn't want to go to a big factory, so I aimed at startups or foreign companies. I started the interview at the end of October. The first company I met was chatting for an hour over the weekend and doing the written test questions, which made me feel pretty good. Next Monday, November 1st, I mentioned the idea of leaving with the leader. Doing something has more time to prepare for the interview. As a result, the 5th, which is Friday, gave me a flat salary. . In the afternoon, a company I really wanted to go to also died, because they don’t have a front-end, and they want to hire a front-end that is more business-oriented, who can play the role of product and UI, and I feel uncomfortable during the interview, so this week’s blow to me It's quite big, but fortunately, I can adjust the ability well, so I will continue to prepare well.
I did my first round of coding test on the weekend, the deformation of LeetCode 715. For hard, I usually read the solution directly, but the solution in other languages has special data structures. The solution of js has a good idea, but it is difficult to understand and No, I wrote a better understanding version based on his ideas, and added various test cases. I also did four rounds of written tests on the micro-strategy on weekends. The English part was the most difficult part. I had to do one multiple-choice question every minute on average. It wasted too much time to look up the words in the front. It went well.
The second week started with Lingsheng, a foreign company, and I was ashamed that Lingsheng just hung up. . At the beginning, after asking the project and asking about the scheme design, there are a series of js topics, macro/micro task execution sequence, what are the problems with a piece of React code, prototype chain, class, pure function, higher-order function, closure, design pattern, dependency inversion principle Wait, there are a few who didn't answer correctly, but I think it helps me a lot. First, this is also a process of checking and filling gaps, so I can know where there are shortcomings. Second, the design pattern makes me go back and read it again. Looking at solid, I feel that solid is a good theoretical support when refactoring is usually done.
I went back and prepared for a little while, and the next day we had a micro-strategy interview. There will be a self-introduction in English in each round of micro strategy. Write it in advance and memorize it. After three rounds, I feel that I have memorized it very well. In the first round of technical aspects, in addition to various normal problems and handwritten throttling, there are two algorithms. The first one did not find the original title, which is roughly to turn the right child node of the binary tree into the right child node of the left child node. At that time, I wrote A post-order traversal, and the second is to reverse the linked list, all of which were successfully written.
The second side was chatting. The HR side on the third side spoke English at the beginning, but then the vocabulary was really not enough, so I asked "Can I speak Chinese?" But in the end I hung up. HR said I didn't think about it, maybe they said something real .
I started two rounds of interviews at my next house on Friday. The first round was directly about algorithms, LeetCode 189 rotating arrays, but k can be negative. This is a condition added later. It will ask you if you have missed cases. This question may not think about the case where k is negative. I didn't brush it, so I wrote a more conventional and stupid method, and then I started to ask about the complexity and how to optimize it. At that time, I might not be sober, and it was all involved in the linked list (digging a hole), and then he took advantage of the situation. I asked how to do the rotating linked list (LeetCode 61), I have not done this, but I know it is a double pointer. So I continued to go back to the array, and I continued to think about optimization methods. I thought of a more efficient api and an in-situ adjustment order that did not take up extra space. In fact, they were all close to the answer, but I didn’t say the most critical point, and the time was up.
The second round of examination system design, first asked about the project, and then said that you have a good understanding of the back end, then let's design a short url system, open drawio and start drawing, draw everything I can think of, and then interview The official mentioned some conditions (upper left corner), how to implement these functions, how much storage is required for calculation, how to optimize the system, how to achieve high availability, and so on.
In the evening, I met DiDi again, and I picked it up when HR contacted me. It happened to be the former department of my colleague. It was said that it was not very good, but it was not given to me. Although I thought the meeting was not bad, the feedback said it was not suitable.
The weekend is simple and ready for the third week, starting from the third round of CTO interviews at my next house, but in the United States, so it is 9:30 in the morning, still talking about the project first, and then a classic question: from inputting What happened from the url to the rendering page, I talked about all aspects, and then started to go a little deeper. If there are multiple nodes in the world, how do DNS generally do, how to return to the nearest node, I have no idea about this, he also told me Speaking of implementation. HTTPS related, how to shake hands, how to verify certificates, etc. How to make the page rendering faster, the system said. How to do load balancing in the backend, I talked about the algorithms, rr, p2c, etc., and asked a lower-level question, I forgot what it was. Then he asked how to store user information such as balance, etc. I was very confused and didn’t know what to ask. If we talk about microservices, it is usually split, such as user center, transaction center, etc., and then he asked what kind of database to choose, SQL or NoSQL, I Speaking of SQL, the query is fast, he said it is strong consistency. The last algorithm to test, LeetCode 647 palindrome substring, let’s talk about the idea first, I said O(n^3) at the beginning, he asked how to optimize it, and prompted the characteristics of the next palindrome substring, I understood it, using symmetry The structure, extending from the middle to both sides, how complex is it? O(n^2). Okay, let’s write it, run the case after writing, if you miss a case, adjust it again, ok.
Then he added another round of interviews, saying that the first round was not very good, let the front-end face again, and another round of technical interviews on Thursday morning. He is a fast-handed front-end brother. It happened that they also did the Spring Festival project this year, and they were fast-handed. After quitting, we just went to the top, and we chatted, and then there were some js topics, curry by hand, and seeing that I wrote it very quickly, I added the algorithm, there is no original title. .
Let me exchange ideas while thinking. I said to see if there are any rules first, and found that there are no rules. He asked what to do if there were no rules. I said to solve it with violence. The case of n=100 was not considered at first, and it took a while. Finally, I asked how to solve this. The interviewer said that the double pointer is actually maintaining two queues and constantly taking the minimum value.
Finally, the co-founder face, at 7:00 in the morning. . At first, she also spoke English. She said that she was embarrassed to interview so early, and I was forced to show the Dafa of "Can I speak Chinese?", and came back to "there is a saying that getting up early is a foolish day, I guess today will be a foolish day". Then, from the time I went to college to talk to now, I feel that I have been asked all kinds of experiences. Finally, I asked a question, I asked how to learn English, and she said that they have an engineer who graduated from Yale and learned by watching dramas N-language stories, and then said that if you have any questions, you can send her an email, which made me feel quite cordial.
I made an offer in the second week, after a little a bit, I was quite satisfied, so I took it. There are other interviews that follow, so I won't go into details here. I feel that the biggest improvement in this job-hopping trip is to do the questions. Basically, I haven't encountered any questions that have been brushed, but I can do it, including the one that asked me to write numbers within 100 to Roman numerals:
In addition, HTTPS is a high-frequency question, which must be asked every time. Then you must first find a few interviews to get a feel for it, find out the gaps, and put those you want to interview later. In the end, I must not speak naked. The pressure is really great, especially since I still have a mortgage on my back. In fact, when I left two weeks ago, I hadn't decided where to go. It was just that some people said I was riding a donkey to find a horse. I felt that the face was almost mentioned, but fortunately, the final result was ok.
Conclusion!
I'm Lin Sanxin, an enthusiastic front-end rookie programmer. If you are motivated, like the front-end, and want to learn the front-end, then we can make friends and fish together haha, touch the fish group, add me, please note [Si No]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。