Golden nine silver ten: byte three-sided warp at the front end of a year

Time:2022-1-3

background

Recently, I also wrote an article in naked CIGolden nine silver ten: Interview sharing at the front of the year, after many days,Finally summoned up the courage to resume the interview, the reason why the byte face is written separately,Because you really need to know some big factory interview experience in advance, the problem this time isLack or no interview experience in large factoriesSo, to summarize it separately,Avoid making such mistakes again in the future

process

Next, let’s describe it in as much detail as possibleOne, two, three interview scenesFor students who lack interview experience in large factories, make a reference

Interview cycle

Listen to othersThe interview is very efficientBut the situation I encountered was different,One, two, three sides took about a monthAt the end of the second meeting, I knew I should have passed,Then he specially asked the interviewer to urge HR to speed up the progress, ha ha, because the cycle of one month is too long,It's hard to keep the interview going all the time

Byte plane warp

one side

The interviewer will first introduce yourself, which group and position you belong to, and then ask you to introduce yourself first according to the interview routine. Generally, I think this time period is the interviewerTime period to get to know you and read your resume, so my introduction is usuallyIntroduce yourself from a certain company and what position you holdBe familiar with XX technology stack and be proficient in XX technology stack,Then briefly introduce the contribution and output of the community(about a minute)

Then the interviewer opened a series of interviewsSoul torture

  • Interviewer: you wrote the component library project on your resume. Let’s introduce your component library

  • Me: first, I said that the component library was built with create react app, but I felt it was too cumbersome. Then I built one myself and introduced itTechnology stack used in component library, supportedThree module modesOn demand loading functionCustom theme color functionConfiguration of tsconfig,Commit specification and code format specificationwait

  • Interviewer: it turns out that your component supports three module specifications. How do I know which modular component to import when I import the component

  • Me: at first, I didn’t respond to what the interviewer asked, ha ha, but soon I thought of package Main field of JSON

  • Interviewer: you use ts in the component library. How do I reference your declaration file when I use the component library

  • I answered package JSONtypingsAt that time, I couldn’t say it because I was nervous. Fortunately, it was a video interview on Niuke. I directlyThe hand came outHa ha ha

  • Interviewer: for example, I want to make it clear that the introduced module is our actually written class, but why is it an error when promptedTS type declaration

  • Me: the answer I thought of at that time was that TS was actually used for the IDE, but we still used our class when we actually run the code dynamically. Then we simply summarized it in a sentence ts, which is very intelligent. I remember asking for advice at that timeSSH boss

  • Interviewer: tell me about the on-demand loading of your components

  • Me: by supporting the ES module,This module simply compiles Babel into Es5 syntaxHowever, the import export field is not compiled, and then package JSON declares the sideeffect field to declare the side effect file to prevent it from being dropped by tree shaking. In the project, we can use the tree shaking function of the packaging tool to load on demand

  • Interviewer: how do you load styles on demand?

  • Me: I couldn’t remember at first, and then the interviewer prompted mebabel-import-pluginAt this time, I remembered that I explained to the interviewer that I would not introduce styles into my components, but would process less files separately based on GLUP streaming construction. The advantage of this is to supportbabel-import-plugin

  • Interviewer: how about the specification of your component library?

  • IntroducedEslint, (by the way, why not choose tslint)prettier, and the commit specificationgit-hook, it will be checked and formatted before submission

  • Interviewer: how does your component library support TS

  • I: provide two copies of tsconfig, especially buildconfigJust export the declaration file for use, and will not compile our code

  • Interviewer: how to do version number management?

  • Me: I forgotSemver version specification(semantic specification) this specification, I told the interviewer that there was a se specification, by the wayExplain the usage scenarios of large, medium and small version numbers,Just muddle through, ha ha ha

  • Interviewer: reference your component library locally for development and show how to support it

  • I: after packaging, the dist file is introduced through the relative path, and the example service is provided internally

  • Interviewer: is there any other way

  • Me: I really don’t understand,Show a cute new look for advice, the interviewer mentionednpm linkAfter that, I asked other big men. I really know nothing about myself,It is estimated that this question was finally asked, and the interviewer ended the question of component library, ha ha

  • Interviewer: he wants to give an example of the crackling of a TS scene, trying to lead to a concept, but he can’t explain it clearly. Later, he simply says you knowgeneric paradigmAre you? (in fact, I knew what he was going to ask at that time, but I couldn’t interrupt the interviewer)

  • Me: I explained why generics are used. Before using generics, you must first support generics,For example, generic interfaces, generic classes, and so on

  • Interviewer: next, let’s ask some basic questions. I gave an example. If you don’t listen carefully, you’re a little confused. The next step is to ask(How do I get a constructor through an instance

  • Me: it’s very simple. The constructor attribute of the prototype object (try to type it out by hand on niuke.com,I basically type out every question I answer,But this skill is locked in three sides. Hahaha, look down

  • Interviewer: talk about the principle of inheritance

  • Me: I analyzed several principles in detail, then looked at the essence through the phenomenon and analyzed it to the interviewer. In fact, it was formed by a series of combinations with the help of call or prototype chain, and finally wrote thisextend

  • Interviewer: you see, the extend principle uses object Create, please implement it

  • Me: it’s very simple. It’s written in three or two times. By the wayObject.create(null)

  • Interviewer: keep your eyes on your resume for a few seconds and start asking, did you realize the virtual list technology used in your project?

  • Me: there are ready-made wheels outside, which can be used directly. Then I told him about the source codeFixed height and non fixed conditionHow

  • Interviewer: tell me about the principle of browser caching?

  • Me: I simply talked about strong caching, negotiation caching and scenarios(e.g. webpack file fingerprint Policy), the player hit the corresponding request header in niuke.com

  • Interviewer: what CSRF attack?

  • I: explained the concept and essence of CSRF, and then said several solutions: Cookie samesite and csrftoken

  • Interviewer: how to get csrftoken and where to save it?

  • Me: if you get it, you can get it from the page returned by the server. Where is it stored? I thought it was in localstorage, because it would still be stored in the cookieAutomatic carry over

  • Interviewer: I think there’s still time. Let’s have a handwritten question

The JS current limiting scheduler is implemented. The method add receives a function that returns promise, and the number of tasks executed at the same time cannot exceed two

class Scheduler {
    async add(promiseFunc: () => Promise<void>): Promise<void> {
    }
}
const scheduler = new Scheduler()
const timeout = (time) => {
    return new Promise(r => setTimeout(r, time))
}
const addTask = (time, order) => {
    scheduler.add(() => timeout(time))
        .then(() => console.log(order))
}
addTask(1000, 1)
addTask(500, 2)
addTask(300, 3)
addTask(400, 4)
// log: 2 3 1 4
  • Me: No, I feel cool after talking about my ideas. Ha ha, I waited a long time before I received a notice (the person who pushed me said maybe this is a bonus question)

❗ So far, I have experienced a round of interview and feel it difficult. It is absolutely impossible to grasp the overall knowledge,Also praise the interviewer on one side

Two sides

After a long time, I received the invitation from two sides. The interviewer on both sides started with the same interview routine

  • Interviewer: what are the highlights of your project?

  • I: I talked about webpack, including how to encapsulate the APIs library, how to introduce ts for iteration in large and old projects, etc. I should be satisfied with the interviewer’s response

  • Interviewer: what’s the difference between react and jQuery?

  • I: I talked about the concept of data-driven view, and then the optimization of virtual Dom and diff algorithm. I blew a lot

  • Interviewer: what about virtual Dom and diff algorithm?

  • Me: I said I was familiar with Vue. Can I talk about Vue? The interviewer said yes, and then clattered a lot. It was over

  • Interviewer: what’s your understanding of fiber?

  • Me: about what problems he solved, and then said he hadn’t seen the underlying source code of react

  • Interviewer: what’s the difference between function components and class components?

  • Me: it’s OK. I also said a lot, but I didn’t mention the key this. Then I asked the interviewer. At that time, I really thought of it and didn’t say it. Then I explained to the interviewer why it was like this. It was also introducedClosure trapThis concept

  • Interviewer: TS how do I declare a global module?

  • Me: I don’t quite understand this meaning. I said declare(It should be wrong. This problem is the beginning of three nightmares. Continue to read it)

  • Interviewer: are you familiar with the event cycle? Let’s do a question and explain it to me

  • Me: I didn’t get into the state at the beginning. I made a mistake when explaining. Then I looked at it calmly and answered the order correctly. Then I explained it systematicallyevent loop

  • Interviewer: let’s continue with the questions. Please look at the following

  • Me: at firstSliding window solutionBut I couldn’t write it in half. The interviewer guided me. In fact, I couldn’t understand his explanation at that time. Calm down and I’ll use itDynamic programming solves, alas, I didn’t brush much on my own algorithm. Fortunately, I did it

  • Interviewer: let’s continue to write the question. It’s a relatively simple question

  • Me: I’m so immortal. I forgot how to write it. Finally, I wrote it by debugging. During this period, the interviewer quietly watched me debug. Ha ha, ha ha, very nice

  • Interviewer: do you have anything to ask?

  • Me: then I reflected the slow progress of the interview and asked him to speed up the progress with HR feedback. Ha ha, the interviewer is very good,But I feel that speeding up the progress is also the beginning of stepping on the pit

Three sides

After the second meeting, I was very happy to say it should be. Then I did receive a call the next day. It was originally agreed that it would be next week. I asked to push forward (HR responded that the interviewer was not available these days, and then tried to arrange it for me). After that, I felt a little bad. After all, it could cause trouble to the interviewer. After all, they were busy. Later, they thought more and more disorderly, When I asked the brother who pushed internally, he encouraged me not to think too much. Generally, the three sides will not hang up casually. Moreover, the three sides generally ask more projects, and the problem should not be big

At that time, I also thought that the three sides asked most about projects or chatting about other aspects,But be careful, I have prepared bothBut the results were unexpected,The interviewers on three sides are female interviewers. They are leaders and have a strong auraAt the beginning, I didn’t follow the interview routine of one or two sides. I asked about the highlights of the project directly

  • Interviewer: name two highlights of the projects you have done?
  • Say the answer according to one or two sides (Interviewer: questioning face)
  • Interviewer: your library package uses promise. Write promise by hand All
  • Me: it’s handwritten (the interviewer said yes?), I was so nervous that I forgot to write test cases. I could wait for a while. Ha ha, but later I went to see the answers. It’s exactly the same (enenen… Curious about why to question)
  • Interviewer: how do you optimize your webpack
  • Me: it’s very systematic to analyze both speed and volume (scheme) and actual project analysis (very uncomfortable. The interviewer questions the whole face every word)
  • Interviewer: after a pause, I asked the second side how to declare the global module?
  • Me: it’s cold. I didn’t make a timely reply. In fact, when she asked this question, she obviously answered wrong`
  • Interviewer: let’s continue with the handwritten question (algorithm question: matrix sequential printing)
  • Me: I haven’t done it. I have some ideas, but I can’t write it. This time, the atmosphere is very depressed. It seems that my adaptability doesn’t work, and then I talked about my ideas
  • Interviewer: OK, that’s it. Is there anything you want to ask?
  • Me: No. (knowing that I hung up, the interviewer turned off the video, and I stayed where I was at a loss. Hahaha, bye, I didn’t have time to say)

The expectations of the three sides are very different from the reality,After the meeting, the whole confidence disappearedunable to get up after a fall

After the interview

I smoked hard after the interviewSlap yourself three timesWell, I didn’t do well. I just finished the last question. After checking, it was a simple question of leetcode. In the final analysis, it was the unsystematic learning of my algorithm and data structure, and then my mood was the feeling of competition (the feeling of 3-1 being turned over, refer to Nuggets vs clippers). However, generally speaking, the interview experience on three sides wasHigh pressure interview, every word you say,I could see the rich expressions on the interviewer's face. I bowed my head and answered. I didn't dare to look directly at himActually, think about it in a different place,Each interviewer has his own style, you can carry it under this pressure,That's really strong pressure resistance. It's a plus point,Another point is to resume the offer in timeThis is a lesson. There's no wayTherefore, it is summarized as follows:

  • Adapt to the interviewer’s style, knowledge system and systematic learning
  • It’s important to resume the offer in time ❗ ️ ❗ ️

summary

The job search stage has ended, and the author has successfully joined 360 finance,The following articles will not send similar non-technical articles like face-to-face classics, we have to settle ourselves and strive to export to the communityHigh quality and in-depth articles(don’t hit me, hahaha). In addition, my study notes have also received feedback from many colleagues10-200 appreciationI’m very happy. Of course, facial classics also need hard core content. Our company also has HCNeed to push the resume to me to follow up the progress in real time

Thank the fans for their appreciation

Hahaha, this is the biggest red envelope received. Thank youLeader Li YiweiAppreciation of

Notes and resume

❗ The notes were praised by many students and praised by many students. I’m very happy. Ha ha, the next preface meetingContinuous update, because two or three series are not very systematic,Such as data structures and algorithm series(no time to prepare, hahaha)

Online notes

Recently, I took some time to sort out my notes on YuQue, which is convenient for students to read:YuQue note entry

YuQue note entry

Why is golang’s logo

Answer my doubts, ha ha, because I like the language of golang. I found this logo after looking for it for a long time, ha ha

Push in

360 finance here in Shenzhen, recruit H5 development engineer, resume to find me push, ha, contact way can be added above WeChat official account and I get.

last

Comfort yourself:Fate has not come, work hard

Recommended Today

How to debug the trial version of SAP ui5 application running on mobile phone on desktop computer

A set of step-by-step learning tutorials for SAP ui5 beginners Tutorial directory Establishment of SAP ui5 local development environment One of SAP ui5 application development tutorials: Hello World SAP ui5 application development tutorial 2: bootstrap of SAP ui5 boot process SAP ui5 application development tutorial 3: start touching the first SAP ui5 control SAP ui5 […]