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, > Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım,
> but it grew to the large list you see today. After going through this study plan, [I got hired > 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
> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > Yazılım Geliştirme Mühendisi olarak işe alındım.](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. > 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, > Her hangi bir yazılım firmasında bir mülakata gireceğinizde ihtiyaç duyabileceğiniz her konu başlığı burada listelenmiştir,
> including the giants: Amazon, Facebook, Google or Microsoft. > Amazon, Facebook, Google ya da Microsoft dahil.
> >
> *Best of luck to you!* > *İyi Şanslar!*
Translations: Çeviriler:
- [中文版本](translations/README-cn.md) - [中文版本](translations/README-cn.md)
- [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md)
- [Español](translations/README-es.md) - [Español](translations/README-es.md)
- [Português Brasileiro](translations/README-ptbr.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/81)
- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - [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) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239)
- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) - [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) ![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 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.
software/web development to software engineering (where computer science knowledge is required). If you have 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.
many years of experience and are claiming many years of software engineering experience, expect a harder interview. 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, Eğer güvenlik ya da operasyon mühendisi olmak istiyorsanız, opsiyonel listeden (network, güvenlik) daha fazla çalışın.
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).
--- ---
## Table of Contents ## İçindekiler
- [What is it?](#what-is-it) - [Nedir?](#nedir)
- [Why use it?](#why-use-it) - [Neden kullanılır?](#neden-kullanılır)
- [How to use it](#how-to-use-it) - [Nasıl kullanılır?](#nasıl-kullanılır)
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - [Yeterince zeki olmadığınızı hissetmeyin](#yeterince-zeki-olmadığınızı-hissetmeyin)
- [About Video Resources](#about-video-resources) - [Video Kaynakları Hakkında](#video-kaynakları-hakkında)
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [Mülakat Süreci & Genel Mülakat Hazırlığı](#interview-process--general-interview-prep)
- [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [Mülakat İçin Bir Dil Seçin](#pick-one-language-for-the-interview)
- [Book List](#book-list) - [Kitap Listesi](#book-list)
- [Before you Get Started](#before-you-get-started) - [Başlamadan Önce](#before-you-get-started)
- [What you Won't See Covered](#what-you-wont-see-covered) - [Örtülü Olan Ne Görmüyotsun](#what-you-wont-see-covered)
- [Prerequisite Knowledge](#prerequisite-knowledge) - [Önkoşul Bilgisi](#prerequisite-knowledge)
- [The Daily Plan](#the-daily-plan) - [Günlük Plan](#the-daily-plan)
- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Algoritma Karmaşıklığı / Big-O / Asimptotik Analizler](#algorithmic-complexity--big-o--asymptotic-analysis)
- [Data Structures](#data-structures) - [Veri Yapıları](#data-structures)
- [Arrays](#arrays) - [Diziler](#arrays)
- [Linked Lists](#linked-lists) - [Bağlı Listeler](#linked-lists)
- [Stack](#stack) - [Yığın](#stack)
- [Queue](#queue) - [Kuyruk](#queue)
- [Hash table](#hash-table) - [Hash tablosu](#hash-table)
- [More Knowledge](#more-knowledge) - [Ekstra Bilgi](#more-knowledge)
- [Binary search](#binary-search) - [İkili arama](#binary-search)
- [Bitwise operations](#bitwise-operations) - [Bitsel operasyonlar](#bitwise-operations)
- [Trees](#trees) - [Ağaçlar](#trees)
- [Trees - Notes & Background](#trees---notes--background) - [Ağaçlar - Notlar & Arkaplan](#trees---notes--background)
- [Binary search trees: BSTs](#binary-search-trees-bsts) - [İkili Arama Ağaçları: BST'ler](#binary-search-trees-bsts)
- [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - [Yığın / Öncelik Kuyruğu / İkili Yığın](#heap--priority-queue--binary-heap)
- balanced search trees (general concept, not details) - dengeli arama ağaçları (genel konseptler, detaylar hariç)
- traversals: preorder, inorder, postorder, BFS, DFS - dolaşımlar: preorder, inorder, postorder, BFS, DFS
- [Sorting](#sorting) - [Sıralama](#sorting)
- selection - seçimli
- insertion - eklemeli
- heapsort - yığın sıralama
- quicksort - hızlı sıralama
- merge sort - merge sort
- [Graphs](#graphs) - [Graflar](#graphs)
- directed - yönlü
- undirected - yönsüz
- adjacency matrix - bitişiklik matrisi
- adjacency list - bitişiklik listesi
- traversals: BFS, DFS - dolaşımlar: BFS, DFS
- [Even More Knowledge](#even-more-knowledge) - [Daha Fazla Bilgi](#even-more-knowledge)
- [Recursion](#recursion) - [Rekürsif](#recursion)
- [Dynamic Programming](#dynamic-programming) - [Dinamik Programlama](#dynamic-programming)
- [Object-Oriented Programming](#object-oriented-programming) - [Nesneye-Yönelik Programlama](#object-oriented-programming)
- [Design Patterns](#design-patterns) - [Tasarım Desenleri](#design-patterns)
- [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - [Kombinasyonlar (n seçim k) & İhtimaller](#combinatorics-n-choose-k--probability)
- [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - [NP, NP-Complete ve Yaklaşım Algoritmaları](#np-np-complete-and-approximation-algorithms)
- [Caches](#caches) - [Önbellekler](#caches)
- [Processes and Threads](#processes-and-threads) - [Süreçler ve Threadler](#processes-and-threads)
- [Papers](#papers) - [Kağıtlar](#papers)
- [Testing](#testing) - [Test Etme](#testing)
- [Scheduling](#scheduling) - [Planlama](#scheduling)
- [Implement system routines](#implement-system-routines) - [Sistem rutinlerini uygulamak](#implement-system-routines)
- [String searching & manipulations](#string-searching--manipulations) - [String arama & manipulasyon](#string-searching--manipulations)
- [Tries](#tries) - [Denemeler](#tries)
- [Floating Point Numbers](#floating-point-numbers) - [Kayan Noktalı Sayılar](#floating-point-numbers)
- [Unicode](#unicode) - [Unicode](#unicode)
- [Endianness](#endianness) - [Endianness](#endianness)
- [Networking](#networking) - [Network Oluşturma](#networking)
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Sistem Tasarımı, Ölçeklenebilirlik, Veri İşleme](#system-design-scalability-data-handling) (eğer 4+ yıldan fazla deneyiminiz varsa)
- [Final Review](#final-review) - [Final Kontrolü](#final-review)
- [Coding Question Practice](#coding-question-practice) - [Kodlama Soruları Uygulaması](#coding-question-practice)
- [Coding exercises/challenges](#coding-exerciseschallenges) - [Kodlama egzersizleri/yarışmalar](#coding-exerciseschallenges)
- [Once you're closer to the interview](#once-youre-closer-to-the-interview) - [Mülakata yakın olduğunuzda](#once-youre-closer-to-the-interview)
- [Your Resume](#your-resume) - [Özgeçmişiniz](#your-resume)
- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - [Mülakat geldiğinde düşünmek](#be-thinking-of-for-when-the-interview-comes)
- [Have questions for the interviewer](#have-questions-for-the-interviewer) - [Mülakat yapan kişiye sorularınız olması](#have-questions-for-the-interviewer)
- [Once You've Got The Job](#once-youve-got-the-job) - [İş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) - [Ek kitaplar](#additional-books)
- [Additional Learning](#additional-learning) - [Ek öğrenim](#additional-learning)
- [Compilers](#compilers) - [Derleyiciler](#compilers)
- [Emacs and vi(m)](#emacs-and-vim) - [Emacs ve vi(m)](#emacs-and-vim)
- [Unix command line tools](#unix-command-line-tools) - [Unix komut satırı araçları](#unix-command-line-tools)
- [Information theory](#information-theory-videos) - [Bilgi teorisi](#information-theory-videos)
- [Parity & Hamming Code](#parity--hamming-code-videos) - [Parite & Hamming Kodu](#parity--hamming-code-videos)
- [Entropy](#entropy) - [Entropi](#entropy)
- [Cryptography](#cryptography) - [Kriptografi](#cryptography)
- [Compression](#compression) - [Sıkıştırma](#compression)
- [Computer Security](#computer-security) - [Bilgisayar Güvenliği](#computer-security)
- [Garbage collection](#garbage-collection) - [Çöp toplayıcı](#garbage-collection)
- [Parallel Programming](#parallel-programming) - [Paralel Programlama](#parallel-programming)
- [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - [Mesajlaşma, Serileştirme ve Kuyruklama Sistemleri](#messaging-serialization-and-queueing-systems)
- [A*](#a) - [A*](#a)
- [Fast Fourier Transform](#fast-fourier-transform) - [Hızlı Fourier Dönüşümü](#fast-fourier-transform)
- [Bloom Filter](#bloom-filter) - [Bloom Filtresi](#bloom-filter)
- [HyperLogLog](#hyperloglog) - [HyperLogLog](#hyperloglog)
- [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [Konuma Duyarlı Hashleme](#locality-sensitive-hashing)
- [van Emde Boas Trees](#van-emde-boas-trees) - [van Emde Boas Ağaçları](#van-emde-boas-trees)
- [Augmented Data Structures](#augmented-data-structures) - [Artırılmış Veri Yapıları](#augmented-data-structures)
- [Balanced search trees](#balanced-search-trees) - [Dengeli arama ağaçları](#balanced-search-trees)
- AVL trees - AVL ağaçları
- Splay trees - Splay ağaçları
- Red/black trees - Kırmızı/siyah ağaçları
- 2-3 search trees - 2-3 arama ağaçları
- 2-3-4 Trees (aka 2-4 trees) - 2-3-4 Ağaçları (aka 2-4 ağaçları)
- N-ary (K-ary, M-ary) trees - N-ary (K-ary, M-ary) ağaçları
- B-Trees - B-ağaçları
- [k-D Trees](#k-d-trees) - [k-D Ağaçları](#k-d-trees)
- [Skip lists](#skip-lists) - [Geçiş Listeleri](#skip-lists)
- [Network Flows](#network-flows) - [Network Akışları](#network-flows)
- [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Ayrık Kümeler & Birlik Bulma](#disjoint-sets--union-find)
- [Math for Fast Processing](#math-for-fast-processing) - [Hızlı İşleme için Matematik](#math-for-fast-processing)
- [Treap](#treap) - [Treap](#treap)
- [Linear Programming](#linear-programming-videos) - [Lineer Programlama](#linear-programming-videos)
- [Geometry, Convex hull](#geometry-convex-hull-videos) - [Geometri, Dışbükey](#geometry-convex-hull-videos)
- [Discrete math](#discrete-math) - [Ayrık matematik](#discrete-math)
- [Machine Learning](#machine-learning) - [Makine Öğrenmesi](#machine-learning)
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - [Bazı Konular Hakkında Ekstra Bilgi](#additional-detail-on-some-subjects)
- [Video Series](#video-series) - [Video Serileri](#video-series)
- [Computer Science Courses](#computer-science-courses) - [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 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
traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. bilmiyordum, ya da bir graf nasıl dolaşılır bilmiyordum. Bir sıralama algoritması kodlamış olsaydım, iyi olmayacağını size
Every data structure I've ever used was built into the language, and I didn't know how they worked söyleyebilirdim. Kullandığım her veri yapısı dilin içinde hazır bulunmaktaydı, kaputun altında nasıl çalıştıklarını bilmiyordum.
under the hood at all. I've never had to manage memory unless a process I was running would give an "out of Ç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
memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and 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
thousands of associative arrays, but I've never created data structures from scratch. 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` `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` `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 . ` `git add . `
@ -209,21 +206,21 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
`git push --force ` `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 ## Yeterince zeki olmadığınızı hissetmeyin
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. - 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.
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [Dahi programcı hakkında bir efsane](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) - [Yalnız Gitmek Tehlikeli: Teknolojide Görünmez Canavarla Savaşmak](https://www.youtube.com/watch?v=1i8ylq4j_EY)
- [Believe you can change](http://www.aaronsw.com/weblog/dweck) - [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. 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.
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ı 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. Ücretsiz ve her zaman ulaşılabilir kaynaklar eklerseniz memnun olurum, YouTube videoları gibi çevrimiçi kurs videolarına eşlik edebilirsiniz.
I like using university lectures. Üniversite derslerini kullanmayı severim.
## Interview Process & General Interview Prep ## Interview Process & General Interview Prep