<link rel="stylesheet" href="/assets/fonts/jetbrains-mono/jetbrains-mono.css" />
All posts

Intervistat teknike në epokën e IA-së: a kanë ende kuptim pyetjet klasike?

Një kandidat mid-level, në një intervistë online, i përgjigjet pyetjes "Cili është ndryshimi mes switchMap dhe mergeMap?" me një përkufizim të përsosur, pas një pauze prej tre sekondash. Dy pyetje më vonë e pyet cilin do të përdorte në një fushë kërkimi, dhe pse. Heshtje. Pyetja e parë mati sa shpejt konsulton një asistent IA; e dyta mati atë që të duhej vërtet të dije.

Kam qenë në të dyja anët e tavolinës së intervistës, dhe pyetja që më rikthehet gjithnjë e më shpesh është e thjeshtë: sot, me një asistent IA në çdo editor, a kanë ende kuptim pyetjet klasike të intervistës?

Çfarë ka ndryshuar vërtet

Pyetjet "si në libër" — përkufizime, dallime mes dy koncepteve, lista karakteristikash — kanë qenë gjithmonë një përafrim: supozohej se kush e njeh teorinë di edhe ta zbatojë. Ishte një përafrim i pranueshëm kur të mbaje mend kërkonte mund. Sot të mbash mend nuk kushton asgjë: çdo përkufizim është një prompt larg, gjatë intervistës dhe mbi të gjitha më pas, në punën e vërtetë.

Dhe pikërisht këtu është thelbi: zhvilluesi që punëson do të punojë me IA-në. Ajo që ka rëndësi nuk është më çfarë di përmendësh, por tri gjëra që IA nuk i bën në vend të tij:

  • Gjykimi: të zgjedhësh mes dy zgjidhjeve të sakta sipas kontekstit.
  • Verifikimi: të kuptosh kur kodi i gjeneruar është i gabuar, edhe nëse kompilohet.
  • Konteksti: të kuptosh problemin real para se të shkruash qoftë një rresht.

Mid dhe senior: pyetjet klasike nuk mjaftojnë më

Për një profil mid ose senior pyetjet teorike të izoluara janë pothuajse të padobishme: një kandidat i mirë i kalon, por i kalon edhe një mesatar me një ekran të dytë. Nuk duhen hequr plotësisht — duhen përdorur si pikënisje për të shkuar më thellë. Ja pesë formate që funksionojnë.

1. Code review i kodit të gjeneruar nga IA

Jepini kandidatit një fragment të besueshëm, si ato që një asistent prodhon çdo ditë, dhe kërkojini ta rishikojë si një pull request të një kolegu:

// Product search bar
this.results$ = this.query$.pipe(
  debounceTime(300),
  mergeMap(q => this.api.search(q))
);

Kodi funksionon pothuajse gjithmonë. Një senior duhet të vërejë se me mergeMap një përgjigje e ngadaltë për "ang" mund të mbërrijë pas asaj për "angular" dhe të mbishkruajë rezultatet e sakta: duhet switchMap, që anulon kërkesën e mëparshme. Pikë shtesë nëse pyet çfarë ndodh me një varg bosh ose me një gabim HTTP, që këtu do ta mbyllte stream-in përgjithmonë.

I njëjti ushtrim funksionon edhe në backend:

async function getOrders(userIds) {
  const result = [];
  for (const id of userIds) {
    result.push(await db.orders.find({ userId: id }));
  }
  return result;
}

Këtu kërkohen N query-t sekuenciale, mungesa e paginimit dhe propozimi i një query të vetme me $in. Nuk ka përkufizim për të recituar: ose e sheh problemin, ose jo.

2. Skenarë në vend të përkufizimeve

Në vend të "Çfarë është change detection?" pyet: "Një tabelë me 5.000 rreshta ngadalësohet kur përdoruesi shkruan në filtër. Ja profiler-i: nga fillon?". Në vend të "Çfarë është Redis?": "Kemi një cache në memorie dhe kalojmë nga një në tri instanca backend-i. Çfarë prishet?". Përgjigjet tregojnë menjëherë nëse kandidati ka zgjidhur probleme të ngjashme apo vetëm ka lexuar për to.

3. Rrëfimi i një problemi real

"Më trego bug-un më të vështirë që ke zgjidhur në prodhim" mbetet një nga pyetjet më të mira, me kusht që të gërmosh me pyetje pasuese: si e kuptove? Cilën hipotezë hodhe poshtë e para? Çfarë ndryshove që të mos ndodhte më? Një përvojë e jetuar i reziston pesë niveleve "pse"; një histori e përgatitur bie te i dyti.

4. Pair programming me IA të lejuar

Në vend që t'i ndalosh mjetet, lejoji dhe vëzhgo si përdoren. Një detyrë 30-40 minutëshe mbi një repository të vogël real, me asistentin IA aktiv. Nuk po vlerëson rezultatin, por procesin: a e lexon kandidati kodin para se të pyesë? A shkruan prompt-e të sakta apo të përgjithshme? A e refuzon një sugjerim të gabuar, apo e pranon sepse kompilohet? A shton një test?

5. Kompromise dhe vendime

Për një senior ka rëndësi aftësia për të vendosur nën kufizime: "Kemi dy javë dhe një ekip prej tre vetash: e rishkruajmë modulin apo e sigurojmë me teste?". Nuk ka përgjigje të saktë: ka një arsyetim që peshon rrezikun, koston dhe kthyeshmërinë, dhe pikërisht këtë dëshiron të dëgjosh.

Junior: si duhet të zhvillohet intervista

Me juniorët problemi është i kundërt. Nuk kanë përvojë për të treguar, dhe një code review i ndërlikuar do t'i penalizonte padrejtësisht. Por pikërisht për ta rreziku i IA-së është më i lartë: është e lehtë të prodhosh kod që funksionon pa e kuptuar. Intervista duhet të masë të kuptuarit dhe aftësinë për të mësuar, jo sasinë e njohurive.

Një skemë 60-minutëshe që e përdor dhe e rekomandoj:

KohaAktivitetiÇfarë vlerëson
10 minNjë projekt personal ose universitar: çfarë bëre vetë, çfarë do të bëje ndrysheVetëdije, sinqeritet
15 minLexim i një kodi të shkurtër dhe parashikim i output-it, rresht pas rreshtiBazat reale
20 minDetyrë e vogël me IA të lejuar, pastaj pyetje për çdo rresht të shkruarTë kuptuarit, verifikimi
10 minDokumentacioni i një API-je të panjohur: përdorimi për një rast të thjeshtëAftësia për të mësuar
5 minPyetjet e kandidatitKureshtja, interesi

Një shembull ushtrimi leximi, ideal për një junior JavaScript:

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}
// Çfarë printon? Po nëse përdorim let në vend të var?

Nuk ka rëndësi nëse juniori e di përgjigjen përmendësh (3 3 3, pastaj 0 1 2): ka rëndësi që, i udhëhequr, të arrijë të shpjegojë pse — scope-i i variablës dhe ekzekutimi asinkron. Është një pyetje klasike, por e përdorur për të arsyetuar, jo për të kontrolluar kujtesën.

Në pjesën me IA, pyetja kyçe vjen pas kodit: "Çfarë ndodh nëse array-i është bosh? Po nëse vjen null?". Një junior që ka kuptuar arsyeton, edhe nëse gabon; ai që thjesht ka ngjitur përgjigjen nuk di nga t'ia fillojë. Në të dyja rastet ke marrë një informacion të vlefshëm.

Pyetja klasike → versioni i përditësuar

Pyetja klasikeVersioni i përditësuar
Çfarë është një closure?Ky kod ka një memory leak: ku, dhe pse?
Dallimi mes SQL dhe NoSQL?Për këtë rast përdorimi cilin zgjedh, dhe çfarë humb?
Cilat janë parimet SOLID?Kjo klasë testohet me vështirësi: si do ta ristrukturoje?
Çfarë është lazy loading?Bundle-i fillestar është 4 MB: çfarë kontrollon së pari?
Si funksionon një JWT?Një token i vjedhur mbetet i vlefshëm 30 ditë: çfarë ndryshon?

Çfarë duhet hequr (ose pothuajse)

  • Përkufizimet përmendësh si provë e vetme: masin kërkimin, jo aftësinë.
  • Detyrat në shtëpi 8-orëshe: një IA i përfundon për gjysmë ore, dhe penalizojnë kë ka më pak kohë të lirë.
  • Live coding pa internet dhe pa mjete: vlerëson një situatë që në punën reale nuk ekziston.
  • Ndalimi i IA-së në intervistë dhe kërkimi i saj që ditën e parë: është jokoherent, dhe kandidatët më të mirë e vënë re.

Në përmbledhje

Pyetjet klasike nuk kanë vdekur, por vetëm ato nuk masin më atë që ka rëndësi. Për mid dhe senior duhen code review, skenarë realë dhe vendime nën kufizime, mundësisht me IA-në në tavolinë për të parë si e menaxhojnë. Për juniorët duhen ushtrime leximi kodi, pyetje mbi "pse"-në dhe një provë të nxëni: jo sa dinë tashmë, por sa shpejt dhe sinqerisht mësojnë. Në një botë ku kodi gjenerohet në pak sekonda, talenti i vërtetë është të kuptosh kur ai kod është i gabuar. Nëse po përgatitesh nga ana tjetër e tavolinës, pyetjet teknike sipas nivelit i gjen te udhëzuesi me 25 pyetje intervistash për frontend/Angular.

💬 Shënime nga lexuesit

0 shënime

Shkruaj një shënim

Ndaj mendimin tënd, një sugjerim ose një kompliment

Shënimet e fundit

Ende asnjë shënim. Bëhu i pari që komenton!