Reference · Pagi hari interview · cetak satu halaman
Ulang sebelum interview
Daftar akhir dari Lesson 0018 dan review database 0024. Uji diri dulu dengan suara keras, baru buka reference kalau macet.
1 · Topik lemah dari mock 0018
- Belum ada hasil mock 0018. Setelah hasilnya ditempel ke agent, topik lemah dicatat di sini. Sebelum itu, pakai tabel di bagian 3 dan ulang baris yang ditandai ★ (jebakan default bagian 1a).
2 · Topik lemah dari review 0007 dan 0012
- Belum ada hasil review 0007 dan 0012.
2b · Topik lemah dari review database 0024
- Belum ada hasil review 0024. Sebelum ada, ulang semua baris "Database" di bawah.
3 · Semua topik: pertanyaan uji diri → reference
| Lesson | Uji diri (jawab 60 detik tanpa melihat) | Kalau macet, buka |
|---|---|---|
| 0001 | Jelaskan alur request dari Controller sampai DbContext dan peran tiap layer. | Layered architecture |
| 0002 | ★ Value type vs reference type; kenapa DTO cocok ditulis sebagai record? | C# untuk dev TS |
| 0003 | ★ Kenapa .Result dan async void berbahaya? IEnumerable vs IQueryable? | async & LINQ |
| 0025 | Tulis top-3 Product termahal per Category dengan LINQ. First vs FirstOrDefault vs Single? Method C# di Where EF Core? | LINQ live coding |
| 0004 | ★ Tiga Service Lifetime, kenapa DbContext Scoped, apa itu captive dependency? | Service Lifetime |
| 0005 | Kenapa urutan middleware penting? Di mana secret disimpan saat development? | Middleware & Options |
| 0006 | ★ Apa itu N+1 dan cara mencegahnya? Kapan pakai AsNoTracking? | EF Core |
| 0008 | ★ SOLID mana yang paling sering Anda terapkan? Beri contoh DIP dari Product Catalog. | SOLID |
| 0009 | ★ Demokan satu siklus red-green-refactor. Kenapa test harus gagal dulu? | Red-Green-Refactor |
| 0010 | ★ Unit vs integration test; mock vs stub vs fake; apa gunanya WebApplicationFactory? | Jenis test |
| 0011 | ★ Gambar Clean Architecture. Perlukah Repository di atas EF Core? | Clean Architecture |
| 0013 | NgModule, binding, dan Lifecycle Hook, dengan padanan React-nya. | Angular dasar |
| 0014 | Angular DI vs React Context; cara melindungi halaman dengan guard. | Angular DI & routing |
| 0015 | Observable vs Promise; kapan switchMap; cara mencegah memory leak subscription. | RxJS |
| 0016 | Reactive vs template-driven forms; apa yang dikerjakan HTTP Interceptor? | Forms, HttpClient, Interceptor |
| 0017 | Jelaskan alur login aplikasi Anda: JWT, authentication vs authorization, CORS, error handling. | Auth, CORS, error |
| 0019 | ★ Tulis query 3 Product termahal per Category (ROW_NUMBER). WHERE vs HAVING? Kenapa aturan Product juga dijaga constraint? | SQL dasar |
| 0020 | ★ Kapan pakai Stored Procedure dibanding query EF Core? Panggil SP dari EF Core/Dapper tanpa SQL injection; tulis SP dengan TRY/CATCH + THROW. | Stored Procedure |
| 0021 | ★ Lima isolation level dan anomali yang dicegah masing-masing; default SQL Server 2022 (RCSI OFF). Apa itu deadlock, bedanya dengan blocking, cara mencegah dan menangani 1205? | Transaction & locking |
| 0022 | ★ Clustered vs non-clustered (analogi buku). Query Product per Category lambat: index apa (urutan kolom, INCLUDE), cara membuktikan, kapan index merugikan? | Index |
| 0023 | ★ Query lambat dari EF Core: bagaimana menganalisis (log/ToQueryString → actual plan + logical reads → SARGable, index, parameter sniffing, keyset pagination → ukur lagi)? | Optimasi query |
3b · Ringkasan database: kerangka jawaban 30 detik
Tutup dulu kolom kanan dengan kertas, jawab dari kolom kiri. Kerangka ini ringkasan lesson 0019–0023 dan 0006; detail dan sumber resmi ada di reference-nya.
| Pertanyaan interview | Poin yang harus terucap |
|---|---|
| Clustered vs non-clustered index? | Clustered = data tabel itu sendiri, terurut menurut key, satu per tabel (default PK). Non-clustered = struktur terpisah berisi key + penunjuk ke baris (clustered key), bisa banyak. Analogi: isi buku terurut vs indeks di belakang buku. |
| Query per Category lambat, index apa? | Kolom filter kesetaraan dulu, lalu kolom urut/rentang: (CategoryId, Price DESC); kolom SELECT lain di INCLUDE supaya covering (tanpa Key Lookup). Buktikan dengan actual plan (scan → seek) dan logical reads turun. Index memperlambat INSERT/UPDATE dan makan storage, jadi jangan index kolom berselektivitas rendah. |
| Membaca execution plan? | Estimated (tanpa eksekusi) vs actual (dengan jumlah baris sebenarnya). Cari: Scan vs Seek, Key Lookup, estimasi vs aktual baris yang jauh berbeda, operator paling mahal. Ukur dengan SET STATISTICS IO, TIME ON. |
| SARGable? | Jangan bungkus kolom ber-index dengan fungsi: YEAR(OrderDate) = 2024 → rentang >= '2024-01-01' AND < '2025-01-01'; LEFT(Name,3)='Abc' → LIKE 'Abc%'. Waspadai konversi implisit (nvarchar vs varchar). |
| Parameter sniffing? | Plan dikompilasi untuk nilai parameter pertama lalu dipakai ulang untuk nilai lain yang distribusinya beda. Obat: OPTION (RECOMPILE), OPTIMIZE FOR, index yang lebih baik; SQL Server 2022 punya PSP optimization (compat 160). |
| Pagination data besar? | OFFSET/FETCH tetap membaca baris yang dilewati, makin lambat di halaman jauh. Keyset: TOP (20) … WHERE Id > @lastId ORDER BY Id (dua kunci: Price > @lastPrice OR (Price = @lastPrice AND Id > @lastId)) + index yang cocok; urutan harus unik; tidak bisa lompat ke halaman acak. |
| Query lambat dari EF Core? | Lihat SQL-nya (LogTo/ToQueryString, TagWith) → jalankan di SSMS dengan actual plan → perbaiki (index, SARGable, proyeksi Select, N+1, AsNoTracking) → ukur lagi. |
N+1 dan AsNoTracking? (0006) | N+1 = 1 query daftar + 1 query per baris (lazy loading di loop). Obat: Include (eager loading) atau proyeksi Select. AsNoTracking untuk query baca saja: tanpa snapshot Change Tracker, lebih hemat; jangan untuk entity yang akan di-update lewat SaveChanges. |
| Isolation level? | READ UNCOMMITTED (dirty read), READ COMMITTED (default; RCSI OFF di SQL Server 2022, pembaca menunggu writer), REPEATABLE READ (cegah non-repeatable read), SERIALIZABLE (cegah phantom, range lock), SNAPSHOT (row versioning, pembaca tidak menunggu, update konflik gagal 3960). Makin tinggi = makin aman, makin banyak blocking. |
| Deadlock vs blocking? | Blocking: satu menunggu yang lain, selesai sendiri. Deadlock: saling menunggu melingkar; SQL Server memilih victim (error 1205). Cegah: transaction pendek, urutan akses tabel/baris sama, index yang tepat, UPDLOCK saat baca-lalu-update. Tangani: retry di aplikasi. |
| Transaction di T-SQL dan EF Core? | ACID. T-SQL: SET XACT_ABORT ON + BEGIN TRAN di dalam TRY, CATCH → IF XACT_STATE() <> 0 ROLLBACK; THROW;. EF Core: satu SaveChanges sudah satu transaction; beberapa langkah → BeginTransactionAsync (dibungkus execution strategy bila retry aktif); lost update → optimistic concurrency (rowversion). |
| Kapan Stored Procedure? | Logika berat data/banyak baris, kontrak untuk DBA, izin EXECUTE saja. Kelemahan: logika tersebar, sulit di-test dan di-version. Default tetap query EF Core. Panggil dengan parameter (FromSql interpolated, Dapper CommandType.StoredProcedure), jangan concat string (SQL injection). |
| Top-N per grup, WHERE vs HAVING? | ROW_NUMBER() OVER (PARTITION BY CategoryId ORDER BY Price DESC) di CTE, lalu WHERE rn <= 3. WHERE memfilter baris sebelum GROUP BY, HAVING memfilter grup sesudahnya. |
4 · STAR dan pindah stack
- Ucapkan keempat cerita dari
star/draf-star.mdsekali, masing-masing ±2 menit: insiden, refactor, konflik, belajar cepat. - Cek: Action porsi terbesar (±60%), pakai "saya", Result punya angka. [1]
- "Kenapa pindah ke .NET/Angular?" dalam 60–90 detik: alasan menuju sesuatu → transfer skill → bukti mini project → yang masih diperdalam.
5 · Pagi hari interview (±30 menit)
- Bagian 1, 2, dan 2b: uji diri setiap topik lemah dengan suara keras, baru buka reference-nya.
- Bagian 3b (kalau posisi menyebut SQL Server): jawab kolom kiri dengan suara keras, cek kolom kanan.
- Bagian 3: baca kolom uji diri saja; berhenti di pertanyaan yang membuat ragu.
- Bagian 4: ucapkan satu cerita STAR dan jawaban pindah stack.
- Buka repo mini project di GitHub, pastikan README dan test hijau siap ditunjukkan.
Sumber: [1] MIT CAPD: The STAR method for behavioral interviews. Sumber topik teknis dikutip di masing-masing reference.