Veri yapıları ve algoritmalar konusu, çoğu yeni başlayanın "sonra bakarım" deyip ertelediği ama her teknik mülakatta karşılarına çıkan bir alandır. Bu rehberde, hiç algoritma bilmeyen birinin 8-12 hafta içinde solid bir temele oturması için sistematik bir yol haritası sunuyorum. Adım 0: Önkoşullar. En az bir programlama dilinde temel seviye yetkinlik gerekli. Döngü, koşul, fonksiyon, dizi yazabiliyor olman yeterli. Tercihen Python, JavaScript veya Java; çünkü kaynakların büyük çoğunluğu bu dillerde. Adım 1: Big-O analizi. Algoritmaya geçmeden önce "verim" kavramını ölç. Time complexity ve space complexity nedir, O(1), O(log n), O(n), O(n log n), O(n^2), O(2^n) farkı nedir öğren. Bir algoritmanın hızlı mı yavaş mı olduğuna karar verebilmek için bu önkoşul. Adım 2: Lineer veri yapıları. Array, dynamic array (list), linked list, stack, queue, deque. Her birinin insert, delete, access maliyetini ezber yerine türetebilecek seviyede anlamalısın. Pratik: stack ile parantez dengesi kontrolü, queue ile sıralı görev işleme. Adım 3: Hashing. Hash table, hash set, hash map. Collision çözümleri (chaining, open addressing). Pratik: bir dizide tekrar eden eleman bulma, iki dizinin kesişimini O(n)'de hesaplama. Adım 4: Ağaç yapıları. Binary tree, binary search tree, balanced trees (AVL, red-black kavramsal düzeyde), trie. Tree traversal (preorder, inorder, postorder, BFS, DFS). Pratik: bir BST'de min/max, BST validasyonu, trie ile autocomplete. Adım 5: Heap ve priority queue. Min-heap, max-heap, heapify operasyonu. Pratik: bir akışın top-k elemanını bulma, k sıralı listenin merge'i. Adım 6: Graf yapıları. Adjacency list ve matrix gösterimi. BFS, DFS, topological sort, Dijkstra (en kısa yol), Union-Find. Pratik: bir labirentte çıkış yolu bulma, sosyal ağda arkadaşlık derecesi hesaplama. Adım 7: Algoritma teknikleri. Recursion ve backtracking. Greedy yaklaşım. Divide and conquer (merge sort, quick sort, binary search). Dynamic programming (memoization ve tabulation). Sliding window ve two pointers. Bu beşi, çoğu mülakat sorusunun temelidir. Adım 8: Pratik düzeni. Haftada 8-10 problem çöz. Kolay seviyede başla, orta seviyeye geç. Bir problemi 25-30 dakikada çözemezsen çözümü oku, ertesi gün aynı problemi sıfırdan tekrar dene. Pattern tanıma, ezbere geçer. Adım 9: Mock interview. Son 2-3 haftada eş veya arkadaşla simülasyon yap, kendi sesini kaydet. Çözmek kadar açıklayabilmek önemli, çünkü mülakatta düşünce sürecini sözlü ifade etmen istenir. Kaynak önerisi: yapılandırılmış kurs + problem çözme sitesi kombinasyonu en verimlisidir. Yalnız problem çözmek pattern öğretmez, yalnız kurs izlemek refleks kazandırmaz. İkisinin dengesi kritik. Kritik uyarı: bu alan, bilgi yığma değil refleks geliştirme alanıdır. Günde 1 saat 12 hafta, haftada 7 saat 2 ay'dan daha etkili. Süreklilik her şeydir.