Update README.md
This commit is contained in:
parent
1c4d2f289f
commit
0d4769c5e1
297
README.md
297
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.
|
||||
|
||||

|
||||
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user