diff --git a/README.md b/README.md index fd1118d..6acbb16 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,22 @@ -# Coding Interview University +# Kodlama Mülakat Üniversitesi -> I originally created this as a short to-do list of study topics for becoming a software engineer, -> but it grew to the large list you see today. After going through this study plan, [I got hired -> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> You probably won't have to study as much as I did. Anyway, everything you need is here. +> Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, +> ama bugün gördüğünüz büyük listeye dönüştü. Bu çalışma planını tamamladıktan sonra, [Amazon tarafından +> Yazılım Geliştirme Mühendisi olarak işe alındım.](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Muhtemelen yaptığım kadar çok çalışmanıza gerek kalmayacaktır. Her neyse, ihtiyaç duyabileceğiniz her şey burada. > -> The items listed here will prepare you well for in an interview at just about any software company, -> including the giants: Amazon, Facebook, Google or Microsoft. +> Her hangi bir yazılım firmasında bir mülakata gireceğinizde ihtiyaç duyabileceğiniz her konu başlığı burada listelenmiştir, +> Amazon, Facebook, Google ya da Microsoft dahil. > -> *Best of luck to you!* +> *İyi Şanslar!* -Translations: +Çeviriler: - [中文版本](translations/README-cn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) -Translations in progress: +Çevirisi Devam Edenler: - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) @@ -36,162 +36,159 @@ Translations in progress: - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) -## What is it? +## Nedir? -This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. +Bir web geliştiricisinden (CS derecesi olmadan, alaylı), büyük bir firmada yazılım mühendisi olmak için çok aylı bir çalışma planıdır. ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) -This is meant for **new software engineers** or those switching from -software/web development to software engineering (where computer science knowledge is required). If you have -many years of experience and are claiming many years of software engineering experience, expect a harder interview. +Bu liste, yeni yazılım mühendisleri için veya web ya da yazılım geliştiriciliği alanlarından yazılım mühendisliğine (bilgisayar bilimleri bilgisi gerekli) geçiş için hazırlanmıştır. +Eğer uzun yıllardır tecreübeniz varsa ve yazılım mühendisliği tecrübesi istiyorsanız, daha zor bir röportaj bekleyin. +Eğer uzun yıllardır yazılım/web geliştirme deneyiminiz varsa, Google, Amazon, Facebook ve Microsoft gibi büyük yazılım firmalarının yazılım mühendisliğini yazılım/web geliştirmekten farklı gördüğüne, ve bilgisayar bilimleri bilgisi istediğine dikkat edin. -If you have many years of software/web development experience, note that large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. - -If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). +Eğer güvenlik ya da operasyon mühendisi olmak istiyorsanız, opsiyonel listeden (network, güvenlik) daha fazla çalışın. --- -## Table of Contents +## İçindekiler -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort +- [Nedir?](#nedir) +- [Neden kullanılır?](#neden-kullanılır) +- [Nasıl kullanılır?](#nasıl-kullanılır) +- [Yeterince zeki olmadığınızı hissetmeyin](#yeterince-zeki-olmadığınızı-hissetmeyin) +- [Video Kaynakları Hakkında](#video-kaynakları-hakkında) +- [Mülakat Süreci & Genel Mülakat Hazırlığı](#interview-process--general-interview-prep) +- [Mülakat İçin Bir Dil Seçin](#pick-one-language-for-the-interview) +- [Kitap Listesi](#book-list) +- [Başlamadan Önce](#before-you-get-started) +- [Örtülü Olan Ne Görmüyotsun](#what-you-wont-see-covered) +- [Önkoşul Bilgisi](#prerequisite-knowledge) +- [Günlük Plan](#the-daily-plan) +- [Algoritma Karmaşıklığı / Big-O / Asimptotik Analizler](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Veri Yapıları](#data-structures) + - [Diziler](#arrays) + - [Bağlı Listeler](#linked-lists) + - [Yığın](#stack) + - [Kuyruk](#queue) + - [Hash tablosu](#hash-table) +- [Ekstra Bilgi](#more-knowledge) + - [İkili arama](#binary-search) + - [Bitsel operasyonlar](#bitwise-operations) +- [Ağaçlar](#trees) + - [Ağaçlar - Notlar & Arkaplan](#trees---notes--background) + - [İkili Arama Ağaçları: BST'ler](#binary-search-trees-bsts) + - [Yığın / Öncelik Kuyruğu / İkili Yığın](#heap--priority-queue--binary-heap) + - dengeli arama ağaçları (genel konseptler, detaylar hariç) + - dolaşımlar: preorder, inorder, postorder, BFS, DFS +- [Sıralama](#sorting) + - seçimli + - eklemeli + - yığın sıralama + - hızlı sıralama - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Papers](#papers) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) +- [Graflar](#graphs) + - yönlü + - yönsüz + - bitişiklik matrisi + - bitişiklik listesi + - dolaşımlar: BFS, DFS +- [Daha Fazla Bilgi](#even-more-knowledge) + - [Rekürsif](#recursion) + - [Dinamik Programlama](#dynamic-programming) + - [Nesneye-Yönelik Programlama](#object-oriented-programming) + - [Tasarım Desenleri](#design-patterns) + - [Kombinasyonlar (n seçim k) & İhtimaller](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete ve Yaklaşım Algoritmaları](#np-np-complete-and-approximation-algorithms) + - [Önbellekler](#caches) + - [Süreçler ve Threadler](#processes-and-threads) + - [Kağıtlar](#papers) + - [Test Etme](#testing) + - [Planlama](#scheduling) + - [Sistem rutinlerini uygulamak](#implement-system-routines) + - [String arama & manipulasyon](#string-searching--manipulations) + - [Denemeler](#tries) + - [Kayan Noktalı Sayılar](#floating-point-numbers) - [Unicode](#unicode) - [Endianness](#endianness) -- [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) +- [Network Oluşturma](#networking) +- [Sistem Tasarımı, Ölçeklenebilirlik, Veri İşleme](#system-design-scalability-data-handling) (eğer 4+ yıldan fazla deneyiminiz varsa) +- [Final Kontrolü](#final-review) +- [Kodlama Soruları Uygulaması](#coding-question-practice) +- [Kodlama egzersizleri/yarışmalar](#coding-exerciseschallenges) +- [Mülakata yakın olduğunuzda](#once-youre-closer-to-the-interview) +- [Özgeçmişiniz](#your-resume) +- [Mülakat geldiğinde düşünmek](#be-thinking-of-for-when-the-interview-comes) +- [Mülakat yapan kişiye sorularınız olması](#have-questions-for-the-interviewer) +- [İşi Aldığınızda](#once-youve-got-the-job) ----------------- Everything below this point is optional ---------------- +---------------- Bu bölümün altındakiler opsiyoneldir ---------------- -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) +- [Ek kitaplar](#additional-books) +- [Ek öğrenim](#additional-learning) + - [Derleyiciler](#compilers) + - [Emacs ve vi(m)](#emacs-and-vim) + - [Unix komut satırı araçları](#unix-command-line-tools) + - [Bilgi teorisi](#information-theory-videos) + - [Parite & Hamming Kodu](#parity--hamming-code-videos) + - [Entropi](#entropy) + - [Kriptografi](#cryptography) + - [Sıkıştırma](#compression) + - [Bilgisayar Güvenliği](#computer-security) + - [Çöp toplayıcı](#garbage-collection) + - [Paralel Programlama](#parallel-programming) + - [Mesajlaşma, Serileştirme ve Kuyruklama Sistemleri](#messaging-serialization-and-queueing-systems) - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [Hızlı Fourier Dönüşümü](#fast-fourier-transform) + - [Bloom Filtresi](#bloom-filter) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [Konuma Duyarlı Hashleme](#locality-sensitive-hashing) + - [van Emde Boas Ağaçları](#van-emde-boas-trees) + - [Artırılmış Veri Yapıları](#augmented-data-structures) + - [Dengeli arama ağaçları](#balanced-search-trees) + - AVL ağaçları + - Splay ağaçları + - Kırmızı/siyah ağaçları + - 2-3 arama ağaçları + - 2-3-4 Ağaçları (aka 2-4 ağaçları) + - N-ary (K-ary, M-ary) ağaçları + - B-ağaçları + - [k-D Ağaçları](#k-d-trees) + - [Geçiş Listeleri](#skip-lists) + - [Network Akışları](#network-flows) + - [Ayrık Kümeler & Birlik Bulma](#disjoint-sets--union-find) + - [Hızlı İşleme için Matematik](#math-for-fast-processing) - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) + - [Lineer Programlama](#linear-programming-videos) + - [Geometri, Dışbükey](#geometry-convex-hull-videos) + - [Ayrık matematik](#discrete-math) + - [Makine Öğrenmesi](#machine-learning) +- [Bazı Konular Hakkında Ekstra Bilgi](#additional-detail-on-some-subjects) +- [Video Serileri](#video-series) +- [Bilgisayar Bilimleri Kursları](#computer-science-courses) --- -## Why use it? +## Neden Kullanılır? -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +Bu projeye başladığımda, Stack ya da heap farkını bilmiyordum, Big-O notasyonu hakkında bir şey bilmiyordum, ağaçlar hakkında bir şey +bilmiyordum, ya da bir graf nasıl dolaşılır bilmiyordum. Bir sıralama algoritması kodlamış olsaydım, iyi olmayacağını size +söyleyebilirdim. Kullandığım her veri yapısı dilin içinde hazır bulunmaktaydı, kaputun altında nasıl çalıştıklarını bilmiyordum. +Çalışmakta olduğum bir proses, "bellek yetersiz" uyarısı verene kadar herhangi bir bellek yönetimi yapmamıştım ve buna bir geçici çözüm +buldum. Hayatımda bir kaç sefer çok boyutlu dizileri kullandım ve binlerce birleştirici dizileri kullandım, ama hiç bir zaman sıfırdan +bir veri yapısı oluşturmadım. -It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +Bu uzun bir plan. Aylar sürebilir. Eğer bunlara aşinaysanız, daha az zamanınızı alacaktır. -## How to use it +## Nasıl Kullanılır -Everything below is an outline, and you should tackle the items in order from top to bottom. +Aşağıdaki her şey bir ana hattır, ve yukarıdan aşağıya doğru öğeleri ele almalısınız. -I'm using Github's special markdown flavor, including tasks lists to check progress. +İlerlemeleri kontrol etmek için listelerde dahil olmak üzere, ben GitHub'ın özel markdown aracını kullanıyorum. -**Create a new branch so you can check items like this, just put an x in the brackets: [x]** +**Bu şekilde öğeleri seçmek için yeni bir dal oluşturun, braketler arasına sadece bir x koyun: [x]** - Fork a branch and follow the commands below + Bir dalı çatallayın ve aşağıdaki komutları takip edin `git checkout -b progress` @@ -199,7 +196,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git fetch --all` - Mark all boxes with X after you completed your changes + Değişikliklerinizi tamamladıktan sonra bütün kutuları X ile işaretleyin `git add . ` @@ -209,21 +206,21 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git push --force ` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[GitHub aromalı markdown hakkında daha fazlası](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Don't feel you aren't smart enough -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -- [Believe you can change](http://www.aaronsw.com/weblog/dweck) +## Yeterince zeki olmadığınızı hissetmeyin +- Başarılı yazılım mühendisleri akıllıdır, ancak çoğunluğu yeterince zeki olmadığı için güvensizlik yaşarlar. +- [Dahi programcı hakkında bir efsane](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Yalnız Gitmek Tehlikeli: Teknolojide Görünmez Canavarla Savaşmak](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [Değişebileceğine inan](http://www.aaronsw.com/weblog/dweck) -## About Video Resources +## Video Kaynakları Hakkında -Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. +Bazı videolar Coursera, EdX ya da Lynda.com sınıflarına dahil olduğunuzda ulaşılabilmektedir. Bunlar MOOC'lar olarak adlandırılır. +Bazı kurslar aktif olmayabilirler, bir kaç ay beklemeniz gerekebilir, erişiminiz olmaz. Lynda.com kursları ücretsiz değildir. - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. + Ücretsiz ve her zaman ulaşılabilir kaynaklar eklerseniz memnun olurum, YouTube videoları gibi çevrimiçi kurs videolarına eşlik edebilirsiniz. + Üniversite derslerini kullanmayı severim. ## Interview Process & General Interview Prep