Det perfekte tekniske interview. Tips fra Neil Roseman

  • Programmering,
  • Website udvikling
  • Der hældes meget smerte ud på internettet om mislykkede interviews. Nogle kunne ikke lide interviewernes spørgsmål, andre blev stødt af latterliggørelse, andre blev bedømt ud fra deres VKontakte-side. Interviewerne følger med ansøgerne og bander over, hvor dårlig personalesituationen er i disse dage, og hvilke dumme svar uerfarne programmører giver på deres vanskelige spørgsmål. tekniske problemer.

    Desværre er der ingen universelle regler for beståelse og afholdelse af samtaler, og det kan det ikke være, fordi medarbejderne ikke kun udvælges ud fra deres tekniske færdigheder og personlige egenskaber, men også ved at matche nogle (ofte implicitte og meget subjektive) "profiler", som iflg. til interviewere, passer ind i deres team eller virksomhed. Hvad angår guiderne fra serien "hvordan man passerer interviews korrekt", forårsager de normalt ikke mindre smerte i kommentarerne, fordi de er meget subjektive og er sikre på at røre ved nogens smertepunkter.

    I løbet af min professionelle karriere har jeg været på begge sider af hegnet, selvom jeg nok har været nødt til at lave lidt flere tekniske interviews end at bestå dem. Men i løbet af denne tid har jeg akkumuleret en række "fadser", der skræmmer mig væk under et teknisk interview og straks i mit sind sætter en stopper for den videre samtale. Det var det, jeg ville tale om - set fra interviewerens og ansøgerens perspektiv. Jeg vil straks tage forbehold for, at artiklen afspejler mine personlige subjektive indtryk og ikke foregiver at være en "guide til interviews." På den anden side er dette ikke et kortvarigt raseriudbrud fra et mislykket interview, men et langvægtet sæt af kriterier, der, omend på et negativt grundlag, giver mig mulighed for at luge ud i muligheder eller ikke at skræmme en potentielt egnet ansøger væk. Mig selv.

    Hvad irriterer eller stresser dig under interviews? Del i kommentarerne.

    Samtale set fra ansøgerens perspektiv

    Hver gang en programmør leder efter et job, skal han igennem mange tekniske interviews. Han går rundt på kontorer eller taler på Skype, løser problemer eller tager test, svarer på vanskelige tekniske spørgsmål, prøver at demonstrere sig selv med den bedste side. Han vurderer dog også selv de personer, der interviewer og tester ham, og tænker, at han i morgen potentielt skal arbejde sammen med disse mennesker. Og der er mange måder, hvorpå tekniske interviewere kan skræmme en kandidat væk fra en interessant stilling. Jeg vil fortælle om, hvad der altid har skræmt mig personligt, og hvad jeg forsøger at undgå som interviewer.
    1. "Hvilket andet teknisk interview?"
    Den første og vigtigste ting, der altid har alarmeret mig ved et teknisk interview, er dets fravær. Det sker, at hele samtalen med tekniske specialister - potentielt fremtidige kolleger - er baseret på spørgsmål vedrørende professionel erfaring: hvor han arbejdede, hvilke projekter han arbejdede på, hvilken funktion han udførte i dem. Med hensyn til teknologi eller viden - spørgsmål på niveauet "hvilken farve er lærebogen." Ved du, hvad en Message Broker er? Super, vi tager dig!

    Denne tilgang til interview har altid vendt mig skarpt mod en potentiel arbejdsgiver. De stillede mig ikke et eneste spørgsmål for at kontrollere, at jeg virkelig vidste, hvad jeg lavede. Det ser ud som om de personer, der interviewer mig, enten ikke selv forstår noget om emnet og leder efter mindst én person, der forstår, eller simpelthen er desperate og klar til at tage imod nogen. Jeg ville i hvert fald næppe have lyst til at arbejde i et team rekrutteret på denne måde.

    2. "Nå, hvad lavede du der i det..."
    Det er overraskende, hvor ofte afvisende holdninger til ansøgere forekommer under tekniske samtaler. Ja, måske er du en streng og erfaren programmør med en masse projekter under bæltet, du blev revet væk fra ekstremt vigtigt arbejde af hensyn til nogle unødvendige interviews med folk, hvoraf de fleste efter din mening er fuldstændig inkompetente. Men glem ikke, at du i øjeblikket repræsenterer din virksomhed og dit team, og en person vil helt sikkert foretage en vurdering baseret på din adfærd om klimaet i teamet, og hvordan de vil behandle ham i dette team. Vær høflig og respektfuld over for ansøgeren, selvom du fra de første fem minutter indså, at han ikke skulle have lov i nærheden af ​​din dyrebare kode.
    3. "Dit fornavn/efternavn/patronymnavn er skrevet forkert på dit CV!"
    Dette er slet ikke teknisk, men ikke desto mindre er det et almindeligt problem selv i tekniske interviews. Heldigvis har jeg et ret simpelt og almindeligt navn, og sådanne problemer er ikke sket for mig. Jeg ved dog, at der er overraskende mange mennesker, der fuldt ud tror på, at visse navne og endda patronymer simpelthen ikke eksisterer. De vil overbevise dig om, at det korrekte navn ikke er "Danila", men "Daniil", eller at der ikke er noget navn "Alena", men kun "Elena". De vil tilbyde at rette og skrive "korrekt" i deres dokumenter. Mennesker med sjældne eller usædvanlige navne, og tro mig, det er utroligt irriterende. Så der er en simpel regel: der er ingen sådanne navne, der ikke eksisterer. Skriv rigtigt som skrevet i passet. Vis respekt over for ansøgeren og opfatt ham ikke så dum, at han ikke er i stand til at kopiere fra passet til CV'et givet navn. Selvom du har mistanke om en fejl, kan du afklare dette på en mere taktfuld måde.
    4. "Hvor mange golfbolde ville der kræves for at rense alle de runde vinduer på en skolebus, der blev krympet til størrelsen af ​​et nikkel under evakueringen af ​​San Francisco og ikke brugt mere end 3 vejninger?"
    Ingen artikel om interviews ville være komplet uden at nævne brønddæksler. Du kan betragte dette som min personlige pointe relateret til manglende evne til hurtigt og under pres at løse ikke-standardiserede problemer. Men jeg er sikker på, at hjernevridere er absolut ubrugelige under interviews. Eller rettere, det er det fantastisk måde rekruttere en fuld afdeling af hjernevidundere med hjerneolympiaden, som vil udveksle friske hjernetrim hele dagen i stedet for at arbejde. Rigtig programmør i naturligt miljø livet, selv når han beskæftiger sig med meget fede og ikke-standardiserede opgaver, koder han stadig sjældent under pres, og bruger det meste af dagen på at sidde og roligt tænke i en forholdsvis rolig atmosfære over, hvordan han smukt kan skære koden i metoder. Han bruger aldrig sine "hjernemuskler" til at løse vanskelige problemer i denne proces.
    5. “Forkert. Yderligere."
    Det er naturligvis ikke interviewerens opgave at træne folk, der kommer til samtale. Men hvis ansøgeren ikke kunne besvare spørgsmålet, men stadig er interesseret, så er det et spørgsmål at tilskynde eller i det mindste pege ham på den rigtige løsning, før han går videre til det næste spørgsmål professionel etik, en demonstration af, at her vil de hjælpe ham, hvis der sker noget, lære ham og ikke lade ham være alene med tekniske problemer. Fortæl ham i det mindste et par ord, hvad han skal google, hvad han skal læse. Når alt kommer til alt, interesse for den rigtige beslutning opgaverne ligger i sig selv positiv kvalitet en teknisk specialist, og du bør ikke demotivere en sådan person ved at nedgøre hans fejl eller unøjagtigheder.

    Interview fra interviewerens perspektiv

    Hver gang en ny ledig stilling åbner, skal en førende specialist eller afdelingsleder gennemføre mange tekniske samtaler. Folk kommer til interviews med forskellig teknisk erfaring, uddannelsesniveauer og forventninger. For at gennemføre interviews skal du gennemtænke en samtaleplan, udarbejde en liste med spørgsmål og derefter forsøge at forstå ud fra svarene på disse spørgsmål, om personen er egnet til stillingen eller ej. Og nogle gange siger ansøgere ting under samtaler, der gør det umiddelbart klart - nej, du vil ikke være i stand til at arbejde sammen med denne person. Her er et udvalg af nøglesætninger fra ansøgere, der skræmmer mig personligt.
    1. “Nogle af dine spørgsmål er teoretiske. Jeg er ikke stærk i teorien, jeg er rutineret i praksis! Lad os lave en bedre test!"
    Ordet "teoretisk" udtales normalt med en afvisende konnotation, som om det var noget dårligt. Men det er ikke engang problemet. Tror du, at denne sætning blev indledt af interviewerens anmodning om at bevise Cauchys sætning? Give præcis definition tredje normalform? Slet ikke. Jeg hørte sådanne udråb som svar på følgende spørgsmål:
    • Hvordan er sammenligning med == forskellig fra sammenligning med ligemænd i Java?
    • fortæl os, hvordan hash-kortet fungerer.
    • Forklar med dine egne ord, hvad REST er.
    • Hvad er transaktioner, og hvorfor er de nødvendige?
    Ja, fra et bestemt synspunkt er ethvert programmeringsspørgsmål teoretisk, hvis det ikke kræver, at du skriver en kodelinje lige her og nu. Men jeg er sikker på, at en person med tilstrækkelig stor erfaring inden for et bestemt felt burde være i stand til at forklare de mest basale ting med egne ord, eller i det mindste ikke lade som om, at uvidenhed om dem er normal og naturlig.
    2. "Jeg havde ikke forventet den spanske inkvisition her! Det er ligesom at tage en eksamen på instituttet. Normalt spørger de bare, hvor han arbejdede, og hvad han lavede."
    Du er kommet til en teknisk samtale. I et teknisk interview vil du blive stillet tekniske spørgsmål for at teste dine tekniske færdigheder. Overlad testmetoden og valg af spørgsmål til interviewerens samvittighed – spørgsmålene virker måske ikke altid fyldestgørende for dig, men intervieweren ved præcis, hvilken information han ønsker at få om dig ved at analysere dine svar. Mange spørgsmål er nødvendige for ikke at teste din viden, men for at tvinge dig til at tænke og se på din tankegang. Husk også, at ikke alle spørgsmål kræver et helt præcist svar, og hvis du klart svarer på mindst halvdelen af ​​det, de spurgte dig, vil dette allerede gøre et godt indtryk.
    3. "Jeg behøver ikke at vide det, jeg er specialiseret i opgaver på højere niveau!"
    Forveksle ikke specialisering med uvidenhed om det grundlæggende i programmering. Fra udviklerne mobile applikationer Jeg har hørt lignende ting om TCP/IP-stackprotokollerne fra frontend-programmører - som svar på spørgsmål om sorterings- og søgealgoritmer. "Hvorfor skulle jeg vide det, alt er i standardbiblioteket, jeg arbejder på et højere niveau." Som svar på sådanne udsagn kom jeg for længe siden med et par små problemer med snigende skjulte algoritmer - i håbet om at vise, at en "naiv" løsning, udstedt af uvidenhed om algoritmer, ikke tåler kritik, og at kl. mindst tilskynde til selvuddannelse. Desuden er det ikke nogle kunstigt konstruerede opgaver, men ting der sker i udvikling hver dag. Enhver kode er en algoritme. Forståelse af grundlæggende algoritmer og datastrukturer er vigtigt for enhver programmør, og internetprotokoller er en base, uden viden om hvilken det er umuligt at skrive noget kompetent, der går ud over grænserne for en computer.
    4. “Og du selv! / Vis mig din kode! / Men jeg gik til din GitHub, og der er dette..."
    Det sidste, en interviewer ønsker, er at ansætte en person og derefter skal lytte til ham, der kritiserer sin kodebase. Ja, hun er højst sandsynligt ufuldkommen. Ja, teknisk gæld er overalt, og alle har det. I enhver kode er der noget at kritisere. Men hvis du virkelig anser dig selv for at være så sej, at du ser åbenlyse problemer i dine potentielle arbejdsgiveres kode, så oversæt dette til et konstruktivt positivt: Jeg ved, hvordan jeg kan forbedre mig, jeg har erfaring med dette emne, jeg kan være til gavn for dig.
    5. "Du tager fejl!"
    Alt kan selvfølgelig ske, men det er bedre at bevare din mening om, hvorvidt intervieweren tager fejl eller tvivler på sin kompetence, indtil interviewet er slut. Så Google det og find ud af, hvem af jer der havde ret. Et teknisk interview er ikke et sted for diskussion eller selvhævdelse, og spørgsmålene her er primært stillet til dig. Intervieweren vil ikke spørge om noget, han ikke selv forstår.

    Konklusion

    Ved du, hvad det bedste, jeg hørte fra ansøgere under samtaler? "Jeg svarede ikke rigtig, gjorde jeg? Kan du give mig et stykke papir? Jeg vil skrive dine spørgsmål ned og finde ud af det derhjemme, selvom du ikke ansætter mig, så ved jeg det i det mindste nu." Stolthedstårerne vælter frem i dine øjne - det var ikke forgæves, at du brugte halvanden time på en person, han lærte selv noget af dette interview. Selvom han nu er for svag til denne stilling, vil det måske tilskynde ham til at uddanne sig, og om et år eller to kommer han igen, viser sig fra sin bedste side og får et job - som det skete en gang i min egen karriere.

    Der er meget materiale på internettet dedikeret til interviews med HR-chefer, men næsten intet siges om forviklingerne ved interviews med tekniske specialister. Denne artikel er afsat til, hvilke kvaliteter og færdigheder en kandidat skal have for at bestå denne fase og modtage et tilbud i en IT-virksomhed.

    Dialog fra livet:

    Kandidat: Vi skal udføre operation "A", indtil betingelse "B" er opfyldt.
    Mig: Fantastisk plan. Lad os implementere det.

    Kandidaten skriver et for hver sløjfe. Selvom det er indlysende. Hvis en kandidat består dette niveau, vil han før eller siden blive en god programmør. Men 70 % af ansøgerne fejler her.

    Bogdan Gusev, tankstation

    Lad os rette denne irriterende misforståelse.

    while (bool tilbud == falsk)(

    Regel 0

    Hvis du skal til samtale til rollen som Java-udvikler, skal du have et godt kendskab til Java og relaterede teknologier

    //Ingen kommentarer.

    Regel 1

    Forbered dig til samtalen på forhånd

    Få på forhånd ud af alle mulige detaljer om projektet hos rekruttereren.

    Google-søgning efter spørgsmål, der ofte stilles i interviews. Nogle af dem vil helt sikkert støde på.

    Alexander Pitz, projektleder

    Regel 2

    Lyv ikke på dit CV

    At forsøge at bedrage ved at overdrive din viden er spild af din tid og virksomhedens tid. Du skal kunne svare på spørgsmål om alle teknologier, der står på dit CV.

    Et CV fyldt med søgeord, som du ikke har en ordentlig forståelse for, ødelægger dine chancer for at modtage et tilbud.

    Regel 3

    Afstem dine værdier med virksomhedens værdier

    Hver virksomhed har sine egne værdier. Et hold værdsætter dedikation og fokus på resultater og foragter som et resultat ikke overarbejde. Den anden er innovativ på arbejdspladsen og er villig til at lære og anvende innovationer hvert par måneder. Den tredje er pålidelighed og stabilitet: gennemprøvede teknologier, dedikerede mennesker, der ikke vil forlade virksomheden, hvis cookies pludselig forsvinder.

    Der er en acceptabel grænse for uoverensstemmelse mellem værdier, hvis overskridelse vil virksomheden højst sandsynligt beslutte ikke at afgive tilbud, selvom kandidaten har den nødvendige erfaring og den nødvendige tekniske viden.

    Regel 4

    Udvikle kommunikationsevner

    Jeg ønsker, at ansøgeren har bedre kommunikationsevner højt niveau end den grundlæggende. I vores tidsalder med fuldstændig agile kommer denne kvalitet frem blandt de nødvendige færdigheder. Kandidaten bør ikke have svært ved at kommunikere med HR- og tekniske specialister samt med kunder.

    Regel 5

    Forbedre dit engelsk

    I modsætning til ukritiske fejl i viden om enhver teknologi, vil du ikke være i stand til at forbedre dine sprogfærdigheder i løbet af et par måneder. Det tager år her. Derfor er et utilstrækkeligt niveau i engelsk i de fleste tilfælde en tilstrækkelig grund til afslag.

    En lille motivation: niveauet af engelsk og lønnen for Kyiv Java og .NET mellem- og seniorer med 3-5 års erfaring svarer.

    Regel 6

    Vis din passion for dit fag

    Ifølge Bogdan Gusev kan det faktum, at du nyder dit arbejde, indikeres af tilstedeværelsen af ​​Open Source-projekter, deltagelse i tematiske konferencer og beherskelse af tekstredigerings- eller IDE-funktioner. Og selvfølgelig interesse for detaljer videre arbejde. Programmører, der er ligeglade med deres arbejde, er ikke i høj efterspørgsel blandt arbejdsgivere.

    Regel 7

    Vis intelligens og abstrakt tænkning

    Kandidaten skal:
    - kunne løse problemer svarende til hans stilling;
    - kende det nødvendige programmeringssprog og rammer;
    - navigere i teknologierne i det projekt, han bliver interviewet til.

    Hvis stillingen er dårligt defineret, testes generel lærdom og intelligens, samt evnen til at tænke strukturelt og finde løsninger.

    Det er meget vigtigt at demonstrere evnen til at bruge din viden. Hvis du kender tilgange og metoder til at løse problemer og ved, hvordan du indhenter manglende information, så vil du være i stand til at klare de opgaver, du får.

    Regel 8

    Demonstrere et ønske om at få ny viden

    Nogle gange vil en kandidat sige: "Jeg har studeret teknologi X, og jeg vil kun arbejde med det. Hvorfor skulle jeg studere teknologi Y, hvis jeg kender X?" Chancerne for at en sådan kandidat får et tilbud er stærkt reduceret. Teknologier er bare værktøjer. Efter noget tid vil X blive irrelevant, og med det specialisten selv, som kun ved det.

    Maxim Kovtun, løsningsarkitekt

    Regel 9

    Vis resultatorientering

    jeg vurderer:
    - evnen til at gå på kompromis med ens "religiøse overbevisninger" (for eksempel, hvis en udgivelse kræver det, brug et "hot fix" i stedet for at nærme sig løsningen grundlæggende);
    - evnen til at insistere på egen hånd, når det er nødvendigt;
    - og endnu vigtigere - evnen til at opretholde den rette balance mellem de to punkter ovenfor.

    Andrey Mudry, projektleder

    Regel 10

    Sig ikke "jeg ved det ikke"

    Undtagelse: hvis du aldrig har arbejdet med denne teknologi, og den ikke står på dit CV. I dette tilfælde er det bedre at være ærlig og bede intervieweren om at forklare dig det rigtige svar.

    Hvis du ikke forstår, hvad vi taler om, så stil et opklarende spørgsmål.

    Hvis spørgsmålet er specifikt, og du ikke er sikker på svaret, så bør du indrømme det og være sikker på at gøre antagelser baseret på dine erfaringer. Forklar din tankeproces. Hvis spørgsmålet er åbent, er der ikke et enkelt korrekt svar.

    Det værste svar er stilhed eller "jeg ved det ikke." Du skal prøve at løse problemet, uanset hvor dum din løsning kan se ud. Selv det mest naive svar er bedre end ingenting. To eller tre svarmuligheder er generelt gode. Peber disse svar med overvejelser om deres anvendelighed og yderligere spørgsmål for at afklare problemet – og det vil være fantastisk.

    Alexey Kolupaev, tankstation

    Regel 11

    Vær ikke genert for at lære selv under et interview.

    Det er umuligt at vide alt. Jeg arbejdede engang på et projekt, der krævede viden om en ret specifik teknologistak og kartografi. Erfaring har vist, at få programmører kan konvertere den klassiske koordinatnotation fra WGS84 til decimalnotation. I sådanne tilfælde synes jeg, at et godt svar i et interview er spørgsmålet: "Kan jeg kigge på Google?"

    Artem Polyukhovich, CTO

    Regel 12

    Tænk over, hvad du siger som svar

    Du behøver ikke lade som om du er mentalt aktiv i et minut, men prøv at tænke på problemet så bredt som muligt. Desuden er der under interviews ofte trickspørgsmål.

    Det er godt, hvis kandidaten forsøger at "udlede" det rigtige svar på spørgsmålet. Han gætter ikke, men bruger sin eksisterende viden, samt logik, intelligens, opfindsomhed og evnen til hurtigt at træffe beslutninger under pres. Denne kvalitet er meget nyttig i en fleksibel tilgang til udvikling, når kunden har brug for det hurtig beslutning problemer, nogle gange endda under en onlinekonference.

    Sergey Chirkov, projektleder

    Regel 13

    Indrøm fejl du har lavet

    Evnen til at analysere og indrømme dine fejl indikerer, at du vil være interesseret i både din egen faglige udvikling og resultatet af et specifikt job.

    Regel 14

    Ødelæg ikke dit omdømme

    En mening om dig kan blive forkælet af et skødesløst svar på spørgsmålet "Hvorfor forlod du sådan og sådan en virksomhed?", desorganisering, at komme for sent til et interview uden varsel, nægte at beslutte sig prøve.

    Regel 15

    Opbyg et partnerskab med intervieweren

    Det forekommer mig, at i udtrykket "arbejdsforhold" fokuserer mange mennesker på "arbejde", men de burde lægge mere vægt på "relationer". I denne forstand ligner et interview en date: I ser begge nærmere på hinanden, finder ud af, om I vil have det godt sammen. Og når nogen prøver hårdt på at virke bedre, end de er, kan det være irriterende. Nogle gange kan en kandidat være så fængslende, at det er let at vende det blinde øje til selv alvorlige mangler.

    Alexey Kolupaev, tankstation

    Regel 16

    Opfør dig ordentligt

    "Korrekt" betyder høfligt, respektfuldt. Arrogance, inderlighed eller smiger over for intervieweren vil kun ødelægge indtrykket. Humor er heller ikke altid passende.

    Flere fejlslagne adfærdsmønstre kan identificeres:
    • Ven- flytter samtalen til et uformelt niveau for at undgå specifikke svar på specifikke spørgsmål.
    • erobrer- tager initiativet i egen hånd, taler højt og meget og lader ikke stille spørgsmål.
    • doven person- efter en times interview viser han, at han oplever reel pine - sådan en person vil næppe være i stand til at arbejde intensivt mere end 1 time om dagen.
    • arkitekt- opretter et stort antal ubrugelige klasser, inden der skitseres en løsningsplan. Som følge heraf kan den ikke selv drage fordel af sin egen "arkitektur".
    • teoretiker- den farligste type, klar til at kommunikere om ethvert emne, så længe han ikke er tvunget til at vise praktisk viden. Kan nemt beskrive en løsningsalgoritme, men er ikke i stand til at programmere den.

    Sidstnævnte kan let bestemmes af følgende dialog:
    Mig: Tag din bærbare computer med til interviewet
    Kandidat: Hvorfor?

    Efter sådan en dialog står det umiddelbart klart, at kandidaten mener, at hovedsagen ved at være programmør er at tale om fede teknologier i køkkenet. Han ved ikke, at programmering på et velkendt tastatur er meget nemmere end på et udenlandsk. Derfor bruger han lidt tid på det. Jeg spekulerer på, hvordan det går med hans arbejdsdag?

    Bogdan Gusev, tankstation

    Regel 17

    Vær tilstrækkelig :)

    Tilstrækkelighed er et ret bredt begreb. Først og fremmest omfatter det en reaktion på svære situationer. Hvad gør en person, når han står over for et uforståeligt stykke kode eller en kompleks algoritme? Hvordan vil han opføre sig over for kolleger, når han har brug for noget fra dem (eller har brug for dem)? Hvad gør han, hvis der opstår en interessekonflikt? Hvad hvis han får en umulig eller vanskelig opgave?

    Artem Polyukhovich, CTO

    Regel 18

    Vær optimistisk

    Positiv indstilling - meget brugbar kvalitet. Det er meget mere behageligt at arbejde med en person, der ved, hvordan man bemærker positive øjeblikke i livet, på arbejdet, i alt.

    Regel 19

    Føl dig fri

    Et interview er en diskussion mellem to ligeværdige specialister. Dermed er stivhed mere et minus end et plus. Det vil forhindre dig i at udtrykke dig på det rigtige niveau.

    Men for meget selvtillid er også et minus. En monolog i 20 minutter uden stop kan tjene som grund til afslag.

    Opfør dig naturligt, vær ikke genert. Hvis du for eksempel har lettere ved at behandle information visuelt, skal du ikke være bange for at bede om papir og pen.

    Regel 20

    Hvis du fejler, så lær af dine fejl

    Se interviewet som en mulighed for at lære noget nyt og vinde feedback. Dette vil være en fordel, selvom du ikke modtager et jobtilbud.

    Alexander Kaganovsky, tankstation

    Hej alle sammen, Javarashites! Det skete, at jeg for nylig havde en samtale og gerne ville fortælle dig, hvilke spørgsmål jeg blev stillet, forudsat at jeg søgte Junior++-stillingen. De der. ikke en mellem endnu, men heller ikke en grøn junior. Så interviewet forløb efter denne plan

    1. JavaCore
    2. Database.
    3. De værktøjer du bruger.

    JavaCore

      Først blev jeg bedt om at tegne hierarkiet af grænseflader til samlinger (det var ikke svært, der er kun få af dem (Samling, Liste, Sæt, Kø, Kort).

      Hvad er forskellen mellem ArrayList og LinkedList (dette er et af de mest afslørede spørgsmål og svar på internettet, bare mørke).

      Vi diskuterede hastigheden for udførelse af forespørgsler i dem, og hvad forskellen er mellem arkene.

      Spørgsmål om klassen Objekt. Hvad er hans metoder, hvad gør de?

      Afspejling. Hvad getClass()-metoden gør. Meget interesse Spørg, skiller det ad. Især om hvordan man får alt om en klasse, selvom den indeholder private metoder eller variabler.

      De spurgte om multithreading. Det er svagt, synes jeg, at fortælle dig, hvordan du forstår, hvad multithreading er. Hvad skal der til for at starte en ny tråd. Realistisk set, hvis du er niveau 20+, så vil disse spørgsmål virke sjove for dig.

      Hvad kan du sige om Stream? Det handler ikke om Java 8. Det handler om input og output streams. Ligesom grundlæggende grænseflader, hvad de er (tegn og byte). For forståelsen, ingen detaljer.

    • Undtagelser. Her blev vi igen bedt om at tegne et hierarki af undtagelser, hvilke typer der er, hvilke der er markeret og hvilke der ikke er markeret. Hvad skal man gøre med Runtime-undtagelser. Navngiv den oftest stødte på (NullPointerException).
    • Spørgsmålet er, hvad der skal gøres med kontrollerede undtagelser (fremsend videre eller proces - begge er tydelige).

    OOP

      Hvad er OOP i en nøddeskal?

      Hvilke andre programmeringsparadigmer findes der? Hvordan adskiller de sig fra OOP?

      Hvad er de grundlæggende principper for OOP (arv, polymorfi og indkapsling)? Fortæl os om hver af dem. Indtil videre er alt abstrakt, ikke bundet til noget sprog.

      Systemdesign forståelsesopgave: der er en hest og en fugl. Vi skal have Pegasus. princippet "har en" og "er en"

    HVILE

      Hvad er REST. Wikipedia taler meget køligt om dette. Faktisk er en artikel fra Wikipedia nok at stifte bekendtskab med.

      HTTP. Der er også generelle sætninger her. Hans metoder, hvad hver af dem er til.

      HTTP-statuskoder. Hvilke fem dele skal deles op i, fortæl os om de mest berømte (200,204,404,500,501). Hvorfor gør de det? De spurgte også om 401 og 403. Men jeg kendte dem ikke. De sagde, at de var vigtige.

    Database

    Her fortalte jeg dig, at jeg kender MySQL. Fortalte om tre normale former. Jeg talte om Joins, hvad de er, og tegnede krydset mellem områder, hvor forskellige joins bruges. Jeg talte om, hvordan jeg forstår en relationel database. Jeg har heller ikke glemt MongoDB - dette er en NoSQL-database , det vil jeg også skrive om.

    Andre værktøjer

    Her gennemgik vi mit CV. Det blev skrevet at jeg bruger Maven/Gradle til montering, jeg bruger JIRA til opgaver, git, Docker, Swagger. Til kontinuerlig integration - Stash, Bambus, Puppet. Til test af JUnit, Mockito, JMeter. Jeg har måske glemt noget, så hvis du er interesseret - spørg i kommentarerne Jeg vil prøve at svare. Dette var første del af interviewet. Nu venter jeg på resultaterne, og hvis det er tilfældet, vil der være en anden del. Jeg vil skrive om det hurtigst muligt. Enhver, der kunne lide artiklen og fandt den nyttig - sæt "+". Skriv i kommentarerne. Se også mine andre artikler:

    Siraj Rawal, udvikler, skribent og vlogger, deler, hvordan man klarer ethvert teknisk interview i 5 trin.

    Jeg har været igennem denne proces et dusin gange i forskellige it-virksomheder i min hukommelse. kæmpe antal både afslag og tilbud. Og her er de erfaringer, jeg har lært af det. Interview kræver arbejde: tro ikke på dem, der siger, at det skal være nemt. Det er forkert. Folk taler kun om deres succeser og aldrig om deres fiaskoer.

    Jeg har skitseret flere trin, der giver dig mulighed for at undgå mange fejl og bestå ethvert teknisk interview.

    Trin 1. Forberedelsesplan

    Lære. Selv før du har den lyse idé om at prøve at få et job et sted, bør du koncentrere dig om at opgradere dine tekniske færdigheder.

    Ansættelsesprocessen til en udviklerstilling ser stort set ens ud hos mange store virksomheder. Som regel foregår det i to etaper. Først kommunikerer rekruttereren med ansøgeren via telefon for at forstå, hvor interesseret han er i deres virksomhed. Efter vellykket gennemførelse af første etape efterfølges af 1-2 tekniske samtaler med specialister, hvor han bliver stillet svære spørgsmål og problemer, som han skal løse i tavlen. Han skal vise sin tankeproces i løsningen af ​​et problem, finde en passende løsning, og så bliver han ansat.

    Den eneste måde at lære dette på er øvelse. Alle mine venner, der arbejder i seje virksomheder, laver meget arbejde. Pointen her er ikke at have ekstraordinær intelligens, men at arbejde hårdt og eftertænksomt.

    Spørgsmålet opstår: hvad skal du helt præcist øve dig på? Du vil ikke blive testet på din viden om syntaksen for noget sprog. Hvis du vil, kan du lære det grundlæggende i Ruby-syntaks natten over. Men hvad natten ikke er nok til, er det grundlæggende i datalogi. Men ved interviewet vil de teste din viden om datastrukturer og algoritmer.

    Start med at tage to kurser:
    introduktion til datastrukturer (My Code School)
    Introduktion til algoritmer (MIT Open Courseware)
    Begge er med Åben adgang og er ideelle til at få basis viden for disse afsnit.

    Herefter kan du konsolidere den erhvervede viden om HackerRank og HackerEarth. Disse ressourcer indeholder et stort antal problemer for at finpudse dine programmeringsevner.

    Efter at have løst et par dusin gåder fra begge sider, læs bøgerne "Technical Interviews as They Are" og "Breaking the Technical Interview." De vil lede dig gennem mange specifikke opgaver fra rigtige interviews, fra systemdesignproblemer til spørgsmål om tid og kompleksitet.

    Når du har gennemført alle ovenstående ritualer, skal du begynde at øve et interview med en af ​​dine venner. Bed ham om at stille dig spørgsmål og besvare dem ved kun at bruge en markør og en hvid tavle og forklare dine tanker højt. Jeg anbefaler at gøre dette i to til tre måneder, to til tre timer om dagen.

    Trin 2: Find virksomheder, der interesserer dig

    Hvis processen med at forberede hvert interview tager to til tre måneder, så vil du naturligvis ikke spilde denne dyrebare tid på virksomheder, der ikke imponerer dig.

    At holde styr på virksomheders interviewforberedelse og interviewproces kan være ret stressende, men prøv at holde dig organiseret. Lav en liste over virksomheder, der interesserer dig, og noter stadiet af dit forhold til hver af dem. Angel.co og Hacker News er gode ressourcer til dette.

    Der er noget overnaturligt over dette. Du bliver nødt til at anstrenge al din styrke psykiske evner, for at forstå, hvordan du bedst anvender dine færdigheder inden for dit ønskede område og finde virksomheder, der vil tillade dig at gøre det.

    Trin 3. Opret en portfolio

    Store virksomheder modtager hundredvis af CV'er om dagen, så de skal simpelthen luge ud af en masse middelmådighed, som ikke er interessant for dem. Hvordan skiller man sig ud fra denne grå masse? Sørg for, at alle ordene i dit CV passer på én side, og at det er kortfattet, men præcist. Oplys det mest vigtigt arbejde udført af dig.

    Det er en god idé at have flere CV'er: et for hvert speciale eller for hver virksomhed, hvor du forsøger at få et job. I din portefølje, separate personlige projekter, projekter fra hackathons, bidrag til open source-projekter.

    GitHub er et godt sted ikke kun at gemme din kode, men også som en anden portefølje, der kan tjene dig godt.

    Gør dit bedste webprojekt til dit eget CV-websted. Prøv at få det til at se stilfuldt og professionelt ud, så det kan imponere en potentiel arbejdsgiver.

    Trin 4. Få en invitation til et interview

    Den nemmeste måde er at søge en ledig stilling på en specialiseret hjemmeside. Men store virksomheder modtager mange sådanne svar hver dag, og det er meget nemt at fare vild blandt dem. En god mulighed- send en e-mail til virksomhedens rekrutterer, og gør den kort og præcis. Inkluder det kort anmeldelse om hvem du er, og hvad du vil lave, et link til et lettilgængeligt og relevant projekt, og udtrykke lyst og vilje til at lære og opleve nyt.

    Det er tid til at gå videre til...

    Trin 5. Bestå interviewet

    Nogle gange kan intervieweren være mere nervøs, end du er, og det er okay. Bare smil, vær høflig, gør det klart, at du forstår ham og er villig til at samarbejde for at opnå fælles mål.

    Når du løser tekniske problemer, skal du ikke være bange for at tænke højt. Husk, at det er præcis det, de ønsker af dig: det rigtige svar er ikke lige så vigtigt som det korrekte tankesæt. Når en jobsøgende kommer med den første løsning, beder rekruttereren ham ofte om at finde bedre muligheder. Det er her, din datalogi viden kommer i spil.

    Og vær ikke genert for at stille spørgsmål. Intervieweren er der for at hjælpe dig. Og på trods af at hans hovedmål er at evaluere dine færdigheder, er det også vigtigt for ham at forsøge at finde et forhold til dig. gensidigt sprog, samarbejde med dig og hjælpe dig med at nå et fælles mål. Så hvis du kommer forberedt, vil alt være godt.

    Konklusion

    At forberede og bestå en samtale er en ansvarlig og tidskrævende proces. Lad aldrig, aldrig, ALDRIG afvisning få dig ned. At bestå et interview er også stor oplevelse, selvom du ikke blev ansat. Derfor vil du over tid opnå den højeste færdighed og være i stand til at bestå ethvert teknisk interview med succes. Det vigtigste er at træne, tro på dig selv og forblive motiveret.

    Interviews rangerer højt på listen over de fleste menneskers største frygt, sammen med offentlige taler. Du optræder ikke kun foran nogen, men du bliver også konstant evalueret hele tiden... brrrr!

    Selvfølgelig er vi langt fra at forsøge at forstå og overvinde dine psykologiske barrierer, men det er absolut bedst at se interviews som en chance for at vise alle de fede ting, du har skabt, og alle de interessante nye færdigheder, du har lært. Bedste interviews- det er entusiastiske samtaler med et teknisk overblik.

    Det første skridt før alt dette er forberedelse. Du får lyst til at tænke over de mulige spørgsmål (og de mest almindelige svar, der fremhæver din glans) og undersøge ansættelsesfirmaet. Din viden om virksomheden vil hjælpe dig med at præsentere dig selv på en måde, der passer til deres behov, og vil også give dig mulighed for at stille smarte spørgsmål om deres produkter og teknologier, når tiden kommer. Endnu en gang, se Happy Bears artikel for praktiske tips.

    Hvad er hele denne proces?

    Bare et lille overblik over den proces, gennemsnittet gennemgår teknologivirksomhed ved ansættelse af udviklere:

    1. Indledende samtale på telefon (telefonskærm)
    2. Teknisk interview
    3. Testkommissorium
    4. Opfølgningssamtaler for at sikre, at du passer godt (Fit Interviews)
    5. Jobtilbud
    6. Diskussion af tilbudsvilkår (tilbudsforhandling)
    7. Tilbudsaccept

    Foreløbig telefoninterview

    Tillykke! Dit CV viste sig ikke at være det mest katastrofale, og du blev inviteret til et telefoninterview (bemærk, at nogle gange laver du en testopgave først). Det egentlige formål med dette trin, som ofte involverer en halv times samtale med en person i HR (i stedet for beslutningstageren om ansættelse), er at sikre, at du har en god chance for at komme igennem resten af ​​interviewprocessen. Så tænk på det som en lettere version af de andre trin.

    Du vil sandsynligvis blive spurgt om nogle af de tekniske ting, du sætter på dit CV, men gå ikke for dybt (selvom nogle arbejdsgivere stiller nogle ret vanskelige spørgsmål), og du vil sandsynligvis blive stillet nogle "blødere" spørgsmål om hvorfor du valgte dette job, og hvad du gjorde før. Telefoninterviews kan variere meget fra virksomhed til virksomhed. Hovedtaktikken her er slet ikke en taktik, bare vær ærlig, energisk og åben. Og vær ikke bange for at øve dig i at tale om dig selv foran spejlet.

    EN ENDELIG BEMÆRK - Dette er ikke en metode, der passer til alle, og mange virksomheder springer den over til fordel for at dykke direkte ned i dybden af ​​et teknisk interview, så du skal forberede dig for en sikkerheds skyld. Linket nedenfor til Coding Horror er det mest illustrative af denne sag.

    • Opnå fremragende telefoninterview med Monster
    • 7 trin til at opnå fremragende kvalitet i telefoninterview

    Teknisk interview

    Det tekniske interview er normalt den mest skræmmende del af udvælgelsesprocessen. Det er her de vil vurdere, om du har de nødvendige tekniske færdigheder. Det betyder, at de ikke kun vil spørge dig meget detaljeret om dit arbejde, men også bede dig om at bestemme logiske problemer eller skriv kode lige der eller skitser et diagram over nogle nye komponenter.

    Faktisk er et af formålene med sådan et interview at bringe dig til kanten af ​​dine evner, bare for at se, hvordan du reagerer på ukendte ting. Hvis du laver en øvelse for let, vil de gå videre til noget meget sværere. Der vil altid være steder at snuble, især for begyndere. Dit største aktiv er din ærlighed og nysgerrighed.

    Når du løser et problem, skal du sørge for at gøre det på en klar og logisk måde, og forklare højt, hvorfor du udfører et bestemt trin. Tal igennem alle de forhindringer, du stødte på, og giv eksempler på, hvordan du ville løse det i " virkelige verden". Ofte er svaret at "Google" nogle specifik funktion. Sig det! De ved, at du ikke er en Ruby-ekspert, men de skal også vide, at du kan komme med løsninger på de problemer, du uundgåeligt vil støde på på jobbet.

    Det er også helt normalt, hvis du bruger brute force - en ineffektiv metode - til at løse et kodningsproblem. Dette er ofte det bedste udgangspunkt for at få en ordentlig fornemmelse af problemet. Mest sandsynligt vil du blive spurgt, hvordan løsningen kan forbedres, men det er meget bedre end at prøve at finde den perfekte løsning og ikke have tid til at skrive noget til sidst. Endnu en gang er dit job ikke at være en fremtrædende kandidat, men at vise, at du er omstillingsparat og robust, når du står over for udfordringer.

    Og hvis du ikke ved noget, er det bedre at sige det ærligt og prøve at tænke det igennem med intervieweren. Tro mig, de vil have dig til at lykkes lige så meget, som du gør, for der er ikke noget værre for en interviewer end at se en, der stille forsøger at løse et problem, blive mere og mere fast uden at bede om hjælp og ikke lade nogen vide, hvad han var. tænker.

    Du bliver nødt til at læse om store mængder ting, der ikke blev lagt vægt på i tidligere kurser, for eksempel datastrukturer og algoritmer, simpelthen fordi det er meget populære spørgsmål om dem i interviews. De afspejler ikke altid programmeringsfærdigheder godt, men det sker bare, at du bliver nødt til at besvare spørgsmål, der falder ind under et mere akademisk område af computerviden.

    Links

    • Lad os se på interviewet for programmører: SKAL LÆSE MATERIALE hvem bliver din bedste ven. Det tager et omfattende kig på alle typer udfordringer, du vil møde i et interview. Det går ud over, hvad vi allerede har dækket i dette kursus og berører ting, der er gode at vide, fordi du sandsynligvis vil støde på dem. Tag dig tid til at lære så mange at kende som muligt stort beløb materiale.
    • Interviewing.io giver dig chancen for at øve anonymt og online tekniske interviews.
    • Sådan får du en perfekt score i et teknisk interview
    • Sådan skiller du dig ud i dit næste webudviklerjobinterview
    • Læs 40 vigtige computervidenskabelige begreber forklaret i et letforståeligt sprog
    • Googles guide til tekniske færdigheder(for avancerede)

    Programmeringstestopgaver:

    • 8 dronninger er et klassisk problem.
    • Programmering til interviews: Ved, at standardbibliotekerne kan være overkill for en begynder, men det skader aldrig, hvis du tager dig tid til at gøre det.
    • På Project Euler finder du mere generelle og komplekse problemer, der skal løses effektivt (de kan kræve en masse beregning).
    • Udgivet på Coding Bat praktiske spørgsmål til Java og Python.

    Algoritmetræning:

    • Algoritmekursus fra Udacity (ikke synkroniseret)
    • Algoritmekursus fra Coursera (delvist synkroniseret)

    Arkitektur:

    Teknisk testopgave

    Prøve lektier kan forekomme enten før eller efter en personlig samtale, afhængigt af virksomheden. Du får en opgave, som det vil kræve en hel dag at udføre, når som helst, der passer dig. Eksempler på en sådan opgave kan være at lave en prøvewebapplikation med tests eller løse et komplekst algoritmisk problem med at skrive kode.

    Evalueringen vil være baseret på fuldstændigheden af ​​løsningen og kvaliteten af ​​din kode. Hvis dette sker før den tekniske samtale, så er det det god metode tjek din interesse (op til halvdelen af ​​ansøgerne vender ikke engang tilbage med en løsning).

    Afsluttende interview ("Fit")

    Det sidste trin, før du træffer en beslutning, er normalt at lære teamet og kontorerne at kende i et par timer. Du kan blive testet teknisk, men hovedmålet er at sikre, at du bliver en god kollega. Hvis et andet teammedlem siger, at du ikke vil arbejde godt, vil de højst sandsynligt ikke ansætte dig. Råd? Ingen grund til at være mærkelig eller akavet, selvom du er hjemme :)

    Dette er også en mulighed for dig. Hvis du er nået så langt for at komme til dette trin, er der en god chance for, at du generelt er kvalificeret. Du skal overveje, om du vil arbejde for denne virksomhed, så lav en liste med spørgsmål og få svar på dem.

    Lidt om løn

    Ikke. Udtal det. Dine. Lønninger. Forventninger.

    Du vil altid blive spurgt "hvor meget vil du gerne modtage?" Dit svar? "Jeg vil gerne blive betalt til den gennemsnitlige markedsrente" (medmindre du er så arrogant at spørge over markedsprisen. Lad os se, hvordan det virker for dig). Du vinder ikke noget ved at nævne dit ønskede lønniveau. Hvis det viser sig at være lavere end det, de ønskede at tilbyde dig, vil de simpelthen sænke dette niveau. Og hvis det er højere, så vil de simpelthen afbryde hele processen og beslutte, at du er for dyr for dem.

    Når du har modtaget et tilbud, kan du tjekke, hvordan det er sammenlignet med den gennemsnitlige markedsløn ved at spørge nogle få personer (forhåbentlig kender du allerede et par personer at spørge) eller ved at gå til Glassdoor (bare husk at du er nybegynder, hvilket betyder at du ikke modtager en "gennemsnitlig" løn). Det vigtigste er ikke at skade dig selv, når du bliver spurgt.