Facebook software engineer interview: det enda inlägget du behöver läsa

öva 1-mot-1 med ex-intervjuare från Facebook. Läs mer.

Kodningsintervjuer på Facebook är verkligen utmanande. Frågorna är svåra, specifika för Facebook och täcker ett brett spektrum av ämnen.

den goda nyheten är att rätt förberedelse kan göra stor skillnad och kan hjälpa dig att landa ett mjukvaruingenjör på Facebook. Vi har sammanställt den ultimata guiden som hjälper dig att maximera dina chanser att lyckas.

här är en översikt över vad vi kommer att täcka:

  • Process och tidslinje
  • exempel på frågor
    • Kodningsintervju
    • systemdesignintervju
    • beteendeintervju
  • Förberedelsetips

1. Intervjuprocess och tidslinje

1.1 vilka intervjuer kan man förvänta sig

Vad är Facebook software engineering intervjuprocess och tidslinje? Det tar i genomsnitt fyra till åtta veckor och följer dessa steg:

  1. återuppta, följebrev och hänvisningar
  2. rekryterare telefonskärm: en intervju
  3. teknisk telefonskärm: en eller två intervjuer
  4. på plats: fyra till sex intervjuer

Låt oss titta på vart och ett av dessa steg mer detaljerat nedan:

1.1.1 recruiter phone screen

i de flesta fall börjar du din intervjuprocess med Facebook genom att prata med en HR-rekryterare i telefon. De vill bekräfta att du har en chans att få jobbet alls, så var beredd att förklara din bakgrund och varför du passar bra på Facebook. Du borde förvänta dig Typiska beteendemässiga och återuppta frågor som ”berätta om dig själv”, ” varför Facebook?”, eller ” berätta om din nuvarande dag till dag som utvecklare.”

om du kommer förbi den här första HR-skärmen hjälper rekryteraren att schemalägga dina första tekniska skärmar med en Facebook-ingenjör. En bra sak med Facebook är att de är mycket transparenta om sin rekryteringsprocess. Din HR-kontakt kommer därför att gå igenom de återstående stegen i anställningsprocessen och kommer också att dela med dig en användbar e-postlista som du kan använda för att förbereda.

1.1.2 teknisk telefonskärm

du går igenom en eller två initiala 45mins tekniska skärmar som vanligtvis händer via telefon. Dina intervjuare börjar med några beteendefrågor men det mesta kommer att spenderas på typiska kodningsfrågor (t.ex. datastrukturer, algoritmer etc.)

du använder en enkel online-kodredigerare utan syntaxmarkering eller automatisk komplettering för dessa telefonintervjuer (t.ex. CoderPad) och det är bra att vänja sig vid att använda en av dem i förväg.

slutligen, om du bor nära ett Facebook-kontor och verkligen är motiverad att gå med i företaget kan du be om att komma på plats för de första skärmarna. Din rekryterare kommer vanligtvis gärna att organisera detta för dig eftersom det är en bättre upplevelse både för dig och dina intervjuare.

1.1.3 intervjuer på plats

intervjuer på plats är det verkliga testet. Du brukar spendera en hel dag på ett Facebook-kontor och göra fyra till sex intervjuer totalt. Varje intervju tar cirka 45 minuter och täcker ett av följande ämnen:

  1. Kodningsintervju, där du löser allmänna kodningsfrågor som vanligtvis blir svårare än i den första tekniska skärmen.
  2. Designintervju, där du får en system-eller produktdesignfråga beroende på din bakgrund.
  3. beteendeintervju, där du kan förvänta dig frågor om din bakgrund, prestationer och motivation att arbeta på Facebook.

du får vanligtvis tre kodningsintervjuer, en designintervju och en beteendeintervju. Men som vi kommer att diskutera i nästa avsnitt kommer den exakta uppdelningen att variera beroende på vilken roll, lag och nivå du ansöker om.

utöver dessa intervjuer äter du också lunch med en medingenjör medan du är på plats. Lunchintervjun är tänkt att vara din tid att ställa frågor om hur det är att arbeta på Facebook. Företaget kommer inte att utvärdera dig under denna tid, men vi rekommenderar att du beter dig som om de var.

1.2 skillnader mellan nivåer och roller

processen vi har beskrivit ovan varierar något beroende på vilken nivå och roll du intervjuar för. Här är några av de vanligaste skillnaderna du kan förvänta dig.

1.2.1 Junior vs Senior Software engineers

förväntningarna för junior och senior engineers är olika.

om du är en nybörjar / junior ingenjör du förväntas göra mycket bra i din kodning intervjuer. Men du har vanligtvis bara en enda systemdesignintervju där prestationsfältet blir lägre än för fler seniorkandidater.

om du är senioringenjör måste du båda göra mycket bra i kodnings-och systemdesignintervjuer. Du kan också ha två systemdesignintervjuer istället för en i vissa situationer (t.ex. du ansöker om infrastrukturteamet).

1.2.2 enskilda bidragsgivare vs Chefer

Facebook har två karriärspår. Du kan antingen växa till en chef där du hamnar ledande team av ingenjörer (management track). Eller så kan du hålla dig väldigt praktisk tekniskt och specialisera dig när du blir mer senior (individuell bidragsgivare).

om du intervjuar som en enskild bidragsgivare bör du huvudsakligen förvänta dig tekniska intervjuer och kommer vanligtvis bara att ha en enda beteendeintervju.

om du intervjuar som chef, regissör eller högre bör du förvänta dig minst två beteendeintervjuer. Var beredd att svara på frågor om hur du utvecklar människor, arbetar med tvärfunktionella team, genomför projekt, växer en organisation etc.

1.3 Vad händer bakom kulisserna

din rekryterare leder processen och tar dig från ett steg till ett annat. Här är vad som händer bakom kulisserna i vart och ett av stegen som beskrivs ovan:

  • efter den tekniska telefonskärmen har intervjuarna du har pratat med 24 timmar att skicka in sina betyg och anteckningar till det interna systemet. Din rekryterare granskar sedan feedbacken och bestämmer sig för att flytta dig till intervjun på plats eller inte beroende på hur bra du har gjort.
  • efter platsen kommer de fyra till sex intervjuarna att rekommendera att anställa dig eller inte och rekryteraren sammanställer ditt ”paket” (intervjuåterkoppling, CV, hänvisningar etc.) Om de tror att du kan få jobbet, kommer de att presentera ditt ärende vid nästa kandidatgranskningsmöte.
  • Kandidatgranskningsmöten används för att bedöma alla kandidater som nyligen har avslutat sina intervjuslingor och är nära att få ett erbjudande. Ditt paket kommer att analyseras och eventuella problem kommer att diskuteras. Dina intervjuare är inbjudna att delta i ditt kandidatgranskningsmöte, men kommer vanligtvis bara att delta om det finns en stark oenighet i de Betyg du fick (t.ex. 2 inga anställningar, 2 anställningar). Om teamet efter diskussioner fortfarande inte kan komma överens om du ska få ett erbjudande eller inte, kan du bli ombedd att göra en uppföljningsintervju för att lösa debatten. I slutet av kandidatöversynsmötet görs en hyra / ingen hyra rekommendation för övervägande av Rekryteringsutskottet.
  • Rekryteringsutskottet inkluderar ledande ledare från hela Facebook. Detta steg är vanligtvis en formalitet och utskottet följer rekommendationen från kandidatöversynsmötet. Huvudfokus ligger på att finjustera den exakta nivån och därför ersättning du kommer att erbjudas.

det är också viktigt att notera att anställningschefer och personer som hänvisar till dig har liten inverkan på den övergripande processen. De kan hjälpa dig att få en intervju i början men det handlar om det.

2. Exempel på frågor

här på IGotAnOffer tror vi på datadriven intervjuberedning och har använt Glasdörrdata för att identifiera de typer av frågor som oftast ställs på Facebook.

för kodningsintervjuer har vi delat upp frågorna du kommer att ställas i underkategorier (t.ex. matriser / strängar, grafer / träd etc.), så att du kan prioritera de vanligaste i din förberedelse. För systemdesign och beteendefrågor har vi listat 10 exempelfrågor som ofta rapporterades på Glassdoor.

2.1 Kodningsintervju

Facebook software engineer intervjufrågor

Facebook software engineers löser några av de svåraste problemen som företaget står inför med kod. Det är därför viktigt att de har starka problemlösningsförmåga. Det här är den del av intervjun där du vill visa att du tänker på ett strukturerat sätt och skriver kod som är korrekt, felfri och snabb.

här är de vanligaste frågetyperna som ställs i Facebook-kodningsintervjuer och deras frekvens. Observera att listan nedan utesluter systemdesign och beteendefrågor som vi täcker i nästa avsnitt.

  1. matriser / strängar (38% av frågorna, vanligast)
  2. grafer / träd (29%)
  3. dynamisk programmering (18%)
  4. Sök / sortera (9%)
  5. länkade listor (4%)
  6. staplar / köer (2%, minst frekventa)

vi har också listat vanliga exempel som används på Facebook för dessa olika frågetyper nedan. För att göra dessa frågor lättare att studera har vi ändrat formuleringen för att matcha det närmaste problemet på Leetcode eller en annan resurs, och vi har länkat till en gratis lösning.

slutligen rekommenderar vi att du läser följande artikel skriven av en ex-Facebook-intervjuare för att förstå mer om steg-för-steg-metoden du bör använda för att lösa kodningsfrågor.

exempel kodning frågor från Facebook

1. Arrays / strängar (38% av frågorna, mest frekventa)

  • ”givet en array nums av n heltal där n > 1, returnera en array output så att output är lika med produkten av alla element i nums utom nums.”(Lösning)
  • ” med en icke-tom sträng s kan du ta bort högst ett tecken. Bedöma om du kan göra det till en palindrom.”(Lösning)
  • ” implementera next permutation, som omarrangerar siffror i lexikografiskt nästa större permutation av siffror.”(Lösning)
  • ” med en sträng S och en sträng T, hitta det minsta fönstret i S som innehåller alla tecken i T i komplexitet O (n).”(Lösning)
  • ” med tanke på en rad strängar strs, gruppera anagrammen tillsammans.”(Lösning)
  • ” givet en sträng s som bara innehåller tecknen ’(’, ’)’, ’{’, ’}’, ”, Bestäm om inmatningssträngen är giltig.”(Lösning)
  • ” givet en array nums av n heltal, finns det element A, b, c i nums så att a + b + c = 0? Hitta alla unika tripletter i matrisen som ger summan av noll.”(Lösning)

2. Grafer / träd (29%)

  • ”med tanke på noden root i ett binärt sökträd returnerar du summan av värden för alla noder med värde mellan L och R (inklusive).”(Lösning)
  • ” givet ett binärt träd, konvertera det till en cirkulär dubbelt länkad lista (på plats).”(Lösning)
  • ” implementera en iterator över ett binärt sökträd (BST). Din iterator initieras med rotnoden för en BST.”(Lösning)
  • ”med tanke på ett binärt träd måste du beräkna längden på trädets diameter.”(Lösning)
  • ” Serialisera och deserialisera ett binärt träd”(lösning)
  • ” med tanke på ett binärt träd, hitta den maximala sökvägen.”(Lösning)
  • ” med tanke på en sorterad ordbok (array of words) av ett främmande språk, hitta ordning på tecken på språket.”(Lösning)
  • ”kontrollera om en given graf är tvådelad eller inte ”(lösning)

3. Dynamisk programmering (18%)

  • ”med tanke på en lista över icke-negativa tal och ett mål heltal k, skriv en funktion för att kontrollera om matrisen har en kontinuerlig subarray med storlek minst 2 som summerar upp till multipel av k, det vill säga summerar upp till n*k där n också är ett heltal.”(Lösning)
  • ”säg att du har en array för vilken ith-elementet är priset på ett visst lager på dag i. Om du bara fick slutföra högst en transaktion (dvs. köpa en och sälja en aktie av aktien), utforma en algoritm för att hitta maximal vinst.”(Lösning)

  • ”med en inmatningssträng (s) och ett mönster (p), implementera reguljär uttrycksmatchning med stöd för '.' och '*'.”(Lösning)
  • ” du får en lista över icke-negativa heltal, a1, a2,…, ett och ett mål, S. nu har du 2 symboler +och -. För varje heltal bör du välja en från + och - som sin nya symbol. Ta reda på hur många sätt att tilldela symboler för att göra summan av heltal lika med mål S. ”(lösning)

4. Sök / sortera (9%)

  • ”vi har en lista över points på planet. Hitta K närmaste punkter till ursprunget (0, 0).”(Lösning)
  • ” med tanke på två matriser, skriv en funktion för att beräkna deras korsning.”(Lösning)
  • ” ges en rad mötesintervall som består av start-och sluttider ,,…] hitta det minsta antalet konferensrum som krävs.”(Lösning)

5. Länkade listor (4%)

  • ”en länkad lista ges så att varje nod innehåller en ytterligare slumpmässig pekare som kan peka på någon nod i listan eller null. Returnera en djup kopia av listan.”(Lösning)
  • ” ges en enda länkad lista L: L0?L1?…?Ln-1?Ln, ordna om det till: L0?Ln?L1?Ln-1?L2?Ln-2?…” (Lösning)

6. Staplar / köer (2%)

  • ”implementera följande åtgärder i en kö med stackar.”Obs: se mer information på följande länk. (Lösning)

2.2 systemdesign intervju

Facebook, Instagram och Whatsapp har alla 1 miljard+ månatliga aktiva användare. Facebook-ingenjörer måste därför kunna designa system som är mycket skalbara. Kodningsfrågorna som vi har täckt ovan har vanligtvis en enda optimal lösning. Men de systemdesignfrågor du kommer att bli ombedd är vanligtvis mer öppna och känns mer som en diskussion.

det här är den del av intervjun där du vill visa att du både kan vara kreativ och strukturerad samtidigt. I de flesta fall kommer din intervjuare att anpassa frågan till din bakgrund. Om du till exempel har arbetat med en API-produkt ber de dig att designa ett API. Men det kommer inte alltid att vara fallet så du bör vara redo att designa alla typer av produkter eller system på en hög nivå.

som tidigare nämnts, om du är en junior Utvecklare förväntningarna kommer att vara lägre för dig än om du är mid-level eller senior. Dessutom för vissa roller (t.ex. infrastruktur, säkerhet etc.) du kommer sannolikt att ha flera systemdesignintervjuer istället för bara en.

här är de vanligaste systemdesignfrågorna som ställs i Facebook-intervjurapporterna som finns på Glassdoor. För mer information rekommenderar vi att du läser följande guide om hur du svarar på systemdesignfrågor och övar systemdesignfrågor i den här kursen.Facebook Facebook: Facebook:

topp 10 systemdesignfrågor på Facebook

  • hur skulle du designa Instagram / Instagram Stories
  • hur skulle du designa Facebook
  • hur skulle du designa Facebook Messenger
  • hur skulle du designa Facebooks liveuppdatering av kommentarer på inlägg
  • hur skulle du designa en online-App för Facebook: samarbetsredigerare (t. ex. Google Docs)
  • hur skulle du utforma en Typehead-funktion (t. ex. Google search autocomplete)
  • hur skulle du designa Twitters trendämnen
  • hur skulle du designa ett distribuerat Botnet
  • hur skulle du designa ett system som kan hantera miljontals korttransaktioner per timme
  • hur skulle du designa säkerhet för Facebook: s företagsnätverk från början (Säkerhetsgruppsintervju)

2.3 beteendeintervju

Facebook-ingenjörer arbetar vanligtvis i tvärfunktionella team med andra ingenjörer, produktchefer, designers, dataanalytiker etc. De måste kunna kommunicera tydligt, arbeta effektivt med andra, bygga förtroende och relationer etc.

det här är den del av intervjun där du verkligen vill visa att du är bra på att arbeta med andra. Som vi nämnde tidigare, om du ansöker om en chefsposition eller högre, kommer du att ha flera beteendeintervjuer och även täcka ämnen som ledande lag, utveckla talang, hantera det dagliga, etc.

nedan har vi listat tio frekventa beteendefrågor som Facebook tenderar att ställa, enligt data från Glassdoor. För mer information, kolla in våra artiklar om hur du svarar på beteendeintervjufrågor och ”varför Facebook?” fråga.

topp 10 beteendefrågor ställda på Facebook

  • berätta om dig själv
  • varför Facebook?
  • berätta om ett nytt / favoritprojekt och några av de svårigheter du hade
  • berätta om den största prestationen i din karriär
  • berätta om en tid du kämpade för att arbeta med en av dina kollegor
  • berätta om en tid du var tvungen att lösa en konflikt i ett team
  • berätta om en tid du fick feedback som var konstruktiv
  • berätta om en tid du var tvungen att stiga upp och ta ansvar för andra
  • berätta om en tid du kämpade på ett av dina mjukvaruprojekt
  • berätta om din värsta chef och varför de var dåliga

3. Hur man förbereder

nu när du vet vilka frågor du kan förvänta dig, låt oss fokusera på hur man förbereder. Det är ingen hemlighet att prestationsfältet på Facebook är högt. Vissa människor går till och med så långt som att sluta sitt jobb för att förbereda sig för intervjuer på heltid.

detta är uppenbarligen extremt och inte vad vi rekommenderar att göra, men det visar hur mycket ansträngning vissa kandidater är redo att lägga in. Vi har listat de fyra stegen vi rekommenderar att du förbereder dig så effektivt som möjligt nedan.

3.1 Läs om Facebook: s kultur

de flesta kandidater misslyckas med att göra detta. Men innan du investerar tiotals timmar som förbereder dig för en intervju på Facebook, bör du ta dig tid att se till att det faktiskt är rätt företag för dig.

Facebook är prestigefyllt och det är därför frestande att ignorera det steget helt. Men enligt vår erfarenhet kommer prestige i sig inte att göra dig lycklig dag till dag. Det är den typ av arbete och de människor du arbetar med som kommer.

om du känner ingenjörer som arbetar på Facebook eller brukade arbeta där är det bra att prata med dem för att förstå hur kulturen är. Dessutom rekommenderar vi att du läser om Facebook: s 5 kärnvärden och hackerkultur.

3.2 öva själv

som nämnts ovan har du tre typer av intervjuer på Facebook: kodning, systemdesign och beteende. Det första steget i din förberedelse bör vara att fräscha upp dessa olika typer av frågor och att öva på att svara på dem själv.

för kodningsintervjuer rekommenderar vi att du läser följande artikel skriven av en ex-Facebook-intervjuare för att förstå mer om steg-för-steg-metoden du bör använda för att lösa kodningsfrågor i en intervju.

och för att öva rekommenderar vi att du använder Leetcode där du kan få mycket gjort med Gratisnivån och även få tillgång till Facebook-specifika frågor med premiumnivån.

för systemdesignintervjuer rekommenderar vi att du studerar vår systemdesignintervjuguide. Guiden täcker en steg-för-steg-metod för att svara på systemdesignfrågor och ger flera exempelfrågor med lösningar.

för beteendeintervjuer rekommenderar vi att du lär dig vår steg-för-steg-metod för att svara på denna typ av fråga. Dessutom vill du skriva ner dina svar på de vanliga beteendefrågorna som vi har listat i föregående avsnitt.

slutligen är ett bra sätt att öva kodning, systemdesign och beteendefrågor att intervjua dig själv högt.

det här låter kanske konstigt, men det kommer att förbättra hur du kommunicerar dina svar under en intervju och verkligen gör skillnad i vår erfarenhet. Spela rollen som både kandidaten och intervjuaren, ställa frågor och svara på dem, precis som två personer skulle göra i en intervju.

3.3 öva med kamrater

att öva själv tar dig bara så långt. En av de största utmaningarna med kodningsintervjuer är att behöva kommunicera vad du gör när du gör det. Som ett resultat rekommenderar vi starkt att öva live-kodningsintervjuer med en peer-intervju som intervjuar dig.

ett bra ställe att börja är att träna med vänner om du kan. Om du inte har någon i ditt nätverk som kan intervjua dig kan du också hitta kamrater att träna med på plattformar som Pramp.

3.4 öva med ex-intervjuare

den största fördelen med att öva med kamrater är att det är gratis. Men någon gång börjar du märka att feedbacken du får från kamrater inte hjälper dig så mycket längre. När du når det stadiet rekommenderar vi att du övar med ex-intervjuare från topptekniska företag.

om du känner en mjukvaruingenjör som har erfarenhet av att köra intervjuer på Facebook eller ett annat big tech-företag, så är det fantastiskt. Men för de flesta av oss är det svårt att hitta rätt anslutningar för att få detta att hända. Och det kan också vara svårt att träna flera timmar med den personen om du inte känner dem riktigt bra.

här är de goda nyheterna. Vi har redan gjort anslutningarna för dig. Vi har skapat en coachningstjänst där du kan öva 1-on-1 med ex-intervjuare från ledande teknikföretag som Facebook. Läs mer och börja schemalägga sessioner idag.

SWE Intervju Coaching

några frågor om Facebook Software Engineer intervjuer?

Lämna ett svar

Din e-postadress kommer inte publiceras.