|
@@ -6,178 +6,143 @@ Asl versiyasi: [Inglizcha](../README.md)
|
|
|
> ammo bu proyekt bugun siz ko'rib turgan katta ro'yxatga aylandi. Ushbu o'quv rejasidan o'tib, [men Amazon-ga dasturchi sifatida ishga yollandim](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)!
|
|
|
> Ehtimol, menga o'xshab o'qishingizga to'g'ri kelmaydi. Baribir sizga kerak bo'lgan hamma narsa shu yerda.
|
|
|
>
|
|
|
-> Bir necha oy davomida kuniga taxminan 8-12 soat o'qidim. Bu mening hikoyam: [Nega men Google-da intervyu olish uchun 8 oy davomida kechayu kunduz o'qidim](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
|
|
|
+> Bir necha oy davomida kuniga taxminan 8-12 soat o'qidim. Bu mening hikoyam: [Nega men Google-da intervyudan o'tish uchun 8 oy davomida kechayu kunduz o'qidim?](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
|
|
|
>
|
|
|
-> Bu erda keltirilgan narsalar sizni har qanday dasturiy ta'minot kompaniyalari, shu jumladan gigantlar: Amazon, Facebook, Google va Microsoft-da o'tkaziladigan texnik suhbatga yaxshi tayyorlaydi.
|
|
|
+> Bu yerda keltirilgan narsalar sizni har qanday dasturiy ta'minot kompaniyalari, shu jumladan gigantlar: Amazon, Facebook, Google va Microsoft-da o'tkaziladigan texnik suhbatga yaxshi tayyorlaydi.
|
|
|
>
|
|
|
> *Sizga omad tilayman!*
|
|
|
|
|
|
-<details>
|
|
|
-<summary>Translations:</summary>
|
|
|
-
|
|
|
-- [中文版本](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)
|
|
|
-- [Polish](translations/README-pl.md)
|
|
|
-- [繁體中文](translations/README-tw.md)
|
|
|
-- [Japanese (日本語)](translations/README-ja.md)
|
|
|
-- [Russian](translations/README-ru.md)
|
|
|
-- [German](translations/README-de.md)
|
|
|
-- [Bahasa Indonesia](translations/README-id.md)
|
|
|
-- [ខ្មែរ - Khmer](translations/README-kh.md)
|
|
|
-
|
|
|
-</details>
|
|
|
-
|
|
|
-<details>
|
|
|
-<summary>Translations in progress:</summary>
|
|
|
-
|
|
|
-- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
|
|
|
-- [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
|
|
|
-- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98)
|
|
|
-- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90)
|
|
|
-- [French](https://github.com/jwasham/coding-interview-university/issues/89)
|
|
|
-- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106)
|
|
|
-- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118)
|
|
|
-- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117)
|
|
|
-- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519)
|
|
|
-- [Thai](https://github.com/jwasham/coding-interview-university/issues/156)
|
|
|
-- [Greek](https://github.com/jwasham/coding-interview-university/issues/166)
|
|
|
-- [Italian](https://github.com/jwasham/coding-interview-university/issues/170)
|
|
|
-- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239)
|
|
|
-
|
|
|
-</details>
|
|
|
-
|
|
|
-## Bu nima?
|
|
|
-
|
|
|
-Bu mening web dasturchisi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam.
|
|
|
+## Bu nima uchun kerak?
|
|
|
+
|
|
|
+Bu mening web dasturchi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam.
|
|
|
+
|
|
|

|
|
|
|
|
|
-Bu proyekt **yangi dasturchi injinerlar** uchun juda forydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dastur injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bo'lganlar uchun foydali.
|
|
|
+Bu proyekt **yangi dasturchi injinerlar** uchun juda foydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dasturiy injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bo'lganlar uchun foydali.
|
|
|
|
|
|
|
|
|
-Agar sizda dasturchilik bo'yicha ko'p yillik tajribangiz bo'lsa, shuni bilingki: Google, Amazon, Facebook, va Microsoftga o'xshagan katta kompaniyalar dastur injinerlikni (software engineer) oddiy dasturchilikdan (software/web developer) farqli deb kuradi va ular computer science bilimini talab qiladi.
|
|
|
+Agar sizda dasturchilik bo'yicha ko'p yillik tajribangiz bo'lsa, shuni bilingki: Google, Amazon, Facebook, va Microsoftga o'xshagan katta kompaniyalar dasturiy injinerlikni (software engineer) oddiy dasturchilik (software/web developer) dan farqli deb ko'radi va ular computer science bilimini talab qiladi.
|
|
|
|
|
|
|
|
|
-Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, unda siz ixtiyoriy ro'yxatdan ko'proq o'qing (tarmoq, xavfsizlik va boshqalar).
|
|
|
+Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, unda siz ixtiyoriy ro'yxatdan ko'proq o'qing (networking, xavfsizlik va boshqalar).
|
|
|
---
|
|
|
|
|
|
-## Table of Contents
|
|
|
-
|
|
|
-- [What is it?](#what-is-it)
|
|
|
-- [Nima uchun foydali?](#why-use-it)
|
|
|
-- [Qanday foydalanish kerak?](#how-to-use-it)
|
|
|
-- [O'zingizni omadsiz deb o'ylamang](#dont-feel-you-arent-smart-enough)
|
|
|
-- [Video qo'llanmalar haqida](#about-video-resources)
|
|
|
-- [Suhbat jarayoni va intervyuga tayyorgarlik](#interview-process--general-interview-prep)
|
|
|
-- [Intervyu uchun bitta dasturlash tilini tanlang](#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)
|
|
|
-- [The Daily Plan](#the-daily-plan)
|
|
|
-- [Prerequisite Knowledge](#prerequisite-knowledge)
|
|
|
-- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis)
|
|
|
-- [Data Structures](#data-structures)
|
|
|
- - [Arrays](#arrays)
|
|
|
- - [Linked Lists](#linked-lists)
|
|
|
+## Mundarija
|
|
|
+
|
|
|
+- [Bu nima uchun kerak?](#bu-nima-uchun-kerak)
|
|
|
+- [Nima uchun foydali?](#nima-uchun-foydali)
|
|
|
+- [Qanday foydalanish kerak?](#qanday-foydalanish-kerak)
|
|
|
+- [O'zingizni omadsiz deb hisoblamang](#ozingizni-omadsiz-deb-hisoblamang)
|
|
|
+- [Video qo'llanmalar haqida](#video-qollanmalar-haqida)
|
|
|
+- [Suhbat jarayoni va intervyuga tayyorgarlik](#suhbat-jarayoni-va-intervyuga-tayyorgarlik)
|
|
|
+- [Intervyu uchun bitta dasturlash tilini tanlang](#intervyu-uchun-bitta-dasturlash-tilini-tanlang)
|
|
|
+- [Kitoblar ro'yxati](#kitoblar-royxati)
|
|
|
+- [O'rganishni boshlashdan oldin](#organishni-boshlashdan-oldin)
|
|
|
+- [Bu proyekt nimalarni o'z ichiga olmaydi](#bu-proyekt-nimalarni-oz-ichiga-olmaydi)
|
|
|
+- [Kunlik reja](#kunlik-reja)
|
|
|
+- [Oldindan nima bilish kerak](#oldindan-nima-bilish-kerak)
|
|
|
+- [Algoritmik murakkablik / Big-O / Asimtotik tahlil](#algoritmik-murakkablik--big-o--asimtotik-tahlil)
|
|
|
+- [Ma'lumotlar tuzilmasi (Data structures)](#malumotlar-tuzilmasi-data-structures)
|
|
|
+ - [Massivlar](#massivlar)
|
|
|
+ - [Linked Lists (O'zaro bog'langan ro'yxatlar)](#linked-lists-ozaro-boglangan-royxatlar)
|
|
|
- [Stack](#stack)
|
|
|
- [Queue](#queue)
|
|
|
- [Hash table](#hash-table)
|
|
|
-- [More Knowledge](#more-knowledge)
|
|
|
+- [Qo'shimcha bilimlar](#qoshimcha-bilimlar)
|
|
|
- [Binary search](#binary-search)
|
|
|
- - [Bitwise operations](#bitwise-operations)
|
|
|
-- [Trees](#trees)
|
|
|
- - [Trees - Notes & Background](#trees---notes--background)
|
|
|
- - [Binary search trees: BSTs](#binary-search-trees-bsts)
|
|
|
+ - [Bitwise operatsiyalari](#bitwise-operatsiyalari)
|
|
|
+- [Trees (daraxtlar)](#trees-daraxtlar)
|
|
|
+ - [Trees - Eslatmalar & Kelib chiqishi](#trees---eslatmalar--kelib-chiqishi)
|
|
|
+ - [Binary search tree-lar: BST-lar](#binary-search-tree-lar-bst-lar)
|
|
|
- [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap)
|
|
|
- - balanced search trees (general concept, not details)
|
|
|
+ - balanslangan search tree-lar (umumiy tushuncha)
|
|
|
- traversals: preorder, inorder, postorder, BFS, DFS
|
|
|
-- [Sorting](#sorting)
|
|
|
+- [Sorting (Saralash)](#sorting-saralash)
|
|
|
- selection
|
|
|
- insertion
|
|
|
- heapsort
|
|
|
- quicksort
|
|
|
- merge sort
|
|
|
-- [Graphs](#graphs)
|
|
|
+- [Graflar](#graflar)
|
|
|
- directed
|
|
|
- undirected
|
|
|
- adjacency matrix
|
|
|
- adjacency list
|
|
|
- traversals: BFS, DFS
|
|
|
-- [Even More Knowledge](#even-more-knowledge)
|
|
|
- - [Recursion](#recursion)
|
|
|
- - [Dynamic Programming](#dynamic-programming)
|
|
|
+- [Yanada ko'proq bilim](#yanada-koproq-bilim)
|
|
|
+ - [Rekursiya](#rekursiya)
|
|
|
+ - [Dinamik dasturlash (Dynamic Programming)](#dinamik-dasturlash-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)
|
|
|
- - [Testing](#testing)
|
|
|
+ - [Dizayn patternlar](#dizayn-patternlar)
|
|
|
+ - [Kombinatorikalar & Ehtimollik nazariyasi](#kombinatorikalar--ehtimollik-nazariyasi)
|
|
|
+ - [NP-NP to'liq va taxminiy algoritmlari](#np-np-toliq-va-taxminiy-algoritmlari)
|
|
|
+ - [Keshlar](#keshlar)
|
|
|
+ - [Process-lar va Thread-lar](#process-lar-va-thread-lar)
|
|
|
+ - [Testlash (Testing)](#testlash-testing)
|
|
|
- [Scheduling](#scheduling)
|
|
|
- - [String searching & manipulations](#string-searching--manipulations)
|
|
|
- - [Tries](#tries)
|
|
|
+ - [Stringni izlash va manipulyatsiyalar](#stringni-izlash-va-manipulyatsiyalar)
|
|
|
+ - [Trie-lar](#trie-lar)
|
|
|
- [Floating Point Numbers](#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)
|
|
|
-
|
|
|
----------------- Everything below this point is optional ----------------
|
|
|
-
|
|
|
-## Additional Resources
|
|
|
-
|
|
|
-- [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)
|
|
|
- - [Xabar almashish, Serializatsiya, va Queue Tizimlar](#messaging-serialization-and-queueing-systems)
|
|
|
+- [Tizim Dizayni, Scalability, Ma'lumotlar bilan ishlash](#tizim-dizayni-scalability-malumotlar-bilan-ishlash) (agar sizda 4+ yillik tajriba bo'lsa)
|
|
|
+- [Yakuniy tahlil](#yakuniy-tahlil)
|
|
|
+- [Coding bo'yicha savollar ustida ishlash](#coding-boyicha-savollar-ustida-ishlash)
|
|
|
+- [Coding mashqlar/savollar](#coding-mashqlarsavollar)
|
|
|
+- [Intervyuga yaqin kelganingizda](#intervyuga-yaqin-kelganingizda)
|
|
|
+- [Sizni rezyumeingiz](#sizni-rezyumeingiz)
|
|
|
+- [Intervyuga yaqin kelganda quyidagilar haqida o'ylab yuring](#intervyuga-yaqin-kelganda-quyidagilar-haqida-oylab-yuring)
|
|
|
+- [Intervyuver uchun savollaringizni tayyorlab qo'ying](#intervyuver-uchun-savollaringizni-tayyorlab-qoying)
|
|
|
+- [Ishga qabul qilinganingizdan so'ng](#ishga-qabul-qilinganingizdan-song)
|
|
|
+
|
|
|
+---------------- Quyidagilar ixtiyoriy ----------------
|
|
|
+
|
|
|
+## Qo'shimcha manbalar
|
|
|
+
|
|
|
+- [Qo'shimcha kitoblar](#qoshimcha-kitoblar)
|
|
|
+- [Qo'shimcha o'rganish](#qoshimcha-organish)
|
|
|
+ - [Kompilyatorlar](#kompilyatorlar)
|
|
|
+ - [Emacs va vi(m)](#emacs-va-vim)
|
|
|
+ - [Unix uchun buyruqlar ro'yxati](#unix-uchun-buyruqlar-royxati)
|
|
|
+ - [Ma'lumot nazariyasi](#malumot-nazariyasi-videolar)
|
|
|
+ - [Parity va "Hamming Code"](#parity-va-hamming-code-videolar)
|
|
|
+ - [Entropiya](#entropiya)
|
|
|
+ - [Kriptografiya](#kriptografiya)
|
|
|
+ - [Kompressiya](#kompressiya)
|
|
|
+ - [Kompyuter xavfsizligi](#kompyuter-xavfsizligi)
|
|
|
+ - [Chiqindi yig'ish (Garbage collection)](#chiqindi-yigish-garbage-collection)
|
|
|
+ - [Paralel dasturlash](#paralel-dasturlash)
|
|
|
+ - [Xabar almashish, Serializatsiya, va Queue Tizimlar](#xabar-almashish-serializatsiya-va-queue-tizimlar)
|
|
|
- [A*](#a)
|
|
|
- [Fast Fourier Transform](#fast-fourier-transform)
|
|
|
- [Bloom Filter](#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)
|
|
|
+ - [Locality-Sensitive Hashlash](#locality-sensitive-hashlash)
|
|
|
+ - [van Emde Boas Tree-lari](#van-emde-boas-tree-lari)
|
|
|
+ - [Kattalashtirilgan Data Strukturalari](#kattalashtirilgan-data-strukturalari)
|
|
|
+ - [Balanced search tree-lar](#balanced-search-tree-lar)
|
|
|
+ - AVL tree-lar
|
|
|
+ - Splay tree-lar
|
|
|
+ - Red/black tree-lar
|
|
|
+ - 2-3 search tree-lar
|
|
|
+ - 2-3-4 Tree-lar (shuningdek 2-4 tree nomi bilan tanilgan)
|
|
|
+ - N-talik (K-talik, M-talik) tree-lar
|
|
|
+ - B-Tree-lar
|
|
|
+ - [k-D Tree-lar](#k-d-tree-lar)
|
|
|
+ - [Skip listlar](#skip-listlar)
|
|
|
+ - [Network Flow](#network-flow)
|
|
|
+ - [Disjoint Set & Union Find](#disjoint-set--union-find)
|
|
|
+ - [Tez hisoblash uchun matematika](#tez-hisoblash-uchun-matematika)
|
|
|
- [Treap](#treap)
|
|
|
- - [Linear Programming](#linear-programming-videos)
|
|
|
- - [Geometry, Convex hull](#geometry-convex-hull-videos)
|
|
|
- - [Discrete math](#discrete-math)
|
|
|
+ - [Linear Programming](#linear-programming-videolar)
|
|
|
+ - [Geometry, Convex hull](#geometry-convex-hull-videolar)
|
|
|
+ - [Diskret matematika](#diskret-matematika)
|
|
|
- [Machine Learning](#machine-learning)
|
|
|
-- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
|
|
-- [Video Seriyalar](#video-series)
|
|
|
-- [Computer Science Courses](#computer-science-courses)
|
|
|
-- [Papers](#papers)
|
|
|
+- [Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar](#bazi-mavzular-boyicha-qoshimcha-malumotlar)
|
|
|
+- [Video Seriyalar](#video-seriyalar)
|
|
|
+- [Computer Science Kurslari](#computer-science-kurslari)
|
|
|
+- [Maqolalar](#maqolalar)
|
|
|
|
|
|
---
|
|
|
|
|
@@ -188,7 +153,7 @@ Big-O ni nimaligini bilmas edim, tree-lar yoki graph-lar haqida hech qanday tush
|
|
|
ega emas edim. Agar tartiblash algoritmini (sorting) yozishni so'rashganda, aniq qovun tushirgan
|
|
|
bo'lar edim. Umrimda ishlatgan data strukturalarni hammasini tayyor holda ishlatganman
|
|
|
(built-in library) va ularning asosida nimalar yotishini umuman bilmas edim.
|
|
|
-Juda ko'p kod yozgan bo'lsamda, lekin men hech qachon qandaydir data strukturani noldan yozmaganman
|
|
|
+Juda ko'p kod yozgan bo'lsamda, lekin men hech qachon qandaydir data strukturani noldan yozmaganman.
|
|
|
|
|
|
Bu uzoq vaqt talab qiladigan jarayon bo’lib, sizga bir necha oy kerak bo'lishi mumkin.
|
|
|
Agar siz allaqachon bu narsalarni ko'pini bilsangiz, bu resurslar sizni ko'p vaqtingizni olmaydi.
|
|
@@ -197,7 +162,7 @@ Agar siz allaqachon bu narsalarni ko'pini bilsangiz, bu resurslar sizni ko'p vaq
|
|
|
|
|
|
Quyida foydalanish qoidalari berilgan bo'lib, bosqichlarni yuqoridan pastga tartibda bajarishingiz kerak.
|
|
|
|
|
|
-Men natijalarni kuzatish uchun vazifalar ro'yxatini o'z ichiga olgan Github markupidan foydalanmoqdaman.
|
|
|
+Men natijalarni kuzatish uchun vazifalar ro'yxatini o'z ichiga olgan Github markup-idan foydalanmoqdaman.
|
|
|
|
|
|
**Bu kabi elementlarni tekshirishingiz uchun yangi "branch" yarating, so'ngra shunchaki qavs ichiga x qo'shib, ro'yxat elementlarini belgilashingiz mumkin: [x]**
|
|
|
|
|
@@ -245,7 +210,7 @@ Ba'zan darslar sessiyada bo'lmaganligi sababli siz bir necha oy kutishingizga to
|
|
|
|
|
|
Bepul va har doim ham ochiq ommaviy manbalarni yaratishda o'z hissangizni qo'shishingizni xohlagan bo'lar edim.
|
|
|
Bu manbalar Youtube dagi video darsliklar ham bo'lishi mumkin. Masalan menga universitet
|
|
|
- maruzalaridan foydalanish yoqadi.
|
|
|
+ ma'ruzalaridan foydalanish yoqadi.
|
|
|
|
|
|
|
|
|
## Suhbat jarayoni va intervyuga tayyorgarlik
|
|
@@ -292,7 +257,7 @@ Quyida intervyu uchun dasturlash tilini tanlash haqida yozgan maqolam: [Pick One
|
|
|
|
|
|
Siz intervyu uchun tanlagan dasturlash tilida erkin kod yoza oladigan va o'z bilimingizga ega bo'lishingiz kerak.
|
|
|
|
|
|
-Tog'ri tanlov haqida ko'proq o'qishingiz uchun manbalar:
|
|
|
+To'g'ri tanlov haqida ko'proq o'qishingiz uchun manbalar:
|
|
|
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
|
|
|
- http://blog.codingforinterviews.com/best-programming-language-jobs/
|
|
|
|
|
@@ -309,7 +274,7 @@ Bu sizning vaqtingizni tejash uchun men ishlatgan kitoblar ro'yxatining qisqarti
|
|
|
- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/)
|
|
|
- Javoblar (C++ va Java)
|
|
|
- "Cracking the Coding Interview" kitobini boshlashdan oldin tayyorlanish uchun juda yaxshi manba
|
|
|
- - Juda murakkab emas, hattoki masalarning ko'pchiligi intervyuda uchraydigan masalalardan osonroq.
|
|
|
+ - Juda murakkab emas, hattoki masalalarning ko'pchiligi intervyuda uchraydigan masalalardan osonroq.
|
|
|
- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
|
|
|
- Java dasturlash tilida javoblar
|
|
|
|
|
@@ -325,19 +290,17 @@ Quyidagi kitoblardan birini tanlashingiz mumkin:
|
|
|
|
|
|
### Dasturlash tiliga oid
|
|
|
|
|
|
-** Yuqorida aytilganidek siz intervyu uchun bitta dasturlash tilini tanlashingiz kerak **
|
|
|
+**Yuqorida aytilganidek siz intervyu uchun bitta dasturlash tilini tanlashingiz kerak**
|
|
|
|
|
|
-Mening tilga oid tavsiyalarim. Menda barcha tillar uchun resurslar yo'q shuning uchun sizda qo'shimcha ma'lumot bo'lsa
|
|
|
-tavsiya qilishingiz mumkin.
|
|
|
-Agar siz bulardan birini o'qib chiqsangiz, masalalarni yechishda kerak bo'lgan barcha data strukturalar
|
|
|
-va algoritmlari bo'yicha bilimlarga ega bo'lishingiz kerak.
|
|
|
-** Loyihadagi video resurslarni o'tkazib yuborishingiz mumkin**, agar ko'rib chiqishni xohlamasangiz.
|
|
|
+Mening tilga oid tavsiyalarim. Menda barcha tillar uchun resurslar yo'q shuning uchun sizda qo'shimcha ma'lumot bo'lsa tavsiya qilishingiz mumkin.
|
|
|
+Agar siz bulardan birini o'qib chiqsangiz, masalalarni yechishda kerak bo'lgan barcha data strukturalar va algoritmlari bo'yicha bilimlarga ega bo'lishingiz kerak.
|
|
|
+**Loyihadagi video resurslarni o'tkazib yuborishingiz mumkin**, agar ko'rib chiqishni xohlamasangiz.
|
|
|
|
|
|
[Tilga oid qo'shimcha resurslar.](programming-language-resources.md)
|
|
|
|
|
|
### C++
|
|
|
|
|
|
-Men bularning ikkitasini o'qimaganman, lekin ular yuqori baholangan va Sedvik tomonidan yozilgan. Sedgewick aka zo'rlar :)
|
|
|
+Men bularning ikkitasini o'qimaganman, lekin ular yuqori baholangan va Sedgewick tomonidan yozilgan. Sedgewick aka zo'rlar :)
|
|
|
|
|
|
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
|
|
|
- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
|
|
@@ -391,27 +354,25 @@ Menga tavsiya qilingan kurs (shaxsan o'zim ko'rib chiqmaganman): [Learning how t
|
|
|
Muammoni yechish uchun, men fleshkartalar uchun sayt yaratdim, u yerga 2 turdagi fleshkartalar joylanadi: umumiy eslatmalar va kod.
|
|
|
Har bir karta o'z formatiga ega.
|
|
|
|
|
|
-Vebsaytdan telefon yoki tabletdan ham xoxlagan joyda foydalana olishim uchun mobilga moslangan sayt yaratdim.
|
|
|
+Vebsaytdan telefon yoki tabletdan ham xohlagan joyda foydalana olishim uchun mobil telefonga moslangan sayt yaratdim.
|
|
|
|
|
|
O'zingizni saytingizni ham tekinga yarating:
|
|
|
|
|
|
- [Fleshkartalar sayti uchun repo](https://github.com/jwasham/computer-science-flash-cards)
|
|
|
- [Mening fleshkartalarim bazasi (eski versiya - 1200 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db):
|
|
|
-- [ening fleshkartalarim bazasi(yangi versiya - 1800 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db):
|
|
|
+- [Mening fleshkartalarim bazasi(yangi versiya - 1800 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db):
|
|
|
|
|
|
-Yodingizda bo'lsin, menda assembly language va Python triviyalaridan tortib, machine learning va statistikani
|
|
|
-o'z ichiga olgan kartalarim bor. Bu esa talab qilinadigan narsalardan ham ko'p hisoblanadi.
|
|
|
+Yodingizda bo'lsin, menda assembly language va Python triviyalaridan tortib, machine learning va statistikani o'z ichiga olgan kartalarim bor. Bu esa talab qilinadigan narsalardan ham ko'p hisoblanadi.
|
|
|
(Ya'ni bularning barchasini siz bir vaqtda o'zlashtirgan bo'lishingiz shart emas)
|
|
|
|
|
|
-**Fleshkartalardagi eslatmalar :** Birinchi marta fleshkartadagi javobni topa olganingizda uni o'zlashtirilganlar qatoriga qo'shmang. Aksincha xuddi shu kartani
|
|
|
+**Fleshkartalardagi eslatmalar :** Birinchi marta fleshkartadagi javobni topa olganingizda uni o'zlashtirilganlar qatoriga qo'shmang. Aksincha huddi shu kartani
|
|
|
ajratib qo'ying va bir necha marta javob bering toki haqiqatdan ham javobni anglab yetguningizgacha.
|
|
|
Takrorlash natijasida ma'lumot miyangizga chuqurroq joylashadi.
|
|
|
|
|
|
|
|
|
Fleshkartalar uchun bir necha marta menga tavsiya qilingan alternativ vebsayt [Anki](http://ankisrs.net/).
|
|
|
Bu sizning eslab qolishingizga yordam berish uchun takrorlash sistemasini ishlatadi.
|
|
|
-Buni ishlatish qulay va barcha platformalarda mavjud va cloud bn sinxronizatsiya qilingan. iOS platformalari
|
|
|
-uchun narxi $25, lekin boshqa platformalar uchun tekin.
|
|
|
+Buni ishlatish qulay va barcha platformalarda mavjud va cloud bilan sinxronizatsiya qilingan. iOS platformalari uchun narxi $25, lekin boshqa platformalar uchun tekin.
|
|
|
|
|
|
Anki formatidagi mening fleshkartalarim bazasi: https://ankiweb.net/shared/info/25173560 ([@xiewenya](https://github.com/xiewenya) ga tashakkur).
|
|
|
|
|
@@ -426,7 +387,7 @@ So'ng, keyingi mavzuga o'ting. Bir qancha vaqtdan keyin yana ortga qaytib linked
|
|
|
rekursiyaga oid masala yeching. Asosiysi o'rganish jarayonida ko'proq masalalarni yechishda davom eting.
|
|
|
Sizni ishga bilimingiz uchun emas, bilimingizni qo'llay olishingiz uchun qabul qilishadi.
|
|
|
Men sizlarga tavsiya qiladigan kitoblar va saytlar bor.
|
|
|
-Ko'proq ko'rish uchun havolaga o'ting:: [Coding Question Practice](#coding-question-practice).
|
|
|
+Ko'proq ko'rish uchun havolaga o'ting: [Coding bo'yicha savollar ustida ishlash](#coding-boyicha-savollar-ustida-ishlash).
|
|
|
|
|
|
### 4. Takrorlang, takrorlang va yana takrorlang
|
|
|
|
|
@@ -438,7 +399,7 @@ Masalalar yechish jarayonida biroz tanaffus oling va o'zingizni fleshkartalaring
|
|
|
### 5. Diqqatingizni bir joyga jamlang
|
|
|
|
|
|
Atrofimizda juda ko'p narsalar bizni chalg'itib qo'yadi va qimmatli vaqtimizni oladi.
|
|
|
-Shuningg uchun diqqatni jamlash va konsentratsiya qilish oson emas. Buning bir usuli,
|
|
|
+Shuning uchun diqqatni jamlash va konsentratsiya qilish oson emas. Buning bir usuli,
|
|
|
matnsiz biron musiqa tinglang, bu esa diqqatingizni jamlashingizga yordam beradi.
|
|
|
|
|
|
## Bu proyekt nimalarni o'z ichiga olmaydi
|
|
@@ -461,14 +422,14 @@ Har kuni bitta mavzu olib, videolarini ko'rib, quyidagi tillarda kodda yozib chi
|
|
|
- va testlar yozgan holda (oddiy assert() ishlatib)
|
|
|
- siz Java yoki boshqa tilda qilishingiz mumkin
|
|
|
|
|
|
-Sizga bularni hammasi kerak emas. Intervyu uchun sizga [faqat bitta til](#pick-one-language-for-the-interview) kerak.
|
|
|
+Sizga bularni hammasi kerak emas. Intervyu uchun sizga [faqat bitta til](#intervyu-uchun-bitta-dasturlash-tilini-tanlang) kerak.
|
|
|
|
|
|
Nega turlicha yozish kerak?
|
|
|
- Mashq, mashq, mashq, ko'nglim ayniguncha. Shunda muammosiz tushimda ham qila olaman.
|
|
|
-- Pastgi darajada (low level) yoza olish uchun (masalan, garbage collection ishlatmagan holda)
|
|
|
+- Past darajada (low level) yoza olish uchun (masalan, garbage collection ishlatmagan holda)
|
|
|
- Har kunlik ishda built-in tiplardan bemalol foydalana olish uchun (production-da array listni yoki linked listni boshidan yozib o'tirmaymanku)
|
|
|
|
|
|
-Har bir mavzuni tepadagi tarzda o'qiyolmashim mumkin, lekin harakat qilaman.
|
|
|
+Har bir mavzuni tepadagi tarzda o'qiyolmasligim mumkin, lekin harakat qilaman.
|
|
|
|
|
|
Meni kodlarimni bu yerda ko'rishingiz mumkin:
|
|
|
- [C](https://github.com/jwasham/practice-c)
|
|
@@ -485,7 +446,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- C hamma yoqda. Siz C da yozilgan namuna kodlarni kitoblarda, ma'ruzalarda, videolarda, hamma yoqda uchratasiz
|
|
|
- [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
|
|
|
- Bu qisqacha kitob, lekin C ni sizga ancha o'rgatadi va agar ozgina mashq qilsangiz tezda mohir bo'lib ketasiz.
|
|
|
- C ni tushunish dasturlar va xotira qanday ishlashini tushinishga yordam beradi
|
|
|
+ C ni tushunish - dasturlar va xotira qanday ishlashini tushunishga yordam beradi
|
|
|
- [Savollarga javoblar](https://github.com/lekkas/c-algorithms)
|
|
|
|
|
|
- [ ] **Kompyuterlar dasturni qanday boshqarishadi**
|
|
@@ -499,7 +460,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
|
|
|
- Kodda yozadigan narsa yo'q
|
|
|
- Bu yerda ko'p videolar bor. Tushunguningizgacha ko'ring. Har doim qayta ko'rib chiqishingiz mumkin.
|
|
|
-- Agar bazi maruzalarda murakkab matematika ishlatilsa, pastgi qisimga tushib diskret matematika videolarini ko'rib chiqishingiz mumkin
|
|
|
+- Agar bazi ma'ruzalarda murakkab matematika ishlatilsa, pastgi qismga tushib diskret matematika videolarini ko'rib chiqishingiz mumkin
|
|
|
- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
|
|
|
- [ ] [Big O Notations (umumiy qisqacha tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
|
|
|
- [ ] [Big O Notation (and Omega and Theta) - eng yaxshi matematik tushuntirish (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
|
|
@@ -528,20 +489,19 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [Dinamik massivlar (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV)
|
|
|
- [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g)
|
|
|
- [ ] Vektorni bajaring (o'lchamini o'zgartiradigan massiv):
|
|
|
- - [ ] Massivlar va ko'rsatgichlar(pointerlar) yordamida kod yozishni mashq qiling va massivning index-iga
|
|
|
- o'tish uchun indexing o'rniga pointer matematikasini ishlating.
|
|
|
+ - [ ] Massivlar va ko'rsatgichlar(pointerlar) yordamida kod yozishni mashq qiling va massivning indeksiga o'tish uchun indeks o'rniga pointer matematikasini ishlating.
|
|
|
- [ ] Massivimiz elementlarini ushlab turadigan ichki (private) massiv
|
|
|
- int massivni elementlarni saqlash uchun ishlatsak bo'ladi, faqat uning xususiyatlaridan foydalanmaslik kerak
|
|
|
- 16 dan boshlang, agar boshlanayotgan son kattaroq bo'lsa 2 ning darajalarini ishlating(2 - 16, 32, 64, 128)
|
|
|
- - [ ] size() - Massivdagi elementlar soni
|
|
|
+ - [ ] size() - massivdagi elementlar soni
|
|
|
- [ ] capacity() - massiv o'z ichiga olishi mumkin bo'lgan elementlar soni
|
|
|
- - [ ] is_empty() - Massiv bo'sh yoki yo'qligini tekshirish
|
|
|
- - [ ] at(index) - Ko'rsatilgan index-dagi massiv elementini qaytaradi.
|
|
|
- Agar berilgan index massiv indexlaridan tashqarida bo'lsa xatolik qaytaradi.
|
|
|
+ - [ ] is_empty() - massiv bo'sh yoki yo'qligini tekshirish
|
|
|
+ - [ ] at(index) - ko'rsatilgan indeksdagi massiv elementini qaytaradi.
|
|
|
+ Agar berilgan index massiv indekslaridan tashqarida bo'lsa xatolik qaytaradi.
|
|
|
- [ ] push(item)
|
|
|
- - [ ] insert(index, item) - Ko'rsatilgan index-ga elementni qo'shadi, index-dagi eski element(lar)ni esa o'zidan o'ngga ko'chiradi
|
|
|
+ - [ ] insert(index, item) - ko'rsatilgan indeksga elementni qo'shadi, indeksdagi eski element(lar)ni esa o'zidan o'ngga ko'chiradi
|
|
|
- [ ] prepend(item) - Massivning birinchi elementidan oldin yangi element qo'shish
|
|
|
- - [ ] pop() - Massivning oxirgi elementini o'chiradi va o'chirilgan elemntni qaytaradi.
|
|
|
+ - [ ] pop() - Massivning oxirgi elementini o'chiradi va o'chirilgan elementni qaytaradi.
|
|
|
- [ ] delete(index) - Massiv elementini index bo'yicha o'chiradi, Qolgan elementlar chapga ko'chiriladi
|
|
|
- [ ] remove(item) - Berilgan qiymatni izlaydi va shu qiymatga ega index-larni barchasini o'chiradi
|
|
|
- [ ] find(item) - Berilgan qiymatni izlaydi va shu qiymatga ega birinchi index-ni qaytaradi, agar topilmasa -1 qaytaradi
|
|
@@ -561,7 +521,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0)
|
|
|
- [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w)
|
|
|
- [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo)
|
|
|
- - butun videoni ko'rmang, Node struct va xotira ajratish (memory allocation) qismilarini ko'ring
|
|
|
+ - butun videoni ko'rmang, Node struct va xotira ajratish (memory allocation) qismlarini ko'ring
|
|
|
- [ ] Linked List va Array(massiv)lar:
|
|
|
- [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9)
|
|
|
- [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd)
|
|
@@ -576,13 +536,13 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [ ] value_at(index) - n-inchi elementning qiymatini qaytaradi (0 dan boshlab)
|
|
|
- [ ] push_front(value) - listning boshiga element qo'shadi
|
|
|
- [ ] pop_front() - birinchi elementni olib tashlab va uni qiymatini qaytaradi
|
|
|
- - [ ] push_back(value) - oxiriga element qoshadi
|
|
|
- - [ ] pop_back() - oxiriga elementni olib tashlab va uni qiymatini qaytaradi
|
|
|
+ - [ ] push_back(value) - oxiriga element qo'shadi
|
|
|
+ - [ ] pop_back() - oxirgi elementni olib tashlab va uni qiymatini qaytaradi
|
|
|
- [ ] front() - birinchi elementni qiymatini qaytaradi
|
|
|
- - [ ] back() - oxiriga elementni qiymatini qaytaradi
|
|
|
+ - [ ] back() - oxirgi elementni qiymatini qaytaradi
|
|
|
- [ ] insert(index, value) - index-ni joyiga value-ni joylashtiradi
|
|
|
- [ ] erase(index) - index joyida turgan elementni o'chirib tashlaydi
|
|
|
- - [ ] value_n_from_end(n) - oxiriga sanaganda n-inchi elementni qiymatini qaytaradi
|
|
|
+ - [ ] value_n_from_end(n) - oxiridan sanaganda n-inchi elementni qiymatini qaytaradi
|
|
|
- [ ] reverse() - listni teskari safga qo'yadi
|
|
|
- [ ] remove_value(value) - value qiymatiga ega bo'lgan birinchi elementni o'chirib tashlaydi
|
|
|
- [ ] Doubly-linked List
|
|
@@ -591,7 +551,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
|
|
|
- ### Stack
|
|
|
- [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ)
|
|
|
- - [ ] Kodda yozmayman. Massivada stackni yaratish juda oson.
|
|
|
+ - [ ] Kodda yozmayman. Massivda stackni yaratish juda oson.
|
|
|
|
|
|
- ### Queue
|
|
|
- [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq)
|
|
@@ -606,8 +566,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- empty()
|
|
|
- full()
|
|
|
- [ ] Ish xarajati:
|
|
|
- - queue uchun linked-list ishlatib, list boshiga enqueue qilish va ohiridan dequeue qilish - bu yomon yondashuv
|
|
|
- chunki har safar dequeue qilinganda O(n) vaqt ketadi
|
|
|
+ - queue uchun linked-list ishlatib, list boshiga enqueue qilish va oxiridan dequeue qilish - bu yomon yondashuv. Chunki har safar dequeue qilinganda O(n) vaqt ketadi
|
|
|
- enqueue: O(1) (amortized, linked list va massiv [probing])
|
|
|
- dequeue: O(1) (linked list va massiv)
|
|
|
- empty: O(1) (linked list va massiv)
|
|
@@ -629,7 +588,6 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb)
|
|
|
- [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H)
|
|
|
|
|
|
- - [ ] Implement with array using linear probing
|
|
|
- [ ] 'Linear probing' ishlatgan holda amalga oshirish (massiv bilan)
|
|
|
- hash(k, m) - m bu hash table-ning o'lchami
|
|
|
- add(key, value) - agar key mavjud bo'lsa, qiymatini yangilaydi
|
|
@@ -647,11 +605,11 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- binary search (tartiblangan integer massivlarida)
|
|
|
- rekursiv binary search
|
|
|
|
|
|
-- ### Bitwise operations
|
|
|
- - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32)
|
|
|
- - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, <<
|
|
|
+- ### Bitwise operatsiyalari
|
|
|
+ - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - siz ikkining ko'p darajalarini bilishingiz kerak (2^1 dan 2^16 gacha va 2^32)
|
|
|
+ - [ ] Quyidagi operatorlar bilan bitlarni bo'shqarishni yaxshi bilishingiz kerak: &, |, ^, ~, >>, <<
|
|
|
- [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture))
|
|
|
- - [ ] Good intro:
|
|
|
+ - [ ] Yaxshi kirish:
|
|
|
[Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I)
|
|
|
- [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0)
|
|
|
- [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation)
|
|
@@ -661,17 +619,17 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html)
|
|
|
- [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac)
|
|
|
- [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/)
|
|
|
- - [ ] 2s and 1s complement
|
|
|
+ - [ ] 2 va 1 ning komplementlari
|
|
|
- [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4)
|
|
|
- [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement)
|
|
|
- [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement)
|
|
|
- - [ ] Count set bits
|
|
|
+ - [ ] 1ga teng bo'lgan bitlarni sanash
|
|
|
- [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc)
|
|
|
- [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan)
|
|
|
- [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer)
|
|
|
- - [ ] Swap values:
|
|
|
+ - [ ] Qiymatlarni almashtirish:
|
|
|
- [Swap](https://bits.stephan-brumme.com/swap.html)
|
|
|
- - [ ] Absolute value:
|
|
|
+ - [ ] Absolyut qiymat:
|
|
|
- [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html)
|
|
|
|
|
|
## Trees (daraxtlar)
|
|
@@ -713,10 +671,10 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [ ] Kodda yozish:
|
|
|
- [ ] insert // qiymatni treega joylaydi
|
|
|
- [ ] get_node_count // treedagi elementlar sonini qaytaradi
|
|
|
- - [ ] print_values // treedagi hamma qiymatlarini, mindan maxgacha, yozib chiqaradi
|
|
|
+ - [ ] print_values // treedagi hamma qiymatlarini, min-dan max-gacha, yozib chiqaradi
|
|
|
- [ ] delete_tree
|
|
|
- [ ] is_in_tree // true qaytaradi agar qiymat treeda mavjud bo'lsa
|
|
|
- - [ ] get_height // treeni balandligini qaytaradi (bitta node-ning balandligi 1 xisoblanadi)
|
|
|
+ - [ ] get_height // treeni balandligini qaytaradi (bitta node-ning balandligi 1 hisoblanadi)
|
|
|
- [ ] get_min // treedagi minimum qiymatni qaytaradi
|
|
|
- [ ] get_max // treedagi maximum qiymatni qaytaradi
|
|
|
- [ ] is_binary_search_tree
|
|
@@ -823,8 +781,8 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi
|
|
|
- [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
- [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14)
|
|
|
|
|
|
-Xulosada, vizual tarzda ma'lumot olish uchun [15 ta saralash algoritmlari](https://www.youtube.com/watch?v=kPRA0W1kECg).
|
|
|
-Agar sizga ushbu mavzu bo'yicha batafsil ma'lumot kerak bo'lsa, "Saralash" bo'limiga qarang [Ba'zi mavzular bo'yicha qo'shimcha ma'lumot](#additional-detail-on-some-subjects)
|
|
|
+Vizual tarzda ma'lumot olish uchun [15 ta saralash algoritmlari](https://www.youtube.com/watch?v=kPRA0W1kECg).
|
|
|
+Agar sizga ushbu mavzu bo'yicha batafsil ma'lumot kerak bo'lsa, "Saralash" bo'limiga qarang [Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar](#bazi-mavzular-boyicha-qoshimcha-malumotlar)
|
|
|
|
|
|
## Graflar
|
|
|
|
|
@@ -843,7 +801,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13)
|
|
|
- [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14)
|
|
|
|
|
|
-- [ ] Skiena maruzalari - ajoyib intro:
|
|
|
+- [ ] Skiena ma'ruzalari - ajoyib kirish:
|
|
|
- [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11)
|
|
|
- [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12)
|
|
|
- [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13)
|
|
@@ -888,7 +846,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
## Yanada ko'proq bilim
|
|
|
|
|
|
- ### Rekursiya
|
|
|
- - [ ] rekursiya & backtracking-ga oid Stanford
|
|
|
+ - [ ] rekursiya & backtracking-ga oid Stanford ma'ruzalari:
|
|
|
- [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8)
|
|
|
- [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9)
|
|
|
- [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69)
|
|
@@ -926,7 +884,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
|
|
|
- ### Object-Oriented Programming
|
|
|
- [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc)
|
|
|
- - [ ] SOLID OOP Printsiplari: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
|
|
|
+ - [ ] SOLID OOP Prinsiplari: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
|
|
|
|
|
|
- ### Dizayn patternlar
|
|
|
- [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3)
|
|
@@ -969,7 +927,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- [ ] [Ehtimollik nazariyasi haqida (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19)
|
|
|
|
|
|
- ### NP, NP to'liq va taxminiy algoritmlari
|
|
|
- - Sotuvchi sotuvchi va ryukzak muammosi kabi NP-ning eng mashhur klasslari haqida bilish,
|
|
|
+ - traveling salesman and the knapsack muammosi kabi NP-ning eng mashhur klasslari haqida bilish,
|
|
|
va intervyu beruvchisi ularni niqob bilan so'raganda ularni taniy olish.
|
|
|
|
|
|
- NP-complete nima ekanligini biling.
|
|
@@ -986,9 +944,9 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22)
|
|
|
- [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24)
|
|
|
- [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
- - Piter Norvig sotuvchi sayohatchining sayohatchi masalasining maqbul yechimlarini muhokama qiladi:
|
|
|
+ - Piter Norvig traveling salesman masalasining maqbul yechimlarini muhokama qiladi:
|
|
|
- [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb)
|
|
|
- - 1048 - 1140 sahifalari CLRS da Agar bu sizda bo'lsa.
|
|
|
+ - 1048 - 1140 sahifalari CLRS da agar bu sizda bo'lsa.
|
|
|
|
|
|
- ### Keshlar
|
|
|
- [ ] LRU keshi haqida:
|
|
@@ -999,32 +957,32 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24)
|
|
|
- [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-)
|
|
|
|
|
|
-- ### Processlar va Threadlar
|
|
|
+- ### Process-lar va Thread-lar
|
|
|
- [ ] Computer Science 162 - Operatsion tizimlar (25ta video):
|
|
|
- - processlar va threadlar uchun 1-chidan 11-chigacha bo'lgan videolarni ko'ring
|
|
|
+ - process-lar va thread-lar uchun 1-chidan 11-chigacha bo'lgan videolarni ko'ring
|
|
|
- [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)
|
|
|
- [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread)
|
|
|
- o'z ichiga oladi:
|
|
|
- - Processlar, Threadlar, Concurrency muammolari
|
|
|
- - processlar va threadlarni bir biridan farqi
|
|
|
+ - Process-lar, Thread-lar, Concurrency muammolari
|
|
|
+ - process-lar va thread-larni bir biridan farqi
|
|
|
- Processlar
|
|
|
- Threadlar
|
|
|
- Locklar
|
|
|
- - Mutexlar
|
|
|
- - Semaphorelar
|
|
|
+ - Mutex-lar
|
|
|
+ - Semaphore-lar
|
|
|
- Monitorlar
|
|
|
- Ular qanday ishlaydi?
|
|
|
- Deadlock
|
|
|
- Livelock
|
|
|
- - CPU faoliyati, interruptlar, context almashtirish (context switching)
|
|
|
- - Ko'p yadrolik processorlar bilan ishlaydigan zamonaviy concurrency constructlari
|
|
|
+ - CPU faoliyati, interrupt-lar, context almashtirish (context switching)
|
|
|
+ - Ko'p yadrolik processorlar bilan ishlaydigan zamonaviy concurrency construct-lari
|
|
|
- [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2)
|
|
|
- [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3)
|
|
|
- - Process uchun kerakli resurslar (xotira: kod, statik xotira, stack, heap, va hamda file descriptorlar, i/o)
|
|
|
- - Thread uchun kerakli resurslar (tepadagilarni (stackdan tashqari) bitta processda bo'lgan boshqa threadlar bilan baham ko'radi, lekin har birini o'zini pc, stack counter, registerlar, and stacklari bor)
|
|
|
- - Forklash bu aslida "copy on write" operatsiya. Bu degani fork qilingan processdan nusxa ko'chirish fork process birinchi marta xotiraga yozganda bo'ladi.
|
|
|
+ - Process uchun kerakli resurslar (xotira: kod, statik xotira, stack, heap, va hamda file descriptor-lar, i/o)
|
|
|
+ - Thread uchun kerakli resurslar (tepadagilarni (stackdan tashqari) bitta processda bo'lgan boshqa threadlar bilan baham ko'radi, lekin har birini o'zini pc, stack counter, registerlar, va stacklari bor)
|
|
|
+ - Forklash bu aslida "copy on write" operatsiyasi. Bu degani fork qilingan process-dan nusxa ko'chirish fork process birinchi marta xotiraga yozganda bo'ladi.
|
|
|
- Context almashtirish
|
|
|
- - Operatsion tizm va uni ushlab turgan hardware context almashtirishni qanday qiladi?
|
|
|
+ - Operatsion tizim va uni ushlab turgan hardware context almashtirishni qanday qiladi?
|
|
|
- [ ] [threads in C++ (to'plam - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M)
|
|
|
- [ ] Pythonda concurrency (videolar):
|
|
|
- [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1)
|
|
@@ -1054,7 +1012,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- OS da bu qanday ishlaydi?
|
|
|
- Operatsion tizim videolaridan o'rganish mumkin
|
|
|
|
|
|
-- ### Stringni izlash va manipulyatsiyalar us
|
|
|
+- ### Stringni izlash va manipulyatsiyalar
|
|
|
- [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays)
|
|
|
- [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4)
|
|
|
- [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search)
|
|
@@ -1064,11 +1022,11 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp)
|
|
|
- [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
|
|
|
|
|
- Agar bu mavzuda ko'proq ma'lumot olmoqchi bo'lsangiz, "String Matching" bo'limini ko'ring [Ba'zi mavzular bo'yicha qo'shimcha ma'lumot](#additional-detail-on-some-subjects).
|
|
|
+ Agar bu mavzuda ko'proq ma'lumot olmoqchi bo'lsangiz, "String Matching" bo'limini ko'ring [Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar](#bazi-mavzular-bo'yicha-qoshimcha-malumotlar).
|
|
|
|
|
|
- ### Trie-lar
|
|
|
- - Trie-larning turli xili mavjuddir.Bazilarida prefiks bor bo'lsa bazilarida esa yo'q, va bazilari yo'lni kuzatish uchun bitlar o'rniga string ishlatishadi.
|
|
|
- - Men kodini ko'rib chiqaman, lekin uzim yozmayman
|
|
|
+ - Trie-larning turli xili mavjud. Bazilarida prefiks bor bo'lsa bazilarida esa yo'q, va bazilari yo'lni kuzatish uchun bitlar o'rniga string ishlatishadi.
|
|
|
+ - Men kodini ko'rib chiqaman, lekin o'zim yozmayman
|
|
|
- [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4)
|
|
|
- [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries)
|
|
|
- [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries)
|
|
@@ -1117,21 +1075,21 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
|
|
|
## Tizim Dizayni, Scalability, Ma'lumotlar bilan ishlash
|
|
|
|
|
|
-**agar sizda 4+ yil ish tajribasi bo'lsa intervyularda sizga tizim dizayn savolli tushadi**
|
|
|
+**agar sizda 4+ yil ish tajribasi bo'lsa intervyularda sizga tizim dizayn bo'yicha savolar tushadi**
|
|
|
- Scalability va Tizim Dizayn juda katta mavzular hisoblanadi.
|
|
|
- Chunki katta ko'lamni traffikni ko'tara oladigan software/hardware- ni dizayn qilish uni ko'p qirralarini e'tiborga olishni talab qiladi
|
|
|
+ Chunki katta ko'lamli traffikni ko'tara oladigan software/hardware-ni dizayn qilish uni ko'p qirralarini e'tiborga olishni talab qiladi
|
|
|
Buni ustida bir talay vaqt o'tkazasiz
|
|
|
- Qirralar:
|
|
|
- Scalability
|
|
|
- Katta miqdordagi data to'plamlarni bitta qiymatga agregatlash
|
|
|
- - bitta data to'plamni boshqasiga o'tkazish
|
|
|
+ - Bitta data to'plamini boshqasiga o'tkazish
|
|
|
- Haddan tashqari katta miqdordagi data bilan ishlash
|
|
|
- - Tizim dizayn
|
|
|
+ - Tizim dizayni
|
|
|
- funksional to'plami
|
|
|
- interfeyslar
|
|
|
- klaslar ierarxiyasi
|
|
|
- - malum bir cheklovlar ostida tizimni dizayn qilish
|
|
|
- - soddaligi va mustahkamligi
|
|
|
+ - ma'lum bir cheklovlar ostida tizimni dizayn qilish
|
|
|
+ - soddaligi va mustaxkamligi
|
|
|
- afzalliklar va kamchiliklar o'rtasidagi muvozanat
|
|
|
- ijro tahlili (performance analysis) va optimallashtirish
|
|
|
- [ ] **Bu yerdan boshlang**: [The System Design Primer](https://github.com/donnemartin/system-design-primer)
|
|
@@ -1203,7 +1161,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture)
|
|
|
- [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html)
|
|
|
- [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html)
|
|
|
- - [ ] Servislarni bir biriga bog'laydigan texnologiyalar haqida o'rganish uchun pastroqdagi "Xabar almashish, Serializatsiya, va Queue Tizimlar" qismni ko'ring
|
|
|
+ - [ ] Servislarni bir biriga bog'laydigan texnologiyalar haqida o'rganish uchun pastroqdagi "Xabar almashish, Serializatsiya, va Queue Tizimlar" qismini ko'ring
|
|
|
- [ ] Twitter:
|
|
|
- [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI)
|
|
|
- [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability)
|
|
@@ -1218,18 +1176,18 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
- Qo'shimcha funksional taklif qiling
|
|
|
- Intervyuver qamrov doirasidan tashqarida deb bilgan punktlarni olib tashlang
|
|
|
- High availability kerak deb biling va uni usecase-lar qatoriga qo'shing
|
|
|
- 2. Checklovlar haqida o'ylang
|
|
|
- - Oyiga nechta requestlar bo'lishini so'rang
|
|
|
- - Sekundiga nechta requestlar bo'lishini so'rang (intervyuver javob berishi yoki o'zizdan xisoblashni so'rashi mumkin)
|
|
|
+ 2. Cheklovlar haqida o'ylang
|
|
|
+ - Oyiga nechta so'rovlar bo'lishini so'rang
|
|
|
+ - Sekundiga nechta so'rovlar bo'lishini so'rang (intervyuver javob berishi yoki o'zingiz hisoblashingizni so'rashi mumkin)
|
|
|
- O'qishlar (reads) va yozishlar (writes) foizini baholang
|
|
|
- Baholashda 80/20 qoidasini yodda tuting
|
|
|
- Sekundiga qancha data yoziladi
|
|
|
- 5 yil davomida jami qancha xotira kerak bo'ladi
|
|
|
- Sekundiga qancha data o'qiladi
|
|
|
3. Abstrakt dizayn:
|
|
|
- - Qatlamalar (servis, data, kesh)
|
|
|
+ - Qatlamlar (servis, data, kesh)
|
|
|
- Infrastruktura: load balancing, xabar almashish (messaging)
|
|
|
- - Servis ishlashi uchun kerak bo'lgan muhum algoritmlarni tahlili
|
|
|
+ - Servis ishlashi uchun kerak bo'lgan muhim algoritmlarni tahlili
|
|
|
- Bottleneck-larni e'tiborga oling va ularga yechim toping
|
|
|
- Mashqlar:
|
|
|
- [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972)
|
|
@@ -1260,22 +1218,22 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun
|
|
|
|
|
|
Yuqoridagi barcha "computer science" mavzularini bilb oldingiz, endi coding bo'yicha masalalarga javob berishni mashq qilish vaqti keldi.
|
|
|
|
|
|
-**Coding masalalarini yechishga tayyorlanish bu javoblarni yodlab qolish emas **
|
|
|
+**Coding masalalarini yechishga tayyorlanish bu javoblarni yodlab qolish emas**
|
|
|
|
|
|
Masalalar yechishni mashq qilish nima uchun zarur:
|
|
|
- Muammoni aniqlash va kerakli ma'lumotlar tuzilmalari va algoritmlari mos keladigan joyni topa olish
|
|
|
- Masala uchun kerakli talablarni to'plash
|
|
|
-- Xuddi intervyudagi kabi muammoni yechish uchun qadam baqadam yurish
|
|
|
+- Huddi intervyudagi kabi muammoni yechish uchun qadam baqadam yurish
|
|
|
- Doskada yoki qog'ozda kod yozish, kompyuterda emas
|
|
|
-- Yechimlarizga ish joyi xarajati va ish vaqti xarajatini aniqlash
|
|
|
+- Yechimlaringizga ish joyi xarajati va ish vaqti xarajatini aniqlash
|
|
|
- Yechimlaringizni testlash
|
|
|
|
|
|
Suhbatda metodik, kommunikativ muammolarni hal qilish uchun ajoyib kirish qismi mavjud.
|
|
|
-Siz buni dasturlash uchun intervyu kitoblaridan ham topa olishingiz mumkin
|
|
|
+Siz buni dasturlash uchun intervyu kitoblaridan ham topa olishingiz mumkin,
|
|
|
lekin men buni ular ichida juda foydali deb topdim:
|
|
|
[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
|
|
|
|
|
|
-Uyingizda doska yo'qmi? Bu tabiy. Men o'zgacha insonman, menda kotta doskam bor. Doska o'rniga, rasm chizish uchun
|
|
|
+Uyingizda doska yo'qmi? Bu tabiiy. Men o'zgacha insonman, menda kotta doskam bor. Doska o'rniga, rasm chizish uchun
|
|
|
mo'ljallangan daftar ishlating. Shunda divanda o'tirib, mashq qilishingiz mumkin. Bu mening "divanga mo'ljallangan doskam".
|
|
|
Men rasmda qalamimni ham qo'shganman qulaylik uchun. Agar siz ruchkadan foydalansangiz, o'chirish istagi paydo bo'lishi mumkin.
|
|
|
Tez Chalkashib ketadi. Shuning uchun men qalam va o'chirg'ichdan foydalanaman.
|
|
@@ -1301,7 +1259,7 @@ Ko'ring [Book List above](#book-list)
|
|
|
|
|
|
## Coding mashqlar/savollar
|
|
|
|
|
|
-Miyyangiz og'rigunicha o'rganib bo'lganizdan keyin o'sha miyyangizni ishga soling
|
|
|
+Miyyangiz og'rigunigacha o'rganib bo'lganingizdan keyin o'sha miyyangizni ishga soling
|
|
|
Har kuni coding savollar ishlang, qancha ko'p bo'lsa shuncha yaxshi
|
|
|
|
|
|
- [How to Find a Solution](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/)
|
|
@@ -1344,10 +1302,10 @@ Mock intervyular
|
|
|
- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - Men buni ishlatdim va u menga phone screen va on-site intervyularga ruhan tayyorladi
|
|
|
- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - foydalanuvchilararo intervyuga tayyorlanish modeli
|
|
|
- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - kandidatlarga tech kompaniyalar bilan bo'ladigan bir nechta intervyulardan sakrab o'tishga ham yordam beradi
|
|
|
-- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANGdan senior injinerlar bilan anonim algoritm/tizim dizayn intervyulari
|
|
|
+- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANG-dan senior injinerlar bilan anonim algoritm/tizim dizayn intervyulari
|
|
|
|
|
|
|
|
|
-## Intervyuga yaqin kelganizda
|
|
|
+## Intervyuga yaqin kelganingizda
|
|
|
|
|
|
- Cracking The Coding Interview Set 2 (videolar):
|
|
|
- [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo)
|
|
@@ -1358,10 +1316,10 @@ Mock intervyular
|
|
|
- 'Cracking The Coding Interview' kitobini Resume prep qismini va 'Programming Interviews Exposed' kitobini orqasini ko'ring
|
|
|
|
|
|
|
|
|
-## Intervyuga yaqin kelganda quydagilar haqida o'ylab yuring
|
|
|
+## Intervyuga yaqin kelganda quyidagilar haqida o'ylab yuring
|
|
|
|
|
|
Sizdan so'rashlari mumkin bo'lgan 20 tacha intervyu savollarini o'ylab toping (pastagi savollarga o'xshagan). Har biri uchun 2-3 javobiz bo'lsin.
|
|
|
-Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin
|
|
|
+Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin.
|
|
|
|
|
|
- Nega bu ishni xohlayapsiz?
|
|
|
- Siz yechgan mushkul masala/muammo?
|
|
@@ -1378,13 +1336,13 @@ Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin
|
|
|
|
|
|
## Intervyuver uchun savollaringizni tayyorlab qo'ying
|
|
|
|
|
|
- Mening savollarimning bazilari (Bu savollarga javobni bilsam ham ularni fikrlarini yoki jamoaviy nuqtai nazarlarini bilishni xoxlayman):
|
|
|
+ Mening savollarimning bazilari (Bu savollarga javobni bilsam ham ularni fikrlarini yoki jamoaviy nuqtai nazarlarini bilishni xohlayman):
|
|
|
|
|
|
- Jamoangiz qanchalik katta?
|
|
|
- Sizning dasturlash siklingiz qanday tarzda o'tadi? waterfall/sprintlar/ yoki agile ishlatasizmi?
|
|
|
- Deadline-lar ga shoshilish odatiy holmi? Yoki erkinlik ko'proqmi?
|
|
|
- Jamoangizda qarorlar qanday qabul qilinadi?
|
|
|
-- Haftasiga nechi marta jamooaviy meeting-lar tashkil etiladi?
|
|
|
+- Haftasiga nechi marta jamoaviy meeting-lar tashkil etiladi?
|
|
|
- Sizning ishdagi atmosferangiz sizga konsentratsiya qilishga yordam beradimi?
|
|
|
- Hozirda nima ustida ishlayapsizlar?
|
|
|
- Bunda sizga nima ko'proq yoqadi?
|
|
@@ -1423,7 +1381,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- Zamonaviy variant
|
|
|
- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated)
|
|
|
- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/)
|
|
|
- - Dizayn patternlarga yengil kirish
|
|
|
+ - Dizayn pattern-larga yengil kirish
|
|
|
- [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)
|
|
|
- Shuningdek, "Gang Of Four" yoki "GOF" nomi bilan tanilgan
|
|
|
- Qoidaga aylangan dizayn pattern kitobi
|
|
@@ -1444,7 +1402,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- Algoritm katalogi:
|
|
|
- Bu kitobni sotib olishingizni asl sababi
|
|
|
- Bu qismga yetib qoldim. Tugatganimdan so'ng bu yerni yangilab qo'yaman
|
|
|
- - kindleda ijaraga olsangiz bo'ladi
|
|
|
+ - kindle-da ijaraga olsangiz bo'ladi
|
|
|
- Javoblar
|
|
|
- [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition))
|
|
|
- [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/)
|
|
@@ -1471,12 +1429,12 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
|
|
|
- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
|
|
|
- Boshlang'ich bir ikki boblari muammolarga ajoyib yechimlar taqdim qiladi, lekin bu shunchaki kirish.
|
|
|
- Bu kitob dastur dizayn va arxitekturasi uchun qo'llanma
|
|
|
+ Bu kitob dasturning dizayn va arxitekturasi uchun qo'llanma
|
|
|
|
|
|
## Qo'shimcha o'rganish
|
|
|
|
|
|
- Men bularni har tomonlama rivojlangan dasturchi bo'lishingizga yordam berish va ba'zi texnologiyalar va algoritmlar xabardor bo'lishingiz uchun qo'shdim
|
|
|
- texnologiyalar va algoritmlar, Natijada sizda kattaroq asboblar qutisi bo'ladi.
|
|
|
+ Men bularni har tomonlama rivojlangan dasturchi bo'lishingizga yordam berish va ba'zi texnologiyalar va algoritmlardan xabardor bo'lishingiz uchun qo'shdim,
|
|
|
+ Natijada sizda kattaroq asboblar qutisi bo'ladi.
|
|
|
|
|
|
- ### Kompilyatorlar
|
|
|
- [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
|
|
@@ -1644,7 +1602,6 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- "Balanced search tree-lar orasida, AVL va 2/3 tree-lar hozir o'tmishga aylangan, va red-black tree-lar ancha mashhurroq.
|
|
|
Xususan qiziqarli bo'lgan o'z-o'zini tashkil qiladigan data struktura bu splay tree. Splay tree
|
|
|
har safar key so'ralganda uni rotatsiyadan foydalangan holda root-ga o'tkazadi." - Skiena
|
|
|
- - Of these, I chose to implement a splay tree. From what I've read, you won't implement a
|
|
|
- Bulardan men splay tree-ni kodda yozishni tanladim. Bilishimcha intervyuda sizdan balanced search tree-ni
|
|
|
yozishni so'rashmaydi. Lekin men baribir yozishni xohladim va tan olaylik splay tree-lar zo'r.
|
|
|
Men juda ko'p red-black tree kodlarini ham o'qidim.
|
|
@@ -1703,23 +1660,22 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
Har 2-4 tree uchun unga mos elementlari bir xil tartibda bo'lgan red-black bor. Insertion va deletion funksiyalari red-black
|
|
|
tree-dagi color-flipping va rotation funksiyalariga tengma-tengdir. Bu xususiyati uni red-black tree-larni tagidagi mantiqni
|
|
|
tushunishda juda muhim rol o'ynaydi va shuning uchun ko'p kirish algoritm kitoblari red-black tree-dan oldin 2-4 treelar haqida gapiradi,
|
|
|
- garchi **2-4 tree-lar amalda uncha ko'p ishlatilmasa**.
|
|
|
+ garchi **2-4 tree-lar amalda uncha ko'p ishlatilmasada**.
|
|
|
- [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q)
|
|
|
- [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
|
|
|
- [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5)
|
|
|
|
|
|
- **N-talik (K-talik, M-talik) tree-lar**
|
|
|
- eslatma: N va K bu branchlash faktori (maksimum branchlar)
|
|
|
- - binary tree-lar bu branchlash faktor = 2 bo'lgan 2-talik tree-lar
|
|
|
- - 2-3 trees are 3-ary
|
|
|
+ - binary tree-lar bu branchlash faktori = 2 bo'lgan 2-talik tree-lar
|
|
|
- 2-3 tree-lar 3-talik xisoblanadi
|
|
|
- [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree)
|
|
|
|
|
|
- **B-Tree**
|
|
|
- Qiziq fakt: bu noma'lum, lekin B-tree-dagi B Boeing, Balanced, yoki Bayerdan (boshqa ixtirochisi) olingan bo'lishi mumkin
|
|
|
- Amalda:
|
|
|
- B-Tree-lar malumotlar bazasida keng ishlatiladi. Ko'p zamonaviy fayl tizimlari B-tree yoki uni boshqa variantlarini ishlatadi.
|
|
|
- Malumotlar bazasidan tashqari, B-Tree-lar berilgan fayldagi tasodifiy bo'lakni tez o'qishga yordam beradi. Berilgan i fayl bo'lak adresini disk bo'lak adresiga aylantirish asosiy muammodir.
|
|
|
+ B-Tree-lar ma'lumotlar bazasida keng ishlatiladi. Ko'p zamonaviy fayl tizimlari B-tree yoki uni boshqa variantlarini ishlatadi.
|
|
|
+ Ma'lumotlar bazasidan tashqari, B-Tree-lar berilgan fayldagi tasodifiy bo'lakni tez o'qishga yordam beradi. Berilgan i fayl bo'lak adresini disk bo'lak adresiga aylantirish asosiy muammodir.
|
|
|
- [B-Tree](https://en.wikipedia.org/wiki/B-tree)
|
|
|
- [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html)
|
|
|
- [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6)
|
|
@@ -1731,7 +1687,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
|
|
|
|
|
|
- ### k-D Tree-lar
|
|
|
- - Uchburchak ichidagi nuqtalarni topish uchun yoki yuqori o'lchivli obyektlar uchun juda zo'r
|
|
|
+ - Uchburchak ichidagi nuqtalarni topish uchun yoki yuqori o'lchovli obyektlar uchun juda zo'r
|
|
|
- k-ta yaqin qo'shnilarni topish uchun mos
|
|
|
- [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk)
|
|
|
- [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg)
|
|
@@ -1750,7 +1706,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI)
|
|
|
- [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1)
|
|
|
|
|
|
-- ### Tez xisoblash uchun Matematika
|
|
|
+- ### Tez hisoblash uchun matematika
|
|
|
- [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
- [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg)
|
|
|
|
|
@@ -1817,7 +1773,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en)
|
|
|
- [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle)
|
|
|
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en)
|
|
|
- - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use
|
|
|
+ - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Mijozlarni o'zlari ishlatmaydigan interfeyslarni implement qilishga majburlash kerak emas
|
|
|
- [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ)
|
|
|
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en)
|
|
|
- [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects.
|
|
@@ -1846,7 +1802,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27)
|
|
|
- [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28)
|
|
|
|
|
|
-- MIT **Ehtimollik nazariyasi** (matematikaga oid, sekin asstalik bilan ko'rib chiqing, matematikaga oid narsalar uchun yaxshi) (videolar):
|
|
|
+- MIT **Ehtimollik nazariyasi** (matematikaga oid, sekin astalik bilan ko'rib chiqing, matematikaga oid narsalar uchun yaxshi) (videolar):
|
|
|
- [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B)
|
|
|
- [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B)
|
|
|
- [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B)
|
|
@@ -1871,7 +1827,7 @@ Hech qachon tugatgan bo'lmaymiz.
|
|
|
- [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm)
|
|
|
- [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10)
|
|
|
- [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1)
|
|
|
- - juda yaxshi boshlanadi, ammo KMPdan o'tib ketishi bilan u kerak bo'lgandan ko'ra murakkabroq bo'ladi
|
|
|
+ - juda yaxshi boshlanadi, ammo KMP-dan o'tib ketishi bilan u kerak bo'lgandan ko'ra murakkabroq bo'ladi
|
|
|
- tries ning yaxshi tarifi berilgan
|
|
|
- o'tqazib yuborishingiz mumkin
|
|
|
|