Hogyan hozzuk ki magunkból a maximumot a szakmai interjún? 2. rész - Kódolás gépnél
Sorozatunk előző részében a szakmai interjúk buktatóinak boncolgatásába kezdtünk bele, a táblánál, illetve papíron megoldandó feladatokra koncentrálva. A mostani, második felvonásban már a kellemesebb, gépen elvégzendő feladványokról ejtünk szót, és arról, hogy mire kell figyelni jelöltként, és mire figyelnek az interjúztatók.
Az első és legfontosabb: ha azt kérik egy interjún, hogy gép előtt kódolj, akkor a táblával és a papírral ellentétben itt már tényleg arra kíváncsiak, hogy milyen jól tudsz a gyakorlatban programozni. Sőt, jó eséllyel egészen pontosan arra, hogy a megadott specifikációhoz mennyire tudod tartani magad. Az ilyenkor felmerülő feladatok mögött egyébként leggyakrabban valamilyen klasszikus programozási probléma, vagy algoritmus (bináris fák, backtrack, rendezés, a sor még hosszan folytatható) bújik meg, csak egy kicsit más csomagolásban. Ezek nagy előnye, hogy bár nem túl bonyolultak, a megoldásuk pedig nem emészt fel heteket, mégis könnyen lemérhető velük az adott jelölt néhány fontos paramétere. Mondhatnánk, hogy kódolva ismerszik meg az ember.
Hogyan lássunk hozzá?
Röviden és tömören: úgy oldjuk meg a feladatot, mintha az nem csak egy felvételi teszt része lenne, hanem véresen komoly.
Ahogy az előző bejegyzésben is említettük, fontos, hogy merjünk kérdezni, ha valami nem egyértelmű. Természetesen néha vannak olyan interjúhelyzetek, amikor ez tiltott, ettől függetlenül érdemes erről megbizonyosodni. "Nem gond, ha felteszek néhány kérdést a feladattal kapcsolatban?" Ha a válasz az, hogy "De!" (kicsi rá az esély), akkor legjobb tudásunk szerint nekilátunk a munkának, egyébként pedig tisztázzuk a nyugtalanítóan homályos foltjait a feladatmegoldásnak.
Milyen a jó megoldás?
Ha már az imént szót ejtettünk a helyzet komolyságáról, akkor érdemes definiálni, milyen feltételeknek kell objektíven megfelelnie a megoldásunknak:
- kommentekkel jól ellátottnak kell lennie a kódnak (túlzásba azért nyilván ne vigyük)
- legyen hibakezelés, vagy legalább naplózás
- minden reális eshetőségre készítsük fel a programot, hogy elkerüljük az összeomlását
- definiáljunk kész teszteseteket
- a kódnak jól olvashatónak, következetesen formázottnak kell lennie, a változónevek legyenek egyértelműek
- kerüljük a magyar nyelvű kommenteket, változóneveket, és még inkább a kevert angol-magyar szóhasználatot (igen, magyarok vagyunk, de az informatikában még mindig nem a magyar a világnyelv)
A tesztek definiálásánál fontos, hogy ne legyünk redundánsak, a programunk szempontjából egy esetet elég egyszer tesztelni. Koncentráljunk inkább arra, hogy lefedjük az összes variációt, például teszteljük, hogy mi történik üres, vagy hibás bemeneti paraméterek esetén.
Kevésbé objektív, de azért elég jól mérhető szempontok, amik még sokat nyomnak a latba a kiértékelés során:
- A program relatíve gyorsan fut
- Nem emészt fel irreálisan több memóriát a kelleténél
- Stabil, és könnyen karbantartható
Ne essünk kétségbe, ha úgy látjuk, hogy a 3. pont az 1. és a 2. rovására megy, ez észszerű mértékben teljesen normális!
Mi van, ha nem tudjuk megoldani a feladatot?
Ha nehézségekbe is ütközünk, a legfontosabb, hogy ne adjuk fel könnyen! Egy félmegoldás még menthető, de a hanyagság és a kitartás hiánya nem.
Ha esetleg egy speciális függvény neve nem jut eszünkbe, és csak ez hiányzik a megoldáshoz, akkor használjunk pszeudókódot. A programunk nyilván nem fog így futni, de ha tényleg minden más stimmel, és az interjú többi része is jól sikerült, akkor valószínűleg nem ez választ majd el minket az állástól.
Kommentben várjuk ti a legérdekesebb, legnehezebb, legkönnyebb interjúfeladataitokat!