Asosiy mazmunga o'tish
NextSuhbat blogi

Node.js mok-intervyu: haqiqiysidan oldin ovoz chiqarib mashq qilinadigan savollar

NextSuhbat Team9 daqiqa o'qish0
Node.js mok-intervyu: haqiqiysidan oldin ovoz chiqarib mashq qilinadigan savollar

Node.js intervyusi — server mavzusidagi JavaScript viktorinasi emas. Intervyuchi avvalo bitta narsani tekshiradi: kodingiz jarayondagi hamma narsa bilan bitta thread ni bo’lishishini tushunasizmi va shunga hurmat qiladigan kod yozasizmi. Quyida sikl aslida qanday kechishi, raundma-raund, ball keltiradigan javoblar bilan.

Birinchi raund: event loop

“Event loop ni tushuntiring”. Ball keltiradigani yodlangan fazalar sxemasi emas, oqibat. Node sizning JavaScript ingizni bitta thread da bajaradi; I/O platformaga topshiriladi va uning tugashi callback sifatida navbatga qaytadi. Demak sekin sinxron funksiya bitta so’rovni emas, jarayondagi barcha so’rovlarni to’xtatib qo’yadi. So’rashsa fazalarni ayting (timers, pending callbacks, poll, check, close) va process.nextTick hamda promise mikrovazifalari fazalar orasida, setImmediatedan oldin bo’shashini biling.

Keyingi savol odatda: “unda CPU ga og’ir ish bilan nima qilasiz?” Javobni zina shaklida bering — uni so’rov yo’lidan chiqarish, worker thread lar, bo’laklarga bo’lish yoki navbat va alohida jarayonga berish. Bularning har biri to’g’ri; muammoni sezmaslik esa yiqitadi.

Ikkinchi raund: async patternlar

Callback dan promise ga, undan async/await ga — va har bir qadam nega bo’lgani. Promise.all, allSettled va racefarqini, ushlanmagan rejection ga nima bo’lishini va sikl ichidagi awaitnega ko’pincha tasodifiy unumdorlik bug’i ekanini erkin ayting. Jonli qayta yozishni kuting: “mana callback piramidasi, o’qilishli qiling” yoki “bu beshta so’rov ketma-ket ketyapti, parallel qiling”.

Server uskunasining yaqindan olingan surati
Hamma narsaga bitta thread: Node intervyusining hammasi shu bitta faktdan kelib chiqadi.

Uchinchi raund: streamlar va backpressure

Klassik ssenariy: 512 MB xotirali konteynerda ikki gigabaytlik CSV ni qayta ishlash. Uni satrga o’qib olish — yiqiladigan javob. pipeline()bilan streamlar — o’tadigani, backpressure ni, ya’ni yozuvchi ulgurmagani uchun o’quvchining sekinlashishini eslatish esa sizni bu haqda o’qigan emas, prodakshnda qilgan odam sifatida belgilaydi.

To’rtinchi raund: xatolar va ishonchlilik

Express yoki Fastify handler ida rad etilgan promise ni qanday boshqarasiz, nega ushlanmagan istisno yutib yuborilmay jarayonni tugatishi kerak, SIGTERM da graceful shutdown va operatsion xato (baza timeout — qayta urinish) bilan dasturchi xatosi (undefined is not a function — tuzatish) farqi. Timeout lar, backoff bilan retry va tashqi chaqiruvlarda circuit breaker ham shu javobning bir qismi.

Beshinchi raund: masshtablash va deploy

Barcha yadrolarni ishlatish uchun cluster rejimi yoki bir nechta konteyner; instansiyalar almashinuvchi bo’lishi uchun holatsizlik; umumiy holat va kesh uchun Redis; sekin ishlarning hammasi uchun navbat. Keyin kuzatuvchanlik savoli: o’tgan seshanba p95 ikki barobar oshganini qanday bilib olasiz? Bu yerda strukturali loglar, metrikalar va tracing ni eslatish bitta gapga tushadi, ishonchni esa ancha oshiradi.

Oltinchi raund: dizayn savoli

Ko’pchilik Node sikllari “URL qisqartiruvchi loyihalang”, “rate limiter loyihalang” yoki “ilovamiz uchun bildirishnoma xizmatini loyihalang” bilan tugaydi. Avval API, keyin saqlash, keyin nosozlik holatlari, keyin masshtab bo’yicha gapiring. Trade-off laringizni ovoz chiqarib ayting — intervyuchi sxemani emas, fikrlashni baholaydi.

Buni qanday mashq qilish kerak

Mavzularni bir marta o’qing, keyin varaqni yoping va har bir javobni kimdir so’raganday ovoz chiqarib ayting. Event loop izohi qoqilmasdan taxminan to’qson soniya olishi kerak. Agar olmasa — mana sizga birinchi mashq sessiyasi. Backend intervyusini boshdan oxir to’liq mok tarzda, real intervyu tilida o’tkazish tanish mavzular ro’yxatini talab bo’yicha ayta oladigan javoblarga aylantiradi.

Tez-tez beriladigan savollar

Node.js intervyusida eng ko'p nima so'raladi?
Event loop va ayniqsa uning oqibati: JavaScript ingiz bitta thread da ishlaydi, shuning uchun bloklovchi ish jarayondagi barcha so'rovlarni to'xtatadi. Undan keyin async patternlar, xatolarni boshqarish va bitta system design savoli keladi.
"Node da CPU ga og'ir ishni qanday boshqarasiz?" savoliga qanday javob beraman?
Uni so'rov yo'lidan chiqaring. Variantlar: worker thread lar, loop nafas olishi uchun ishni bo'laklash yoki alohida xizmat qayta ishlaydigan navbatga uzatish. Ular orasidagi trade-off ni aytish jimgina bittasini tanlashdan yaxshiroq baholanadi.
Node.js intervyusi uchun TypeScript kerakmi?
2026-yilda Node bo'yicha yollayotgan ko'pchilik jamoalar TypeScript ishlatadi, shuning uchun hech bo'lmasa tip savollarini kuting: generic lar, unknown va any farqi, API chegarasini qanday tiplash. Chuqur tip gimnastikasi kamdan-kam talab qilinadi.
Node.js mok-intervyusini qanday o'tkazaman?
Backend dasturchi rolini tanlang, tajriba darajangizni belgilang va gapirib javob bering. Event loop izohini qoqilmay taxminan to'qson soniya oladigan bo'lguncha mashq qiling, keyin streamlar, xatolar va dizayn savoliga o'ting.

Maqolani baholang

Izoh yoki baho qoldirish uchun tizimga kiring.

Hozircha baholar yo'q
Kirish

Izohlar · 0 ta izoh

Izoh yoki baho qoldirish uchun tizimga kiring.

Kirish

Hozircha izohlar yo'q. Birinchi bo'ling.