# Microsoft-intervjuer

<datetime class="hidden">2004-01-05T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, Software Development, Testing -->
Läs bara [den här artikeln](http://www.sellsbrothers.com/fun/msiview/#myInterview) om
en Microsoft-intervju.

Jag hade också en intervju för ett jobb på Microsoft för några år sedan (i
Mitt fall, ett PM-jobb i en av servergrupperna).

Jag har träffat dig. [Mark Anders Ordförande](http://www.4guysfromrolla.com/webtech/MarkAnswers.asp) i
bokhandeln på 1999 ASP professionell konferens i Islington, London (Jag kommer att missa
Wrox-konferenserna!) och vi började prata om lite säkerhetsgrejer - han var
ganska högt upp i ASP.NET gruppen på den tiden - det var helt embryonal då
Han undersökte fortfarande vad folk tyckte om vissa saker.
Jag blev inbjuden till Redmond.

Så jag flög över, fick tillbringa några dagar i Seattle, hade en trevlig rundtur i Microsoft
Och så småningom blev han plågad för en dag.

Ett av mina största problem är att jag är MYCKET skotska - du kanske inte förstår vad detta
betyder för direkt, röstkommunikation - men tänk om du vill, Billy Connolly på
dubbel hastighet (även om jag har en Barry Whitesque baryton :-)) - mycket berusad och med
En påse kulor i munnen - det är ganska nära.

Lägg till detta det faktum att jag var mycket nervös - hade just upptäckt Starbucks (6 stora
espressos!) och var fortfarande jet-laggad bra, Jag skulle ha verkat prata några
Märkligt förlorat språk.

Så, under en enda dag träffade jag 8 separata personer i flera olika byggnader - en
få kodningsfrågor (enkla saker som att skriva en sökning och ersätta algoritmen ... den
vanliga), vilket jag var ganska bra på. Det fanns några "uppfinnande" och kreativa frågor

- En gång till ganska bra.

Sedan kom [problem](http://www.sellsbrothers.com/fun/msiview/default.aspx?content=question.htm)!
Jag är vad som tekniskt kallas helt jävla skrämmande på matte, och särskilt
matematik pussel när under stress - tillsammans med det faktum att jag har börjat tala
Serbo-Koratian bådade inte bra.

Det fanns frågor om flödet av bilar över en bro; vid denna hastighet, hur många
bilar passerar över på 2 minuter, en om balansering bollar (som jag fick svaret på
genom lateralt tänkande, inte matematiken tillvägagångssätt).

Hur som helst, jag blev tillfrågad om jag skulle överväga ett jobb att testa - sa nej ... och i princip beslutat
Att jag hade haft det med stora utvecklingsgrupper.

Detta verkligen färgade min syn på Microsoft - det hjälpte mig också att förstå lite av
Hur det fungerar...

De letade efter Maths Geeks - åtminstone i det här fallet - Jag är inte en, jag är mer
av den gamla skolan hackare (i rätt mening :-)) Jag gillar att tänka på koden
Jag skriver och formar till en produkt folk vill använda - för mig är det inte en matematisk
motion, massor av människor hatar detta tillvägagångssätt - och de flesta av de människor jag träffade på Microsoft
Verkade inte förstå det.

Bristande kreativt tänkande är ett stort problem för säkerheten i webbaserade system och
genom åren, testa, skriva och analysera dessa system, verkar det vara ett av
de viktigaste orsakerna till att det uppstår problem i sådana system.

Utvecklare behöver tänka mer kreativt om sina applikationer, placera dig själv
i samband med en person som försöker bryta / subvertera säkerheten för din kod, ställa
gränser för punkter där alla användaringångar har validerats - applikationsbrandväggen

- Det är din säkerhetszon.

Det är verkligen ganska lätt att göra detta, om du sätter gränser för vad din ansökan accepterar
som indata.

1. Validera hela tiden, klient och server.
2. Kontrollera gränser i uttestningsutgåvan (vad händer om du skriver in för många tecken i
   ett formulärfält?).
3. Fånga varje fel överallt du accepterar inmatning från utanför programmet - vare sig det
   från användaren eller från databasen (de kan gå ner!) .
4. Ange förnuftiga felkoder för senare kod för att kontrollera - massor av program faller över
   helt enkelt för att de faller ur sekvens - med någon viktig metod som inte har återvänt
   rätt värde. Ställ in brytpunkter i kod där om ett villkor är satsat, en del avbryter
   sekvensen äger rum (rapportera felet till användaren, en omdirigering... etc.)
5. Förenkla - detta är den viktigaste sak! Komplex kod döljer sina problem, hålla
   din kod läsbar, gör dina variabelnamn uppenbara, infoga kommentarer som indikerar förväntade
   sökvägar och förekomster i källan. Gör enklassfiler med samma namn
   Håll det enkelt.

Hur som helst, tillräckligt med svamlande....senare...