Jeg hadde et jobbintervju i dag, for en toårig jobb som utvikler hos EPCC. Det var ganske spennende, og jeg tror det gikk i alle fall helt greit, skjønt jeg har ikke allverdens erfaring med jobbintervjuer. Dette var vel faktisk mitt andre jobbintervju totalt, der det første var når jeg var 16 år og begynte å jobbe på trelastlageret. Den gangen sa jeg at jeg gikk med avisen, som ble tolket som et tegn på at jeg greide å stå opp tidlig og komme meg på jobb, og muligens førte til at jeg fikk jobben, men i dag slapp jeg ikke fullt så billig unna.
Jeg har naturligvis hørt om intervjuspørsmål, og til og med lest litt om temaet, så jeg var spent på om jeg ville få noe sært som «Hvor mange pianostemmere er det i Storbritannia?» eller «Hvor mye skulle du hatt for å vaske alle vinduene i London?», men jeg fikk noe litt mer håndfast, nemlig et lite programmeringsspørsmål.
Sett at du har en liste med 1000 tilfeldige tall. Hvordan vil du gå frem for å finne de to største?Først foreslo jeg at man kunne gå gjennom alle tallene en gang, notere seg de to første, og oppdatere hver gang man finner noe som er større. Dette er den raskeste måten regnemessig, siden du bare ser på hvert tall en gang, og det er det minste du kan gjøre. Han spurte om det finnes andre måter, og jeg foreslo et slags binær-søk, men kommenterte at det ville være mindre effektivt, og dessuten mer prakk å programmere. Så spurte han om jeg ikke kunne bruke en ferdig sorteringsfunksjon, og etter at jeg var ferdig med å irritere meg over at jeg ikke kom på det selv sa jeg at det kan man naturligvis, og påpekte at det ville være tregere regnemessig, men til gjengjeld kan det implementeres på to linjer. Til slutt spurte han om jeg kunne skrive ned på tavlen det første programmet jeg beskrev.
Etter litt frem og tilbake kom jeg frem til følgende:
N1 = random_array[0]
N2 = random_array[1]
if N2 > N1:
N1, N2 = N2, N1
for r in random_array:
if r > N1:
N2 = N1
N1 = r
else:
if r > N2:
N2 = r
Så det som skjer her er at først setter jeg N1 og N2 til de to første tallene i listen. Jeg vil at N1 skal bli det største tallet, og N2 det nest største, så hvis N2 er større bytter jeg plass på dem. Så kjører jeg gjennom hele listen én gang. For hvert tall sjekker jeg om det er større enn N1, og hvis det er større flytter jeg det tallet jeg hadde i N1, som var det største hittil, ned til N2, og putter det nye tallet i N1. Hvis tallet var mindre enn N1 sjekker jeg om det er større enn N2, og hvis det er det putter jeg det i N2.
Jeg har naturligvis programmert løsningen min og sjekket at den funker, og hvis du er veldig ivrig kan du laste ned programmet mitt
her og ta en kikk. Og med det føler jeg at jeg har gitt mitt bidrag til jobbintervjuspørsmållitteraturen.
-Tor Nordam
Comments