JavaScript har altid været populært i it-branchen, fordi det giver udviklere mulighed for hurtigt og nemt at lave websites, der ligner apps, alt sammen ved hjælp af ét teknologisæt og uden alt for meget besvær eller tidsforbrug.
Det er ikke den nemmeste opgave at vælge en kandidat ud af mange ansøgere.
Før du fortsætter med ansættelsesprocessen, skal du først og fremmest bestemme, hvilken type JavaScript-udvikler du har brug for til dit projekt. Vi vil dække dette, spørgsmål til interviewet og tips til at undgå udfordringer og forhindringer i løbet af processen - tekniske og ikke-tekniske færdigheder, screeningfaser i interviewet og meget mere.
Vi inkluderer også nyttige oplysninger direkte fra rekrutteringsfolk og udviklere, fordele og statistik om JavaScript og alt andet, der er værdifuldt for dig, så du kan forkorte ansættelsesperioden uden at gå på kompromis med kvaliteten.
Om JavaScript
JavaScript er et objektorienteret, letvægts dynamisk programmeringssprog (scriptsprog), der almindeligvis bruges til at skabe webapplikationer, interaktive effekter i webbrowsere, spiludvikling og meget mere.
Dette programmeringssprog, der tidligere var kendt som LiveScript, blev først udgivet i 1995 som en integreret del af Netscape Navigator 2.0 (webbrowser), men fik senere navnet LiveScript.
Selv om JavaScript er et programmeringssprog til brug på websites, kan det også sagtens bruges i andre miljøer og til andre formål end browsere. Dette dynamiske sprog tilbyder støtte til objektkonstruktion baseret på prototyper, og dets syntaks ligner både Java og C++.
Statistik om JavaScript
Lønnen for en JavaScript-udvikler er i gennemsnit 94.260 dollars om året, og den højeste løn er 109.796 dollars - en fuld stack-stilling starter omkring 109.000 dollars og derover om året. På trods af dette faktum er JavaScript rangeret lavere end de mest betalte teknologier.
Det gode ved dette programmeringssprog er, at der er stor efterspørgsel efter det, men dette forhold svarer ikke til de tilgængelige eksperter. 75 % af virksomheder og arbejdsgivere har aktivt brug for at finde og ansætte en JavaScript-udvikler.
Dette sprog er utrolig populært, idet 68,62 % af de adspurgte udviklere foretrækker det til deres arbejde. Dette sikrer JS førstepladsen på popularitetslisten, og en mindre procentdel på 14,59 % hævder, at de ønsker at bruge JavaScript eller implementere det i deres arbejde.
Populære varemærker, der er afhængige af JavaScript-brug
JavaScript er et populært sprog hos følgende mærker/firmaer:
- Microsoft
- Uber
- Netflix
- PayPal
- Groupon
- Google
- Facebook
- LinkedIn
- eBay
- Walmart
- IMDB
- Twitter
- Trello
- BBC
Interview med en JavaScript-udvikler
Nyttige tips til et pre-screening interview
En vigtig del af hele processen med at finde og ansætte medarbejdere er at få en rekrutteringsekspert til at foretage en forhåndsundersøgelse af udviklerne. Disse specialister har specifikke spørgsmål og vurderingsopgaver, der hjælper med at vurdere en kandidats ekspertise.
Rekrutteringsfolk spørger altid om tidligere arbejdserfaring, altså hvor længe kandidaten har arbejdet med JavaScript, fordi det er med til at bestemme udviklerens anciennitetsniveau.
En anden ting, de kontrollerer, er det sproglige aspekt eller færdigheder i engelsk for at kontrollere, om der vil være potentielle udfordringer i den daglige kommunikation mellem kunden og udvikleren.
Også kandidatens soft skills er vigtige, f.eks. kommunikationsevne, udviklerens punktlighed i forbindelse med opkaldet og miljøet omkring udvikleren. Professionel erfaring kombineret med en passende fremtoning og holdning er altid et godt bud.
Tekniske færdigheder hos en JavaScript-udvikler
Den erfarne JavaScript-udvikler skal have gode færdigheder eller omfattende viden inden for følgende områder:
I den forbindelse bad vi også Diamant Isufi, en softwareingeniør i Proxify, om at beskrive hvad han mener at udvikleren ellers skal vide, og han svarede:
"Ud over problemløsningsfærdighederne skal udvikleren beherske alle JS’ grundlæggende færdigheder. Lige fra hvordan det fungerer, hvornår det bruges og hvorfor, men også en præcis beskrivelse af simple datatyper, variabler, funktioner, klasser, konstruktørfunktioner og modularitet."
Diamant Isufi
Ikke-tekniske færdigheder hos en JavaScript-udvikler
De ikke-tekniske færdigheder er en stor del af det samlede indtryk af interviewet.
Rekrutteringsfolkene ved, at alt ikke kun er ekspertise, teknisk viden og erfaring. Det vigtigste minimumskrav er naturligvis engelskkundskaber og at komme til tiden til samtalen. Punktlighed er en god indikator for, hvor ansvarsbevidst og respektfuld udvikleren er over for rekrutteringsfirmaet, virksomheden eller kunden.
Men oven i det, anbefales det på det kraftigste, at udvikleren deltager i samtalen i et passende miljø/rum. Omgivelserne skal være pæne, med tilstrækkelig belysning, kamera af god kvalitet og om muligt et headset (for at få en klar lyd). Kandidaten bør følge en passende dresscode og være i et rum uden baggrundslarm eller distraktioner.
En anden ting, som rekrutteringsfolkene skal fokusere på, er kandidaternes samtalekompetencer eller hvordan de håndterer samtalen. At lytte uden afbrydelser, tale klart og tydeligt eller høfligt bede om at gentage et spørgsmål er et pluspoint for udvikleren og giver "point" til deres kommunikative aspekt.
Grundlæggende krav til og vurdering af en JavaScript-udvikler
Vi nævnte ovenfor de færdigheder og den tekniske viden, som en JavaScript-udvikler skal have, men det er godt at opsummere de vigtigste ting, du skal kigge efter:
- Ekspertise i JavaScript, HTML, CSS og jquery
- Kendskab til React.js, Node.js og TypeScript
- Kendskab til React.js og Redux.js
- Gode færdigheder i kodning på tværs af browsere
- Asynkron programmering
Derudover er følgende også vigtigt:
- En analytisk tankegang, der holder trit med de hurtige nyheder
- Viden om, hvordan forskellige browsere eller platforme fungerer
- Kendskab til Meteor (JS-platform)
- erfaring med versionsstyring
- ES6-sprogfunktioner – (ECMAScript 6 - til standardisering af JavaScript)
Diamant tilføjede her yderligere:
"Udvikleren skal også kende til ES7 (eksponeringsgenerator). Generelt ville jeg også vurdere problemløsningsevnerne og spørge om frameworks og bibliotekerne i JS. Herefter ville jeg spørge om deres erfaring med Angular, Vue og React. Men generelt er de følgende teknologier også nogle, som de skal kende godt: DOM (document object model), Node.js, NPM og Yarn samt NVM (node version manager)."
Hvad adskiller en god JavaScript-udvikler fra en fremragende udvikler?
Der er altid en hårfin grænse mellem fremragende og (meget) gode udviklere, men når man først ser noget, der gør en forskel, kan det være afgørende. I dette tilfælde skal den erfarne og ideelle JavaScript-udviklerkandidat have stor viden om og erfaring med dette programmeringssprog.
De skal også kunne arbejde med desktop-apps, hybride mobilapps, spiludvikling, backend-webapps, mikrotjenester, netværkstjenester samt indlejrede apps med specifikke værktøjer.
Derudover skal en god udviklerkandidat kende til ECMAScript frameworks og -versioner og bruge det bedste IDE (integreret udviklingsmiljø - Integrated Development Environment).
Mulige udfordringer ved ansættelse af en JavaScript-udvikler
Der er udfordringer og visse forhindringer forbundet med ansættelsesprocessen, men det er vigtigt at erkende eller forudse dem for at undgå dem - eller kunne løse dem, når de opstår.
En mulig udfordring er mangel på eksperter, der virkelig har en omfattende og dybtgående viden og passer til de kriterier og krav, der gælder for stillingen. Dertil kommer udfordringen med misforståelser med hensyn til lønninger eller økonomiske forventninger, der svarer til forpligtelsernes omfang og kompleksitet.
Hvis efterspørgslen efter JavaScript-udviklere på markedet er stor, vil der altid være konkurrenter, som forsøger at "få" de bedste udviklere for sig selv. På den baggrund bliver hele rekrutteringsprocessen mere presserende og utrolig dynamisk.
Og selvfølgelig er rekrutteringsprocessen dyr i sig selv, så ideelt set skal den resultere i, at den bedste udvikler "ender" med at arbejde for din virksomhed.
Hvorfor og hvornår har du brug for at ansætte en JavaScript-udvikler?
Du kan forvente forbedringer i din virksomhed gennem følgende aspekter, når du beslutter dig for at ansætte en JavaScript-udvikler:
- 'Bang for a buck' – JS er et grundlæggende programmeringssprog, og hvis udvikleren kan dét, behersker han/hun sandsynligvis også andre sprog og teknologier
- Oprettelse af webservere og apps i sable
- Dynamisk opdateret indhold
- Nem styring af videoer, billeder og multimedieelementer
- Let at fremhæve elementer gennem animation
- Spiloprettelse og -udvikling
- Udnyttelse af kraftfulde frameworks – bibliotek af mange strukturer til projektdetaljer, med mange funktioner til hurtig og god kvalitetsudvikling
- Fullstack-udvikling – både frontend og backend er let at skrive
- Enkelhed ved fejlfinding og test – fejl identificeres hurtigt, koderne gennemgås nemt linje for linje
- Oprettelse af mobil og webapps på tværs af platforme
- Fremragende grænseflader – skaber fængslende og visuelt smukke grænseflader for brugerne med ”drag and drop”-funktioner og flere interessante og værdifulde funktioner
- Concurrency – flere opgaver kører på samme tid og håndterer forskellige opgaver, hvilket sparer tid
- Cybersikkerhed
Diamant opsummerer de gavnlige aspekter af JS som følger:
"En JavaScript-udvikler vil være i stand til at skrive koder til flere platforme, og de er sandsynligvis meget fleksible og kan tilpasse sig nye frameworks og biblioteker, der bruger JS, såsom Angular, React og Vue. At skrive apps til mobil og desktop er en anden bemærkelsesværdig fordel. Ekspertise i JavaScript er en fordel, når en virksomhed skalerer, og efterspørgslen efter andre platforme stiger."
Fordele ved JavaScript
- Popularitet – JavaScript er et populært programmeringssprog med mange anvendelsesmuligheder og implementeringer. Som nævnt kan en dygtig udvikler udføre andre opgaver, der ikke udelukkende er relateret til JS.
- Hastighed – JavaScript giver mulighed for hurtigt arbejde og udvikling i klient-side browseren, ofte uden brug af eksterne ressourcer
- Enkelhed – Let at lære og implementere i arbejdet
- Oprettelse af fremragende grænseflader
- Flere handlinger – JavaScript passer godt sammen med andre programmeringssprog og giver mulighed for at bruge kvalitet i andre apps.
- Adgang til open source-projekter – udviklere, der har brug for hjælp eller vejledning, kan nemt finde den
- Enkel syntaks
- Alsidighed
- Ikke afhængig af en platform
- Færre interaktioner mellem servere
Diamant kommenterede også de generelle fordele og frynsegoder ved at arbejde med JavaScript:
"Jeg kan godt lide dette sprogs hastighed, da det ikke er et kompilerende sprog, men et fortolket sprog. Det er udbredt på nettet blandt alle udviklere, så et massivt fællesskab af eksperter tilbyder kvalitetsinformation og adgang til nødvendige ressourcer, artikler, kurser og meget mere. Og server-side rendering er en anden stor fordel ved JavaScript."
Spørgsmål og svar til JavaScript-interviews
Mange spørgsmål er relevante for at teste JS-udviklerens ekspertise, men her er nogle forslag, som du kan bruge under interviewet:
- Hvad er isNaN, og hvordan bruges det?
Forventet svar: Udtrykket "NaN" betyder "Not-a-Number" (ikke et tal), så isNaN fortæller os efterfølgende, om en værdi er NaN. Mere præcist bruger vi funktionen isNaN(), hvis vi har brug for at finde ud af, om en værdi indeholder et ulovligt eller forkert tal. Så hvis denne funktion/metode kommer tilbage som "true", betyder det, at den værdi, vi undersøger, faktisk er NaN.
- Forklar, hvad "negativ uendelighed" er.
Forventet svar: Når vi dividerer et negativt tal med nul, får vi et negativt uendeligt tal i JS. Dette negative uendelighedstal er en konstant værdi, som er den laveste tilgængelige værdi, vi kan få, og der vil ikke være noget lavere tal end dette.
- Hvad er "globale variabler"?
Forventet svar: De globale variabler er variabler, der er synlige fra alle scopes og deklareret i et globalt scope – de er altid deklareret gennem et vindueobjekt eller uden for en bestemt funktion, og de er tilgængelige fra bogstaveligt talt alle funktioner.
Forenklet sagt beholder en global variabel sin egen værdi, så længe programmet eksisterer.
- Forklar forskellen mellem SessionState og ViewState.
Forventet svar: SessionState er data, der kontinuerligt er vedvarende på en bestemt server, og dataene er ikke længere tilgængelige, når browseren lukkes, eller når sessionen udløber. Det er superspecifikke data med adgang fra alle sider i webappen. ViewState er en gruppe af kontrolelementers værdier på en bestemt side på klientens browserside. Mens SessionState gemmes på en server, gemmes ViewState på selve siden, og den kan ses fra én side, ikke fra flere sider. Grundlæggende gemmer ViewState kun oplysningerne på klientens side.
- Hvad er "looping-strukturer"?
Forventet svar: Når vi bruger loop eller looping-strukturer i JavaScript, bruger vi dem til nogle opgaver, der kræver gentagelse, dvs. denne funktion hjælper os med at gentage funktioner. Loopet stopper ikke med at køre, medmindre dets betingelse vises som "false". Vi har i alt 7 loopingstrukturer i JS, som er anført nedenfor:
- do-while
- while
- forEach()
- for
- for…in
- for…of
- map()
- Forklar betydningen af "NULL" i JS.
Forventet svar: Betydningen af "null" er intet objekt og/eller ingen værdi. Dette er også kendt som "null string", og det er bevidst værdiløst. Vi kalder også dette en primitiv værdi, og den har intet arrayobjekt og også en forkert boolsk værdi.
- Hvordan bruges "Void (0)"?
Forventet svar: Det er per definition noget, der er tomt, og det har naturligvis intet indeni. I JS er "void" lig med "returnering af ingenting" eller en tom værdi. Så med 'void(0)' kalder vi altså en anden, anderledes metode uden at opdatere siden. Ved hjælp af 'void(0)' forhindrer vi eventuelle hindringer og bivirkninger for en side, når vi skal indsætte noget på siden, f.eks. et udtryk.
- Hvad er "pop()"-metoden?
Forventet svar: Når jeg har brug for at fjerne det sidste array-element, bruger jeg "pop()" til at hente det samme element. Hermed justerer jeg array-længden i overensstemmelse hermed, og jeg gør dette ved hjælp af denne syntaks: array.pop( )
- Angiv forskellen mellem ".call()" og ".apply()".
Forventet svar: Disse to er lidt ens, men lad os skille dem ad. Når jeg kender argumenterne for en funktion og dens nummer, bruger jeg .call(), og denne funktion er en foruddefineret metode. Denne metode gør det muligt for et bestemt objekt at overtage en metode fra et helt andet objekt. Når jeg bruger .apply(), bruger jeg den, hvis jeg ikke har nogen anelse om, hvad nummeret er, men jeg skal skrive en metode, som jeg kan bruge på flere, forskellige objekter.
- Hvordan fungerer "deferred scripts" i JS?
Forventet svar: Først skal vi definere "defer" i JS, som er en boolsk attribut, og dens rolle er at bestemme, hvornår det downloadede script er synkroniseret og parallelt med sidens parsing. Det er vigtigt, at scriptet udføres, når parsingen er afsluttet for den pågældende side. Med udskudte scripts i JS udskyder scripts nu udførelsen af scriptet, når HTML-parseren er aktiv. Resultatet af dette er hurtig visning og mindre tid til indlæsning af websitet.
- Hvad er arrow funktions i JS?
Forventet svar: Ved hjælp af arrow functions i JS kan vi oprette anonyme udtryk eller skrive udtryk til anonyme funktioner. Disse arrow functions tilbyder ikke støtte til nøgleord som "new. target", "arguments", "this" eller "super". Der er en ganske stor lighed mellem JS arrow functions og Python-lambda-funktionerne. Kort sagt bruges arrow functions, når vi har brug for at få en funktion til at passere ligesom et parameter for en mere krævende funktion.
- Liste over alle JavaScript-datatyper.
Forventet svar: Der er i alt 6 JavaScript-datatyper, men de er opdelt i tre kategorier.
- Primary or primitive – Disse er Boolean, Sring og Number
- Composite (or reference) – Dette er Object, Function og Array
- Special – Dette er datatyperne Null og Undefined.
- Skeln mellem udefinerede og ikke-definerede variabler.
Forventet svar: Begge typer variabler er tæt forbundet med hukommelsesplads. Enkelt sagt er en udefineret variabel en variabel, der findes i hukommelsesområdet, men som ikke har fået tildelt nogen værdi indtil nu. Den ikke-definerede variabel er den ikke-eksisterende variabel i hukommelsesrummet, men der refereres stadig til den et eller andet sted.
- Hvad er JavaScript timere?
Forventet svar: Når vi har brug for at udføre en bestemt funktion eller opgave inden for en bestemt tidsramme, bruger vi timere. Timeren kan hjælpe os med enten at forsinke udførelsen af et program eller en kode eller hjælpe os med at udføre koden til tiden. Alle timere opererer i en enkelt tråd, så efterfølgende begivenheder og funktioner vil stå i kø bagefter.
- Forklar om automatisk typeomdannelse og JavaScript.
Forventet svar: Automatisk typekonvertering er en proces med værditildeling. Mere præcist er det en proces, hvor vi tildeler en bestemt værdi fra en numerisk datatype til en helt anden numerisk datatype - i JavaScript er denne form for automatisk typekonvertering aktiveret og understøttet og bruges ofte.
- Hvad er en event delegation model i JavaScript?
Forventet svar: Med JS-delegeringsmodellen kan vi opnå en bedre organisering og håndtering af begivenheder, og det er en af de bedste funktioner i JavaScript. Når vi ønsker at bruge én handlingsfunktion til flere elementer samtidig, bobler vi og fanger derefter den nævnte handlingsfunktion for at anvende den på flere elementer og dele samtidig - dette er event delegation, der forenkler arbejdet enormt.
- Definer JavaScript-cookies.
Forventet svar: Når en bruger besøger et websted, gemmer webstedet små testfiler på computeren. Disse små testfiler er cookies, og de oprettes, når brugeren klikker på hjemmesiden for at indtaste nogle oplysninger. Det kan være personlige oplysninger i forbindelse med checkout til en indkøbskurv eller udfyldelse af formularer og lignende, efter at websitet har bedt om tilladelse af denne art, og brugeren har indtastet den.
- Kan du kort definere escape-tegn?
Forventet svar: Når udviklere har brug for at udføre en specifik operation via en escape-kommando, skal de skrive et symbol (en skråstreg, " \ " ) for at starte denne escape-kommando. Dette symbol kaldes et escape-tegn, og det bruges hovedsageligt med specifikke tegn som f.eks. ampersand, enkelte anførselstegn, dobbelte anførselstegn, apostroffer og lignende. Backslash'en bliver kun synlig, hvis du skriver den før tegnene.
- Forklar JavaScript-generatoren.
Forventet svar: En generator repræsenterer en funktion eller proces, der kan genindgås, når vi forlader den, og som også kan sættes på pause, før vi fortsætter med at arbejde med den. Det gode ved at bruge JS-generatoren er, at du midtvejs kan holde pause eller stoppe og komme tilbage for at fortsætte, hvor du slap.
- Hvor mange fejltyper er der i JavaScript, og definér dem.
Forventet svar: I JS er der tre typer fejl: Syntaks, Runtime og Logiske.
Syntaksfejl er også kendt som parsingfejl - de opstår, hvis vi ønsker at fortolke en kode, men denne kode er ugyldig syntaksmæssigt. Syntaksfejl er almindelige og hyppige. Hvis du f.eks. skriver et semikolon, men i stedet skulle have skrevet et dobbeltkolon, er det en syntaksfejl.
Runtime-fejl er også navngivet og kendt som undtagelser. De opstår for det meste lige efter kompilering og fortolkning, og de opstår, når vi i løbet af runtime kalder en funktion, som ikke er erklæret, eksisterende eller til stede på det pågældende tidspunkt. I dette tilfælde er der ingen fejl i syntaksen.
De logiske fejl opstår, når der er et problem med koden, men syntaksen ellers er korrekt og gyldig. I dette tilfælde kan vi måske køre programmet problemfrit, men der er noget galt med resultaterne i sidste ende. Denne fejltype er ret kompleks at løse og identificere og er ikke knyttet til runtime eller syntaks. Logiske fejl opstår ved fejl i datastrømmen, eller hvis udvikleren begår en fejl i scriptlogikken.