Pendahuluan
Wawancara kerja untuk posisi .NET Developer atau C# Developer sering kali menanyakan pertanyaan teknis yang mendalam. Ebook ini dirancang untuk membantu Anda memahami dan menjawab 10 pertanyaan wawancara yang paling umum dan penting dengan cara yang cerdas dan mudah dipahami.
Setiap pertanyaan akan dijelaskan secara detail, disertai contoh kode dan sumber belajar tambahan agar Anda dapat memperdalam pemahaman dan meningkatkan kemampuan Anda.
1. Apa itu .NET dan C#?
.NET
adalah sebuah platform pengembangan perangkat lunak yang dikembangkan oleh Microsoft. Platform ini menyediakan lingkungan untuk membangun dan menjalankan aplikasi di berbagai perangkat dan sistem operasi.
C#
adalah bahasa pemrograman yang dikembangkan oleh Microsoft dan berjalan di atas platform .NET. C# adalah bahasa yang modern, berorientasi objek, dan banyak digunakan untuk membangun aplikasi desktop, web, mobile, dan game.
Contoh kode sederhana C#:
using System;
class Program {
static void Main() {
Console.WriteLine("Halo, dunia!");
}
}
Kode di atas menampilkan teks "Halo, dunia!" ke konsol. Ini adalah contoh program paling dasar dalam C#.
2. Apa perbedaan antara .NET Framework, .NET Core, dan .NET 5/6/7?
Berikut penjelasan singkat perbedaan ketiganya:
-
.NET Framework:
Platform .NET asli yang hanya berjalan di Windows. Cocok untuk aplikasi desktop dan web berbasis Windows.
-
.NET Core:
Versi cross-platform dari .NET yang dapat berjalan di Windows, Linux, dan macOS. Lebih ringan dan modular dibanding .NET Framework.
-
.NET 5/6/7:
Merupakan evolusi dari .NET Core yang menyatukan semua platform .NET menjadi satu platform tunggal yang modern dan cross-platform.
3. Apa itu Garbage Collection di .NET?
Garbage Collection (GC) adalah mekanisme otomatis di .NET yang mengelola memori dengan membersihkan objek yang sudah tidak digunakan lagi agar memori dapat digunakan kembali.
GC membantu mencegah memory leaks dan mengurangi beban pengelolaan memori secara manual oleh programmer.
Cara kerja Garbage Collection:
-
GC memonitor objek yang dialokasikan di heap.
-
Jika objek tidak lagi direferensikan, GC menandainya sebagai sampah.
-
GC membersihkan objek tersebut dan mengembalikan memori ke sistem.
Anda tidak perlu memanggil GC secara manual, tapi jika ingin, Anda bisa menggunakan
GC.Collect()
(tidak disarankan kecuali sangat diperlukan).
4. Jelaskan konsep OOP di C#
OOP (Object-Oriented Programming) adalah paradigma pemrograman yang menggunakan objek dan kelas untuk memodelkan data dan perilaku.
Empat pilar utama OOP di C# adalah:
-
Encapsulation:
Menyembunyikan detail implementasi dan hanya mengekspos interface yang diperlukan.
-
Inheritance:
Pewarisan sifat dan perilaku dari kelas induk ke kelas anak.
-
Polymorphism:
Kemampuan objek untuk mengambil banyak bentuk, biasanya melalui overriding dan interface.
-
Abstraction:
Menyederhanakan kompleksitas dengan hanya menampilkan fitur penting.
Contoh kode OOP sederhana:
public class Hewan {
public virtual void Suara() {
Console.WriteLine("Hewan bersuara");
}
}
public class Kucing : Hewan {
public override void Suara() {
Console.WriteLine("Meong");
}
}
class Program {
static void Main() {
Hewan h = new Kucing();
h.Suara(); // Output: Meong
}
}
5. Apa itu async dan await di C#?
async
dan
await
adalah fitur di C# untuk memudahkan pemrograman asynchronous, yaitu menjalankan operasi yang memakan waktu tanpa memblokir thread utama.
Dengan async/await, Anda bisa menulis kode asynchronous yang mudah dibaca dan dipelihara.
Contoh penggunaan async/await:
using System;
using System.Threading.Tasks;
class Program {
static async Task Main() {
Console.WriteLine("Mulai");
await TugasAsync();
Console.WriteLine("Selesai");
}
static async Task TugasAsync() {
await Task.Delay(2000); // Simulasi tugas 2 detik
Console.WriteLine("Tugas selesai");
}
}
Output program:
-
Mulai
-
(tunggu 2 detik)
-
Tugas selesai
-
Selesai
6. Bagaimana cara menangani exception di C#?
Exception adalah kesalahan yang terjadi saat program berjalan. Di C#, exception ditangani menggunakan blok
try
,
catch
, dan
finally
.
Contoh penanganan exception:
try {
int a = 10;
int b = 0;
int c = a / b; // Ini akan menyebabkan exception
} catch (DivideByZeroException ex) {
Console.WriteLine("Terjadi pembagian dengan nol!");
} finally {
Console.WriteLine("Blok finally selalu dijalankan.");
}
Blok
finally
akan selalu dijalankan, baik exception terjadi atau tidak, biasanya digunakan untuk membersihkan resource.
7. Apa itu LINQ dan bagaimana cara menggunakannya?
LINQ (Language Integrated Query) adalah fitur di C# yang memungkinkan Anda menulis query data secara deklaratif langsung di dalam bahasa pemrograman.
LINQ dapat digunakan untuk query koleksi data seperti array, list, XML, database, dan lainnya.
Contoh penggunaan LINQ pada List:
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
List<int> angka = new List<int> { 1, 2, 3, 4, 5, 6 };
var genap = from n in angka
where n % 2 == 0
select n;
foreach (var n in genap) {
Console.WriteLine(n);
}
}
}
Output program:
8. Jelaskan perbedaan antara interface dan abstract class
Interface
dan
abstract class
keduanya digunakan untuk mendefinisikan kontrak dan perilaku yang harus diimplementasikan oleh kelas lain, tapi ada perbedaan penting:
-
Interface:
Hanya mendefinisikan method/properti tanpa implementasi. Kelas bisa mengimplementasikan banyak interface.
-
Abstract class:
Bisa memiliki implementasi method dan properti. Kelas hanya bisa mewarisi satu abstract class.
Contoh interface dan abstract class:
// Interface
public interface IBerjalan {
void Jalan();
}
// Abstract class
public abstract class Hewan {
public abstract void Suara();
public void Tidur() {
Console.WriteLine("Hewan tidur");
}
}
9. Apa itu Dependency Injection?
Dependency Injection (DI) adalah pola desain yang memungkinkan objek menerima dependensi (komponen yang dibutuhkan) dari luar, bukan membuatnya sendiri.
DI membantu membuat kode lebih modular, mudah diuji, dan dipelihara.
Contoh sederhana Dependency Injection:
public interface IMessageService {
void KirimPesan(string pesan);
}
public class EmailService : IMessageService {
public void KirimPesan(string pesan) {
Console.WriteLine("Mengirim email: " + pesan);
}
}
public class Notifikasi {
private readonly IMessageService _service;
public Notifikasi(IMessageService service) {
_service = service;
}
public void Kirim(string pesan) {
_service.KirimPesan(pesan);
}
}
class Program {
static void Main() {
IMessageService service = new EmailService();
Notifikasi notif = new Notifikasi(service);
notif.Kirim("Halo dari DI!");
}
}
10. Sumber belajar dan referensi tambahan
Berikut beberapa sumber belajar yang sangat berguna untuk memperdalam pemahaman .NET dan C#:
Dengan memanfaatkan sumber belajar di atas dan latihan secara konsisten, Anda akan siap menghadapi wawancara .NET/C# dengan percaya diri dan jawaban yang cerdas.