Pertanyaan wawancara .NET apa yang perlu saya antisipasi?

Oleh Aaron Cao · Diperbarui

Pertanyaan wawancara .NET apa yang perlu saya antisipasi?
Bersiaplah menghadapi pertanyaan runtime (CLR, pengumpulan sampah, tipe nilai versus tipe referensi), pertanyaan bahasa (async dan await, LINQ, generik, record), pertanyaan framework (middleware dan injeksi dependensi ASP.NET Core, EF Core), serta skenario seperti kebocoran memori dalam layanan yang berjalan lama atau endpoint API yang lambat. Pewawancara menilai cara Anda bernalar.

Bersiaplah menghadapi pertanyaan runtime (CLR, pengumpulan sampah, tipe nilai versus tipe referensi), pertanyaan bahasa (async dan await, LINQ, generik, record), pertanyaan framework (middleware dan injeksi dependensi ASP.NET Core, EF Core), serta skenario seperti kebocoran memori dalam layanan yang berjalan lama atau endpoint API yang lambat. Pewawancara menilai cara Anda bernalar.

Pertanyaan runtime dan bahasa apa yang membuka wawancara .NET?

Pewawancara memulai dari tempat framework bermula: runtime. Bersiaplah menjelaskan fungsi Common Language Runtime (memuat assembly, mengompilasi intermediate language secara just-in-time, mengelola memori), lalu membahas pengumpulan sampah satu tingkat lebih dalam. Rangkaian pertanyaan lanjutannya dapat diperkirakan: mengapa pengumpul sampah bersifat generasional, apa yang membuat objek bertahan hingga generasi berikutnya, untuk apa large object heap digunakan, serta mengapa IDisposable dan using tetap diperlukan jika memori sudah dikelola. Jawab pertanyaan terakhir dengan sumber daya tak terkelola seperti handle berkas dan koneksi, yang tidak diketahui oleh pengumpul sampah sehingga tidak dapat segera dilepaskan olehnya.

  • Tipe nilai dan tipe referensi. Di mana masing-masing berada, apa arti penyalinan bagi keduanya, dan biaya boxing.
  • async dan await. Jelaskan bahwa task yang ditunggu membebaskan thread pemanggil alih-alih memblokirnya, mengapa async void dikhususkan untuk event handler, dan deadlock apa yang dimaksud ketika orang memperingatkan tentang .Result.
  • LINQ. Eksekusi tertunda adalah jebakannya: kueri IEnumerable dijalankan ketika dienumerasi, bukan ketika ditulis, dan kueri terhadap penyedia basis data hanya diterjemahkan menjadi SQL untuk ekspresi yang dipahami penyedia tersebut.
  • Generik, interface, dan record. Constraint, alasan memilih interface daripada kelas dasar demi kemudahan pengujian, serta manfaat kesetaraan nilai pada record.

Jawab setiap pertanyaan dengan mekanismenya dan satu konsekuensi. Menyatakan bahwa pengumpulan generasi nol murah karena sebagian besar objek mati muda merupakan tingkat jawaban yang diinginkan pewawancara; sekadar menyebutkan generasi tanpa alasannya tidaklah cukup.

Seperti apa pertanyaan ASP.NET Core dan EF Core?

Anda percaya diri menulis controller, tetapi khawatir pertanyaannya akan membahas mekanisme internal yang jarang Anda sentuh. Kekhawatiran itu beralasan karena di sinilah pertanyaan framework muncul. Berikut mekanisme tersebut dalam urutan yang biasanya ditanyakan, beserta pertanyaan lanjutan untuk masing-masing.

  • Pipeline permintaan. Middleware berjalan sesuai urutan pendaftarannya, dan setiap komponen menentukan apakah akan memanggil komponen berikutnya. Pertanyaan lanjutan: di mana autentikasi ditempatkan relatif terhadap otorisasi, dan apa yang terjadi jika keduanya didaftarkan dalam urutan terbalik?
  • Siklus hidup injeksi dependensi. Singleton hidup selama aplikasi berjalan, scoped hidup selama satu permintaan, dan transient dibuat setiap kali di-resolve. Jebakan klasiknya adalah menyuntikkan layanan scoped, seperti konteks basis data, ke dalam singleton; bersiaplah menjelaskan mengapa hal itu merupakan bug.
  • Konfigurasi dan options. Sumber berlapis, override lingkungan, dan pola options untuk pengaturan bertipe.
  • EF Core. Pelacakan perubahan dan kapan menonaktifkannya untuk kueri hanya-baca, masalah N+1 dan cara eager loading atau proyeksi menghindarinya, migrasi, serta kondisi nyata ketika kueri yang ditulis manual lebih unggul daripada LINQ.
  • Pengujian. Bagaimana interface dan container DI membuat layanan dapat diuji, serta apa yang dapat dan tidak dapat dibuktikan oleh penyedia dalam memori mengenai basis data nyata.

Kandidat terkuat menghubungkan semua hal ini: konteks scoped yang di-resolve di dalam layanan latar belakang singleton bukanlah pertanyaan trivia, melainkan bug memori dan kebenaran yang benar-benar pernah dirilis oleh pewawancara, dan mereka ingin mendengar bahwa Anda akan membuat scope secara eksplisit.

Bagaimana jalannya pertanyaan skenario?

Rangkaian wawancara tingkat senior menyajikan suatu gejala dan mengamati metode Anda. Salah satu contoh: seorang backend engineer yang mengikuti wawancara untuk posisi senior di perusahaan logistik diberi tahu bahwa penggunaan memori API ASP.NET Core terus meningkat selama berhari-hari hingga container dimulai ulang. Jawaban yang kuat tidak menebak. Jawaban itu menanyakan apa yang berubah, memeriksa objek yang tertahan oleh cache statis atau subscription event berumur panjang, mencari layanan scoped yang ditahan singleton, memeriksa pertumbuhan large object heap, dan menggunakan snapshot memori sebelum mengusulkan perbaikan. Pewawancara menilai urutan penyelidikan tersebut.

Skenario lain yang berulang: endpoint yang lambat hanya saat beban tinggi, dengan jawaban yang beralih dari panggilan basis data sinkron ke async, kehabisan connection pool, dan caching; race condition dalam koleksi bersama serta biaya penggunaan koleksi konkuren dan opsi locking; permintaan yang harus memanggil tiga layanan downstream serta cara Anda menangani timeout, percobaan ulang, dan kegagalan parsial; serta migrasi yang harus menambahkan kolom tanpa downtime. Dalam setiap kasus, nyatakan batasannya, pilih mekanisme, dan jelaskan trade-off-nya secara lisan.

Semua ini jauh lebih mudah jika Anda telah melatihnya dengan suara lantang beserta pertanyaan lanjutannya, yang merupakan tujuan mode wawancara simulasi; kumpulan bahasa dan peran lainnya tersedia di pertanyaan wawancara berdasarkan peran dan topik.

Dapatkah asisten wawancara AI membantu menjawab pertanyaan .NET?

Dalam sesi percakapan, ya, sesuai batasan yang dinyatakan. Aplikasi desktop native SubcueAI untuk macOS dan Windows menangkap audio sistem serta mikrofon Anda, lalu menampilkan saran jawaban singkat dalam overlay lokal. Jadi, saat pewawancara menanyakan mengapa konteks scoped di dalam singleton merupakan bug, mekanismenya tampil di layar sementara Anda menjelaskannya dengan kata-kata sendiri. Ekstensi browser mendukung panggilan dalam tab browser di Chrome dan Edge dengan hanya menangkap audio tab rapat. Tidak ada bot yang bergabung ke panggilan dan tidak ada apa pun yang disisipkan ke halaman rapat; petunjuk penyiapan tersedia di halaman tutorial.

Batasannya: asesmen berpengawas, layar yang direkam, laptop yang dikelola perusahaan, atau latihan live coding ketika Anda mengetik C# di bawah pengawasan berada di luar cakupan, dan kemampuan asisten paling lemah tepat ketika wawancara meminta Anda menulis kode. Kemampuannya paling kuat untuk pertanyaan runtime, framework, dan trade-off di atas. Masukkan resume Anda terlebih dahulu agar saran mencerminkan sistem yang benar-benar Anda bangun; profil tersebut tersimpan di pembuat resume.

FAQ

Mengapa pengumpul sampah .NET memiliki generasi?

Sebagian besar objek mati muda, sehingga mengumpulkan generasi terbaru secara sering dan murah dapat membebaskan sebagian besar memori tanpa memindai seluruh heap. Objek yang bertahan dipromosikan dan lebih jarang dikumpulkan, sehingga jeda tetap singkat untuk pola alokasi umum.

Apa perbedaan singleton, scoped, dan transient dalam ASP.NET Core?

Singleton dibuat sekali untuk aplikasi, scoped sekali per permintaan, dan transient setiap kali di-resolve. Menyuntikkan layanan scoped ke dalam singleton membuatnya tertahan selama masa hidup aplikasi, yang merupakan bug umum pada konteks basis data.

Apa yang sebenarnya dilakukan await?

await mendaftarkan sisa metode sebagai continuation dan mengembalikan kendali kepada pemanggil, sehingga thread bebas sementara pekerjaan yang ditunggu diselesaikan. Sebaliknya, memblokir task dengan .Result atau .Wait dapat menyebabkan deadlock dalam konteks yang membutuhkan thread tersebut kembali.

Apa itu masalah N+1 dalam EF Core?

Memuat daftar parent lalu menjalankan kueri terpisah untuk setiap parent guna mengambil child-nya. Eager loading dengan Include, atau memproyeksikan hanya field yang diperlukan, mengubahnya menjadi satu atau dua kueri.

Dapatkah SubcueAI membantu selama tes coding .NET berpengawas?

Tidak. Asesmen berpengawas dan direkam berada di luar cakupan, sedangkan live coding di bawah pengawasan adalah pekerjaan Anda sendiri. SubcueAI ditujukan untuk sesi percakapan, dan mode wawancara simulasi adalah tempat untuk berlatih sebelumnya.

Pertanyaan terkait

← Selengkapnya tentang Pertanyaan Wawancara Berdasarkan Peran & Topik