Sumber belajar koding interview otodidak dari web developer sampai software engineer Google secara otodidak. Terjemahan dari jwasham/coding-interview-university.
Ini adalah rencana studi multi-bulan saya untuk beralih dari pengembang web (otodidak, tanpa gelar Ilmu Komputer) menjadi insinyur perangkat lunak untuk perusahaan besar.
Ini dimaksudkan untuk teknisi perangkat lunak baru atau mereka yang beralih dari pengembangan perangkat lunak/web ke rekayasa perangkat lunak (yang memerlukan pengetahuan ilmu komputer). Jika Anda memiliki pengalaman bertahun-tahun dan mengklaim pengalaman rekayasa perangkat lunak bertahun-tahun, nantikan wawancara yang lebih sulit.
Jika Anda memiliki pengalaman pengembangan perangkat lunak/web selama bertahun-tahun, perhatikan bahwa perusahaan perangkat lunak besar seperti Google, Amazon, Facebook, dan Microsoft memandang rekayasa perangkat lunak berbeda dari pengembangan perangkat lunak/web, dan mereka memerlukan pengetahuan ilmu komputer.
Jika Anda ingin menjadi insinyur keandalan atau insinyur operasi, pelajari lebih lanjut dari daftar opsional (jaringan, keamanan).
- Apa ini?
- Mengapa menggunakan ini?
- Bagaimana cara menggunakannya
- Jangan merasa anda kurang pintar
- Tentang Sumber Video
- Proses Interview dan Preparasi Wawancara Secara Umum
- Pilih Satu Bahasa Pemrograman untuk Wawancara
- Daftar Buku
- Sebelum Anda Mulai
- Apa yang Tidak Akan Dibahas
- Ilmu Prasyarat
- Rencana Harian
- Kompleksitas Algoritma / Big-O / Analisis Asimptotik
- Struktur Data
- Lebih Banyak Pengetahuan
- Trees
- Penyortiran
- selection
- insertion
- heapsort
- quicksort
- merge sort
- Graphs
- directed
- undirected
- adjacency matrix
- adjacency list
- traversals: BFS, DFS
- Bahkan Lebih Banyak Pengetahuan
- Pengulangan (Recursion)
- Pemrograman Dinamis
- Pemrograman Berorientasi Objek
- Pola desain (Design patterns)
- Kombinatorik (n pilih k) & Probabilitas
- Algoritma NP, NP-Complete dan Approximation
- Cache
- Proses dan Thread
- Testing
- Penjadwalan
- Pencarian & manipulasi string
- Tries
- Angka Floating Point
- Unicode
- Endianness
- Jaringan
- Perancangan Sistem, Skalabilitas, Penganganan Data (jika anda memiliki pengalaman 4 tahun lebih)
- Ulasan Akhir
- Latihan Pertanyaan Pemrograman
- Latihan / tantangan coding
- Menjelang Proses Interview
- Resume Anda
- Pikirkan saat wawancara datang
- Bertanyalah Pada Pewawancara
- Saat Anda Berhasil Mendapatkan Pekerjaannya
---------------- Semua dibawah ini bersifat opsional ----------------
- Buku Tambahan
- Pembelajaran Tambahan
- Kompilator
- Emacs and vi(m)
- Unix command line tools
- Teori Informasi
- Pariti & Kode Hamming
- Entropi
- Kriptografi
- Kompresi
- Jaringan (bersiaplah mendapatkan pertanyaan jaringan apabila anda ingin menjadi system engineer)
- Keamanan komputer
- Pengumpulan sampah (Garbage collection)
- Pemrograman Paralel
- Pengiriman Pesan, Serialisasi, dan Sistem Queueing
- A*
- Transformasi Fourier Cepat
- Bloom Filter
- HyperLogLog
- Locality-Sensitive Hashing
- van Emde Boas Trees
- Augmented Data Structures
- Tries
- N-ary (K-ary, M-ary) 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
- Skip lists
- Aliran Jaringan
- Disjoint Sets & Union Find
- Matematika untuk Pemrosesan Cepat
- Treap
- Pemrograman Linear
- Geometri, Convex hull
- Matematika Diskrit
- Pembelajaran Mesin
- Detail Tambahan tentang Beberapa Subjek
- Seri Video
- Kursus Ilmu Komputer
- Implementasi Algoritma
- Dokumen
Saya mengikuti rencana ini untuk mempersiapkan saya dalam menghadapi wawancara kerja Google. Sejak 1997, saya telah menciptakan berbagai situs, servis, dan mendirikan startup. Saya memiliki gelar ekonomi, bukan gelar ilmu komputer. Saya telah meraih kesuksesan dalam karir saya, tapi saya ingin bekerja di Google. Saya ingin masuk ke sistem yang lebih besar dan mempunyai pemahaman mendalam tentang sistem komputer, efesiensi algoritma, performa struktur data, bahasa tingkat rendah, dan bagaimana semuanya bekerja. Jika anda tidak mengetahui satu pun, Google tidak akan mempekerjakan anda.
Itu rencana yang panjang. Mungkin butuh waktu berbulan-bulan. Jika Anda sudah terbiasa dengan hal ini, Anda akan membutuhkan lebih sedikit waktu.
Apapun dibawah ini adalah garis besar, dan anda harus menguasai materi dari atas ke bawah secara runut.
Saya menggunakan markdown spesial dari Github, termasuk daftar tugas untuk mengecek perkembangan. Buat branch baru sehingga anda bisa mencentang seperti ini, bubuhi tanda x dalam tanda kurung: [x]
Fork sebuah branch dan ikuti perintah berikut
git checkout -b progress
git remote add jwasham https://github.com/hexatester/koding-interview-otodidak
git fetch --all
Tandai semua kotak dengan tanda X setalah anda menyelesaikannya
git add .
git commit -m "Tandai x"
git rebase jwasham/master
git push --force
Lebih jauh tentang markdown Github
- Para engineers/programmer di google adalah orang-orang pintar, tapi banyak dari mereka berpikir bahwa mereka tidak cukup pintar, walaupun mereka bekerja di Google.
- Mitos dari programmer yang jenius
- Hal yang berbahaya untuk pergi sendirian: Bertarung dengan monster yang tidak kelihatan di dunia teknologi
Beberapa video hanya tersedia dengan mendaftar di kelas Coursera atau EdX. Ini disebut MOOC. Terkadang kelas tidak dalam sesi jadi Anda harus menunggu beberapa bulan, jadi Anda tidak memiliki akses.
Saya menghargai bantuan Anda untuk menambahkan sumber publik yang gratis dan selalu tersedia, seperti video YouTube untuk menyertai video kursus online. Saya suka menggunakan kuliah universitas.
Selanjutnya - Proses Interview dan Preparasi Wawancara Secara Umum
Terjemahan Bahasa Indonesia dari jwasham/coding-interview-university dipersembahkan oleh :
- Habib Rohman @hexatester
- davidsetyanugraha @davidsetyanugraha
- Fahmi Noor Fiqri @fahminlb33
- Hung-Wei Hung @hwhung0111
- Rimon Mostafiz @rimonmostafiz
- Zeeshan Ahmad @ziishaned
- Ronaldo Vitto Lewerissa @rvlewerissa
- Diki Ananta @dikiaap
- Michael Santoso @santosomichael