Update README.md

This commit is contained in:
Kağan Balga 2017-12-11 22:13:19 +02:00 committed by GitHub
parent 1c4d2f289f
commit 0d4769c5e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

297
README.md
View File

@ -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