[{"data":1,"prerenderedAt":1573},["ShallowReactive",2],{"search-navigation":3,"guide-start":961},[4,54],{"title":5,"path":6,"stem":7,"children":8,"page":53},"Fundamentals","\u002Ffundamentals","fundamentals",[9,13,17,21,25,29,33,37,41,45,49],{"title":10,"path":11,"stem":12},"Ký hiệu Big-O và các lớp tăng trưởng","\u002Ffundamentals\u002Fbig-o-notation","fundamentals\u002Fbig-o-notation",{"title":14,"path":15,"stem":16},"Chiều dữ liệu và chiều tính toán","\u002Ffundamentals\u002Fchieu-du-lieu-va-tinh-toan","fundamentals\u002Fchieu-du-lieu-va-tinh-toan",{"title":18,"path":19,"stem":20},"Đệ quy: tư duy và cái giá","\u002Ffundamentals\u002Fde-quy","fundamentals\u002Fde-quy",{"title":22,"path":23,"stem":24},"Giải thuật ngẫu nhiên và độ chính xác","\u002Ffundamentals\u002Fgiai-thuat-ngau-nhien-va-do-chinh-xac","fundamentals\u002Fgiai-thuat-ngau-nhien-va-do-chinh-xac",{"title":26,"path":27,"stem":28},"Nguyên lý thiết kế hướng đối tượng","\u002Ffundamentals\u002Fnguyen-ly-thiet-ke-huong-doi-tuong","fundamentals\u002Fnguyen-ly-thiet-ke-huong-doi-tuong",{"title":30,"path":31,"stem":32},"Nhập môn design patterns","\u002Ffundamentals\u002Fnhap-mon-design-patterns","fundamentals\u002Fnhap-mon-design-patterns",{"title":34,"path":35,"stem":36},"P, NP và độ khó bài toán","\u002Ffundamentals\u002Fp-np-va-do-kho","fundamentals\u002Fp-np-va-do-kho",{"title":38,"path":39,"stem":40},"Mô hình RAM và chi phí tính toán","\u002Ffundamentals\u002Fram-model-va-chi-phi","fundamentals\u002Fram-model-va-chi-phi",{"title":42,"path":43,"stem":44},"Thiết kế và kiểm chứng thuật toán","\u002Ffundamentals\u002Fthiet-ke-va-kiem-chung-thuat-toan","fundamentals\u002Fthiet-ke-va-kiem-chung-thuat-toan",{"title":46,"path":47,"stem":48},"Thuật toán và môi trường phát triển","\u002Ffundamentals\u002Fthuat-toan-moi-truong-phat-trien","fundamentals\u002Fthuat-toan-moi-truong-phat-trien",{"title":50,"path":51,"stem":52},"Độ phức tạp thời gian và không gian","\u002Ffundamentals\u002Ftime-space-complexity","fundamentals\u002Ftime-space-complexity",false,{"title":55,"path":56,"stem":57,"children":58,"page":53},"Challenges","\u002Fchallenges","challenges",[59,64,69,74,79,84,89,94,99,104,109,114,119,124,129,134,139,144,149,154,159,164,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244,249,254,259,264,269,274,279,284,289,294,299,304,309,314,319,324,329,334,339,344,349,354,359,364,369,374,379,384,389,394,399,404,409,414,419,424,429,434,439,444,449,454,459,464,469,474,479,484,489,494,499,504,509,514,519,524,529,534,539,544,549,554,559,564,569,574,579,584,589,594,599,604,609,614,619,624,629,634,639,644,649,654,659,664,669,674,679,684,689,694,699,704,709,714,719,724,729,734,739,744,749,754,759,764,769,774,779,786,791,796,801,806,811,816,821,826,831,836,841,846,851,856,861,866,871,876,881,886,891,896,901,906,911,916,921,926,931,936,941,946,951,956],{"title":60,"path":61,"stem":62,"day":63},"Dynamic Array: mảng động và cách tự cài đặt","\u002Fchallenges\u002Fmang-va-danh-sach","challenges\u002F1.mang-va-danh-sach",1,{"title":65,"path":66,"stem":67,"day":68},"Linked list đơn, đôi và so sánh với mảng","\u002Fchallenges\u002Flinked-list","challenges\u002F2.linked-list",2,{"title":70,"path":71,"stem":72,"day":73},"SOLID, Open-Closed và Dependency Inversion thực hành","\u002Fchallenges\u002Fsolid-thuc-hanh","challenges\u002F3.solid-thuc-hanh",3,{"title":75,"path":76,"stem":77,"day":78},"Stack, queue, deque: LIFO, FIFO và ứng dụng","\u002Fchallenges\u002Fstack-va-queue","challenges\u002F4.stack-va-queue",4,{"title":80,"path":81,"stem":82,"day":83},"Dictionary, set và ý tưởng băm","\u002Fchallenges\u002Fdictionary-va-set","challenges\u002F5.dictionary-va-set",5,{"title":85,"path":86,"stem":87,"day":88},"Strategy: đóng gói họ thuật toán bay và kêu của vịt","\u002Fchallenges\u002Fstrategy-pattern","challenges\u002F6.strategy-pattern",6,{"title":90,"path":91,"stem":92,"day":93},"Cây và binary search tree: thuật ngữ và bất biến","\u002Fchallenges\u002Fcay-va-bst","challenges\u002F7.cay-va-bst",7,{"title":95,"path":96,"stem":97,"day":98},"Thực hành đệ quy: base case, trace và memo","\u002Fchallenges\u002Fde-quy-thuc-hanh","challenges\u002F8.de-quy-thuc-hanh",8,{"title":100,"path":101,"stem":102,"day":103},"Observer: publisher-subscriber và loose coupling","\u002Fchallenges\u002Fobserver-co-ban","challenges\u002F9.observer-co-ban",9,{"title":105,"path":106,"stem":107,"day":108},"Bộ ba sắp xếp O(n²): bubble, selection, insertion","\u002Fchallenges\u002Fsap-xep-co-ban","challenges\u002F10.sap-xep-co-ban",10,{"title":110,"path":111,"stem":112,"day":113},"Sắp xếp hiệu quả: merge, shell, quick và cách chọn","\u002Fchallenges\u002Fsap-xep-hieu-qua","challenges\u002F11.sap-xep-hieu-qua",11,{"title":115,"path":116,"stem":117,"day":118},"Decorator: Starbuzz Coffee và chuỗi bọc","\u002Fchallenges\u002Fdecorator-co-ban","challenges\u002F12.decorator-co-ban",12,{"title":120,"path":121,"stem":122,"day":123},"Tìm kiếm: linear, binary và interpolation","\u002Fchallenges\u002Ftim-kiem-co-ban","challenges\u002F13.tim-kiem-co-ban",13,{"title":125,"path":126,"stem":127,"day":128},"Ma trận và bảng dữ liệu trong thuật toán","\u002Fchallenges\u002Fma-tran-va-du-lieu-bang","challenges\u002F14.ma-tran-va-du-lieu-bang",14,{"title":130,"path":131,"stem":132,"day":133},"Observer nâng cao: pull vs push và trạm thời tiết","\u002Fchallenges\u002Fobserver-nang-cao","challenges\u002F15.observer-nang-cao",15,{"title":135,"path":136,"stem":137,"day":138},"Brute-force và greedy nhập môn qua TSP","\u002Fchallenges\u002Fbrute-force-va-greedy","challenges\u002F16.brute-force-va-greedy",16,{"title":140,"path":141,"stem":142,"day":143},"Quy hoạch động: bài toán con gối nhau và memo","\u002Fchallenges\u002Fquy-hoach-dong-nhap-mon","challenges\u002F17.quy-hoach-dong-nhap-mon",17,{"title":145,"path":146,"stem":147,"day":148},"Simple Factory: đóng gói khởi tạo đối tượng pizza","\u002Fchallenges\u002Fsimple-factory","challenges\u002F18.simple-factory",18,{"title":150,"path":151,"stem":152,"day":153},"Singleton: Chocolate Factory và an toàn đa luồng","\u002Fchallenges\u002Fsingleton-pattern","challenges\u002F19.singleton-pattern",19,{"title":155,"path":156,"stem":157,"day":158},"Adapter: vịt-gà tây và object vs class adapter","\u002Fchallenges\u002Fadapter-pattern","challenges\u002F20.adapter-pattern",20,{"title":160,"path":161,"stem":162,"day":163},"Mini project 1: benchmark sắp xếp và cấu trúc cơ bản","\u002Fchallenges\u002Fmini-project-sort","challenges\u002F21.mini-project-sort",21,{"title":165,"path":166,"stem":167,"day":168},"Học không giám sát - vòng đời, khoảng cách, phân khúc","\u002Fchallenges\u002Funsupervised-tong-quan","challenges\u002F22.unsupervised-tong-quan",22,{"title":170,"path":171,"stem":172,"day":173},"Priority queue và binary heap: API và biểu diễn mảng","\u002Fchallenges\u002Fpriority-queue-va-heap","challenges\u002F23.priority-queue-va-heap",23,{"title":175,"path":176,"stem":177,"day":178},"Thao tác heap: BubbleUp, PushDown, Heapify, Top, Update","\u002Fchallenges\u002Fheap-operations","challenges\u002F24.heap-operations",24,{"title":180,"path":181,"stem":182,"day":183},"Factory Method: framework và creator song song product","\u002Fchallenges\u002Ffactory-method","challenges\u002F25.factory-method",25,{"title":185,"path":186,"stem":187,"day":188},"D-ary heap, branching factor và bài toán top-K","\u002Fchallenges\u002Fd-ary-heap-va-topk","challenges\u002F26.d-ary-heap-va-topk",26,{"title":190,"path":191,"stem":192,"day":193},"Mã Huffman: nén tham lam bằng heap","\u002Fchallenges\u002Fma-huffman","challenges\u002F27.ma-huffman",27,{"title":195,"path":196,"stem":197,"day":198},"Command: remote control và khe cắm lệnh","\u002Fchallenges\u002Fcommand-co-ban","challenges\u002F28.command-co-ban",28,{"title":200,"path":201,"stem":202,"day":203},"Treap: BST kết hợp heap và phép xoay","\u002Fchallenges\u002Ftreap-co-ban","challenges\u002F29.treap-co-ban",29,{"title":205,"path":206,"stem":207,"day":208},"Bloom filter: cơ chế bit, false positive và ứng dụng","\u002Fchallenges\u002Fbo-loc-bloom","challenges\u002F30.bo-loc-bloom",30,{"title":210,"path":211,"stem":212,"day":213},"Facade: rạp hát tại gia và Least Knowledge","\u002Fchallenges\u002Ffacade-pattern","challenges\u002F31.facade-pattern",31,{"title":215,"path":216,"stem":217,"day":218},"Disjoint set: bài toán distinct subsets và cài đặt naive","\u002Fchallenges\u002Fdisjoint-set-co-ban","challenges\u002F32.disjoint-set-co-ban",32,{"title":220,"path":221,"stem":222,"day":223},"Union-Find tối ưu và Kruskal tìm cây khung","\u002Fchallenges\u002Funion-find-va-kruskal","challenges\u002F33.union-find-va-kruskal",33,{"title":225,"path":226,"stem":227,"day":228},"Template Method: khung pha chế và Hollywood principle","\u002Fchallenges\u002Ftemplate-method","challenges\u002F34.template-method",34,{"title":230,"path":231,"stem":232,"day":233},"Trie: nút, cạnh, search, insert, remove, prefix","\u002Fchallenges\u002Ftrie-co-ban","challenges\u002F35.trie-co-ban",35,{"title":235,"path":236,"stem":237,"day":238},"Radix trie nén cạnh và ứng dụng autocomplete, spell-check","\u002Fchallenges\u002Fradix-trie-va-ung-dung","challenges\u002F36.radix-trie-va-ung-dung",36,{"title":240,"path":241,"stem":242,"day":243},"Iterator: sáp nhập quán ăn và single responsibility","\u002Fchallenges\u002Fiterator-pattern","challenges\u002F37.iterator-pattern",37,{"title":245,"path":246,"stem":247,"day":248},"Hash table nâng cao: hàm băm và xử lý xung đột","\u002Fchallenges\u002Fhash-table-nang-cao","challenges\u002F38.hash-table-nang-cao",38,{"title":250,"path":251,"stem":252,"day":253},"LRU cache: thứ tự thời gian và đuổi dữ liệu cũ","\u002Fchallenges\u002Flru-cache","challenges\u002F39.lru-cache",39,{"title":255,"path":256,"stem":257,"day":258},"Biểu diễn đồ thị và BFS tìm đường ngắn nhất","\u002Fchallenges\u002Fdo-thi-va-bfs","challenges\u002F40.do-thi-va-bfs",40,{"title":260,"path":261,"stem":262,"day":263},"DFS, ngăn xếp và so sánh với BFS","\u002Fchallenges\u002Fdfs-va-so-sanh","challenges\u002F41.dfs-va-so-sanh",41,{"title":265,"path":266,"stem":267,"day":268},"Dijkstra với heap cho đồ thị có trọng số","\u002Fchallenges\u002Fdijkstra-voi-heap","challenges\u002F42.dijkstra-voi-heap",42,{"title":270,"path":271,"stem":272,"day":273},"A* heuristic và Prim cây khung nhỏ nhất","\u002Fchallenges\u002Fa-star-va-prim","challenges\u002F43.a-star-va-prim",43,{"title":275,"path":276,"stem":277,"day":278},"Egonet và centrality - degree, betweenness, closeness, eigenvector","\u002Fchallenges\u002Fcentrality-va-egonet","challenges\u002F44.centrality-va-egonet",44,{"title":280,"path":281,"stem":282,"day":283},"K-d tree - luân phiên chiều, bất biến và cân bằng","\u002Fchallenges\u002Fkd-tree-co-ban","challenges\u002F45.kd-tree-co-ban",45,{"title":285,"path":286,"stem":287,"day":288},"Ứng dụng NN - nearest hub, giảm màu ảnh, hạt vật lý","\u002Fchallenges\u002Fung-dung-nn-search","challenges\u002F46.ung-dung-nn-search",46,{"title":290,"path":291,"stem":292,"day":293},"K-means - khởi tạo, hội tụ và curse of dimensionality","\u002Fchallenges\u002Fkmeans","challenges\u002F47.kmeans",47,{"title":295,"path":296,"stem":297,"day":298},"DBSCAN - density-reachable, lõi, biên, nhiễu","\u002Fchallenges\u002Fdbscan","challenges\u002F48.dbscan",48,{"title":300,"path":301,"stem":302,"day":303},"Đánh giá clustering - silhouette và diễn giải","\u002Fchallenges\u002Fdanh-gia-clustering","challenges\u002F49.danh-gia-clustering",49,{"title":305,"path":306,"stem":307,"day":308},"MapReduce - map, reduce qua ví dụ Donald Duck","\u002Fchallenges\u002Fmapreduce-co-ban","challenges\u002F50.mapreduce-co-ban",50,{"title":310,"path":311,"stem":312,"day":313},"Luật giỏ hàng - Apriori và FP-growth","\u002Fchallenges\u002Fluat-gio-hang","challenges\u002F51.luat-gio-hang",51,{"title":315,"path":316,"stem":317,"day":318},"Học có giám sát - pipeline, scaling và phân loại bài toán","\u002Fchallenges\u002Fsupervised-tong-quan","challenges\u002F52.supervised-tong-quan",52,{"title":320,"path":321,"stem":322,"day":323},"Decision tree - split, impurity và pruning","\u002Fchallenges\u002Fcay-quyet-dinh","challenges\u002F53.cay-quyet-dinh",53,{"title":325,"path":326,"stem":327,"day":328},"Naive Bayes và mô hình xác suất cho text","\u002Fchallenges\u002Fnaive-bayes","challenges\u002F54.naive-bayes",54,{"title":330,"path":331,"stem":332,"day":333},"Hồi quy tuyến tính, bội và logistic","\u002Fchallenges\u002Fhoi-quy","challenges\u002F55.hoi-quy",55,{"title":335,"path":336,"stem":337,"day":338},"Đánh giá mô hình - confusion matrix, precision, recall, overfitting","\u002Fchallenges\u002Fdanh-gia-mo-hinh","challenges\u002F56.danh-gia-mo-hinh",56,{"title":340,"path":341,"stem":342,"day":343},"NLP cơ bản: tokenize, BoW và TF-IDF","\u002Fchallenges\u002Fnlp-co-ban","challenges\u002F57.nlp-co-ban",57,{"title":345,"path":346,"stem":347,"day":348},"Gợi ý content-based và đồng xuất hiện","\u002Fchallenges\u002Frecsys-content","challenges\u002F58.recsys-content",58,{"title":350,"path":351,"stem":352,"day":353},"Collaborative filtering user-based và item-based","\u002Fchallenges\u002Frecsys-collaborative","challenges\u002F59.recsys-collaborative",59,{"title":355,"path":356,"stem":357,"day":358},"CAP theorem và lưu trữ phân tán","\u002Fchallenges\u002Fcap-va-luu-tru","challenges\u002F60.cap-va-luu-tru",60,{"title":360,"path":361,"stem":362,"day":363},"Nén dữ liệu: LZ77 và định dạng nâng cao","\u002Fchallenges\u002Fnen-du-lieu","challenges\u002F61.nen-du-lieu",61,{"title":365,"path":366,"stem":367,"day":368},"Mật mã cơ bản: thay thế, hoán vị, băm, đối xứng","\u002Fchallenges\u002Fcrypto-co-ban","challenges\u002F62.crypto-co-ban",62,{"title":370,"path":371,"stem":372,"day":373},"Explainability: hộp trắng, hộp đen và giảm bias","\u002Fchallenges\u002Fexplainability-dao-duc","challenges\u002F63.explainability-dao-duc",63,{"title":375,"path":376,"stem":377,"day":378},"Tổ chức patterns C\u002FS\u002FB và anti-patterns","\u002Fchallenges\u002Fto-chuc-anti-patterns","challenges\u002F64.to-chuc-anti-patterns",64,{"title":380,"path":381,"stem":382,"day":383},"Treap nâng cao: insert, delete và cân bằng kỳ vọng","\u002Fchallenges\u002Ftreap-nang-cao","challenges\u002F65.treap-nang-cao",65,{"title":385,"path":386,"stem":387,"day":388},"LFU, freshness, async và khóa đồng bộ trong cache","\u002Fchallenges\u002Flfu-va-chien-luoc-cache","challenges\u002F66.lfu-va-chien-luoc-cache",66,{"title":390,"path":391,"stem":392,"day":393},"Composite: thực đơn cây, trong suốt vs an toàn","\u002Fchallenges\u002Fcomposite-pattern","challenges\u002F67.composite-pattern",67,{"title":395,"path":396,"stem":397,"day":398},"Kết hợp Iterator và Composite duyệt cây đệ quy","\u002Fchallenges\u002Fiterator-composite","challenges\u002F68.iterator-composite",68,{"title":400,"path":401,"stem":402,"day":403},"Nearest neighbor và region search trên k-d tree","\u002Fchallenges\u002Fkd-tree-nang-cao","challenges\u002F69.kd-tree-nang-cao",69,{"title":405,"path":406,"stem":407,"day":408},"Bài toán nearest neighbor và R-tree indexing","\u002Fchallenges\u002Fnn-search-va-rtree","challenges\u002F70.nn-search-va-rtree",70,{"title":410,"path":411,"stem":412,"day":413},"Decorator thực tế: thư viện vào-ra và tự viết decorator","\u002Fchallenges\u002Fdecorator-io","challenges\u002F71.decorator-io",71,{"title":415,"path":416,"stem":417,"day":418},"Case study phát hiện gian lận bằng SNA và watchtower","\u002Fchallenges\u002Fgian-lan-watchtower","challenges\u002F72.gian-lan-watchtower",72,{"title":420,"path":421,"stem":422,"day":423},"PageRank lan truyền điểm số và damping","\u002Fchallenges\u002Fpagerank","challenges\u002F73.pagerank",73,{"title":425,"path":426,"stem":427,"day":428},"Abstract Factory: họ nguyên liệu và vùng miền","\u002Fchallenges\u002Fabstract-factory","challenges\u002F74.abstract-factory",74,{"title":430,"path":431,"stem":432,"day":433},"So sánh 3 factory và nghịch lý mở rộng","\u002Fchallenges\u002Ffactory-so-sanh","challenges\u002F75.factory-so-sanh",75,{"title":435,"path":436,"stem":437,"day":438},"Quy hoạch tuyến tính - hàm mục tiêu, ràng buộc, capacity planning","\u002Fchallenges\u002Fquy-hoach-tuyen-tinh","challenges\u002F76.quy-hoach-tuyen-tinh",76,{"title":440,"path":441,"stem":442,"day":443},"Quy hoạch động nâng cao - overlapping, tái cấu trúc nghiệm","\u002Fchallenges\u002Fquy-hoach-dong-nang-cao","challenges\u002F77.quy-hoach-dong-nang-cao",77,{"title":445,"path":446,"stem":447,"day":448},"TSP dưới 3 chiến lược - brute-force, greedy, DP","\u002Fchallenges\u002Ftsp-ba-chien-luoc","challenges\u002F78.tsp-ba-chien-luoc",78,{"title":450,"path":451,"stem":452,"day":453},"Đồ thị phẳng: nhúng và định lý Kuratowski","\u002Fchallenges\u002Fdo-thi-phang","challenges\u002F79.do-thi-phang",79,{"title":455,"path":456,"stem":457,"day":458},"Mini project 2 - tuyến giao hàng BFS, DFS, Dijkstra","\u002Fchallenges\u002Fmini-project-graph","challenges\u002F80.mini-project-graph",80,{"title":460,"path":461,"stem":462,"day":463},"Command: undo bằng state và macro mở tiệc","\u002Fchallenges\u002Fcommand-undo-macro","challenges\u002F81.command-undo-macro",81,{"title":465,"path":466,"stem":467,"day":468},"Command thực tế: hàng đợi, logging và ActionListener","\u002Fchallenges\u002Fcommand-queue-log","challenges\u002F82.command-queue-log",82,{"title":470,"path":471,"stem":472,"day":473},"OPTICS và phân cụm phân cấp","\u002Fchallenges\u002Foptics-phan-cap","challenges\u002F83.optics-phan-cap",83,{"title":475,"path":476,"stem":477,"day":478},"Giảm chiều PCA - vector riêng và PC1, PC2","\u002Fchallenges\u002Fgiam-chieu-pca","challenges\u002F84.giam-chieu-pca",84,{"title":480,"path":481,"stem":482,"day":483},"State: máy bán kẹo và ủy thác trạng thái","\u002Fchallenges\u002Fstate-co-ban","challenges\u002F85.state-co-ban",85,{"title":485,"path":486,"stem":487,"day":488},"State nâng cao: game 1\u002F10 và State vs Strategy","\u002Fchallenges\u002Fstate-nang-cao","challenges\u002F86.state-nang-cao",86,{"title":490,"path":491,"stem":492,"day":493},"MapReduce cho K-means và canopy clustering","\u002Fchallenges\u002Fmapreduce-kmeans-canopy","challenges\u002F87.mapreduce-kmeans-canopy",87,{"title":495,"path":496,"stem":497,"day":498},"MapReduce DBSCAN và khởi tạo centroid","\u002Fchallenges\u002Fmapreduce-dbscan","challenges\u002F88.mapreduce-dbscan",88,{"title":500,"path":501,"stem":502,"day":503},"Random forest, GBM và XGBoost","\u002Fchallenges\u002Frung-va-boosting","challenges\u002F89.rung-va-boosting",89,{"title":505,"path":506,"stem":507,"day":508},"SVM - margin, kernel và dữ liệu phi tuyến","\u002Fchallenges\u002Fsvm","challenges\u002F90.svm",90,{"title":510,"path":511,"stem":512,"day":513},"Matrix factorization, cold start và mô hình lai","\u002Fchallenges\u002Frecsys-nang-cao","challenges\u002F91.recsys-nang-cao",91,{"title":515,"path":516,"stem":517,"day":518},"Bridge và Builder còn lại nhưng quan trọng","\u002Fchallenges\u002Fbridge-builder","challenges\u002F92.bridge-builder",92,{"title":520,"path":521,"stem":522,"day":523},"Perceptron, XOR và kiến trúc mạng noron","\u002Fchallenges\u002Fperceptron-mang-noron","challenges\u002F93.perceptron-mang-noron",93,{"title":525,"path":526,"stem":527,"day":528},"Huấn luyện mạng: loss, backprop và hàm kích hoạt","\u002Fchallenges\u002Fhuan-luyen-mang","challenges\u002F94.huan-luyen-mang",94,{"title":530,"path":531,"stem":532,"day":533},"Mediator, Memento và Prototype","\u002Fchallenges\u002Fmediator-memento-prototype","challenges\u002F95.mediator-memento-prototype",95,{"title":535,"path":536,"stem":537,"day":538},"CNN: tích chập và gộp cho ảnh","\u002Fchallenges\u002Fcnn","challenges\u002F96.cnn",96,{"title":540,"path":541,"stem":542,"day":543},"GAN và transfer learning","\u002Fchallenges\u002Fgan-va-transfer","challenges\u002F97.gan-va-transfer",97,{"title":545,"path":546,"stem":547,"day":548},"Proxy: truy cập từ xa và virtual ảnh bìa","\u002Fchallenges\u002Fproxy-remote-virtual","challenges\u002F98.proxy-remote-virtual",98,{"title":550,"path":551,"stem":552,"day":553},"Word embedding và sentiment bằng Naive Bayes","\u002Fchallenges\u002Fembedding-sentiment","challenges\u002F99.embedding-sentiment",99,{"title":555,"path":556,"stem":557,"day":558},"Mô hình chuỗi và RNN với BPTT","\u002Fchallenges\u002Frnn-chuoi","challenges\u002F100.rnn-chuoi",100,{"title":560,"path":561,"stem":562,"day":563},"LSTM và GRU: cổng và trí nhớ dài hạn","\u002Fchallenges\u002Flstm-gru","challenges\u002F101.lstm-gru",101,{"title":565,"path":566,"stem":567,"day":568},"Attention, self-attention và Transformer","\u002Fchallenges\u002Fattention-transformer","challenges\u002F102.attention-transformer",102,{"title":570,"path":571,"stem":572,"day":573},"GPT vs BERT và Seq2Seq bottleneck","\u002Fchallenges\u002Fgpt-bert","challenges\u002F103.gpt-bert",103,{"title":575,"path":576,"stem":577,"day":578},"Chain of Responsibility và Flyweight","\u002Fchallenges\u002Fchain-flyweight","challenges\u002F104.chain-flyweight",104,{"title":580,"path":581,"stem":582,"day":583},"Stream processing thời gian thực và StreamSensing","\u002Fchallenges\u002Fstream-processing","challenges\u002F105.stream-processing",105,{"title":585,"path":586,"stem":587,"day":588},"Bất đối xứng, PKI, blockchain và chống MITM","\u002Fchallenges\u002Fcrypto-nang-cao","challenges\u002F106.crypto-nang-cao",106,{"title":590,"path":591,"stem":592,"day":593},"MVC: compound pattern điều khiển nhịp DJ","\u002Fchallenges\u002Fmvc-compound","challenges\u002F107.mvc-compound",107,{"title":595,"path":596,"stem":597,"day":598},"Đàn vịt compound: 4 patterns trong một app","\u002Fchallenges\u002Fcompound-ducks","challenges\u002F108.compound-ducks",108,{"title":600,"path":601,"stem":602,"day":603},"Spark, in-memory và elasticity hệ thống lớn","\u002Fchallenges\u002Fspark-large-scale","challenges\u002F109.spark-large-scale",109,{"title":605,"path":606,"stem":607,"day":608},"Hiệu năng tính toán: Amdahl, CUDA và data locality","\u002Fchallenges\u002Fhieu-nang-tinh-toan","challenges\u002F110.hieu-nang-tinh-toan",110,{"title":610,"path":611,"stem":612,"day":613},"Gradient descent: cost, step và local minima","\u002Fchallenges\u002Fgradient-descent","challenges\u002F111.gradient-descent",111,{"title":615,"path":616,"stem":617,"day":618},"Gradient cho hồi quy tuyến tính và graph embedding","\u002Fchallenges\u002Fgradient-ung-dung","challenges\u002F112.gradient-ung-dung",112,{"title":620,"path":621,"stem":622,"day":623},"Simulated annealing: leo lên để xuống đáy","\u002Fchallenges\u002Fsimulated-annealing","challenges\u002F113.simulated-annealing",113,{"title":625,"path":626,"stem":627,"day":628},"SA cho TSP: transition, 2-opt và tỉa cành","\u002Fchallenges\u002Fsa-tsp","challenges\u002F114.sa-tsp",114,{"title":630,"path":631,"stem":632,"day":633},"Giải thuật di truyền: chromosome, fitness, selection","\u002Fchallenges\u002Fgenetic-co-ban","challenges\u002F115.genetic-co-ban",115,{"title":635,"path":636,"stem":637,"day":638},"Project: refactor SimUDuck bằng Strategy và Observer","\u002Fchallenges\u002Fproject-simuduck","challenges\u002F116.project-simuduck",116,{"title":640,"path":641,"stem":642,"day":643},"Project: Pizza Store bằng Factory và Decorator","\u002Fchallenges\u002Fproject-pizza","challenges\u002F117.project-pizza",117,{"title":645,"path":646,"stem":647,"day":648},"Kể chuyện patterns và SOLID khi phỏng vấn","\u002Fchallenges\u002Fpatterns-phong-van","challenges\u002F118.patterns-phong-van",118,{"title":650,"path":651,"stem":652,"day":653},"SS-tree và similarity search gần đúng cho ảnh","\u002Fchallenges\u002Fss-tree-similarity","challenges\u002F119.ss-tree-similarity",119,{"title":655,"path":656,"stem":657,"day":658},"Planarity testing và crossing number tối thiểu","\u002Fchallenges\u002Fplanarity-crossing","challenges\u002F120.planarity-crossing",120,{"title":660,"path":661,"stem":662,"day":663},"SA vẽ đồ thị: force-directed và min edge crossing","\u002Fchallenges\u002Fsa-graph-drawing","challenges\u002F121.sa-graph-drawing",121,{"title":665,"path":666,"stem":667,"day":668},"Lai, đột biến và GA cho TSP, vertex cover","\u002Fchallenges\u002Fgenetic-nang-cao","challenges\u002F122.genetic-nang-cao",122,{"title":670,"path":671,"stem":672,"day":673},"Dynamic proxy, protection proxy và vườn thú proxy","\u002Fchallenges\u002Fproxy-dynamic","challenges\u002F123.proxy-dynamic",123,{"title":675,"path":676,"stem":677,"day":678},"Interpreter và Visitor cho ngôn ngữ và cấu trúc","\u002Fchallenges\u002Finterpreter-visitor","challenges\u002F124.interpreter-visitor",124,{"title":680,"path":681,"stem":682,"day":683},"Project: rạp hát Facade và Command macro","\u002Fchallenges\u002Fproject-hometheater","challenges\u002F125.project-hometheater",125,{"title":685,"path":686,"stem":687,"day":688},"App: autocomplete có Trie và cache LRU","\u002Fchallenges\u002Fapp-autocomplete","challenges\u002F126.app-autocomplete",126,{"title":690,"path":691,"stem":692,"day":693},"App: mini search engine với Trie, ranking và Bloom","\u002Fchallenges\u002Fapp-search-engine","challenges\u002F127.app-search-engine",127,{"title":695,"path":696,"stem":697,"day":698},"App: rate limiter bằng cache và hàng đợi","\u002Fchallenges\u002Fapp-rate-limiter","challenges\u002F128.app-rate-limiter",128,{"title":700,"path":701,"stem":702,"day":703},"App: top-K trên stream bằng heap","\u002Fchallenges\u002Fapp-topk-stream","challenges\u002F129.app-topk-stream",129,{"title":705,"path":706,"stem":707,"day":708},"App: pipeline phát hiện gian lận bằng đồ thị","\u002Fchallenges\u002Fapp-fraud-pipeline","challenges\u002F130.app-fraud-pipeline",130,{"title":710,"path":711,"stem":712,"day":713},"App: recommendation engine end-to-end","\u002Fchallenges\u002Fapp-recsys-pipeline","challenges\u002F131.app-recsys-pipeline",131,{"title":715,"path":716,"stem":717,"day":718},"App: pipeline clustering từ K-means tới OPTICS","\u002Fchallenges\u002Fapp-clustering-pipeline","challenges\u002F132.app-clustering-pipeline",132,{"title":720,"path":721,"stem":722,"day":723},"App: wordcount MapReduce và Spark job","\u002Fchallenges\u002Fapp-mapreduce-spark","challenges\u002F133.app-mapreduce-spark",133,{"title":725,"path":726,"stem":727,"day":728},"App: tuyến giao hàng so sánh BFS, Dijkstra, A*","\u002Fchallenges\u002Fapp-delivery-routes","challenges\u002F134.app-delivery-routes",134,{"title":730,"path":731,"stem":732,"day":733},"App: thiết kế mạng với Prim và Kruskal","\u002Fchallenges\u002Fapp-mst-network","challenges\u002F135.app-mst-network",135,{"title":735,"path":736,"stem":737,"day":738},"App: TSP so găng greedy, SA và GA","\u002Fchallenges\u002Fapp-tsp-showdown","challenges\u002F136.app-tsp-showdown",136,{"title":740,"path":741,"stem":742,"day":743},"App: nhúng và vẽ đồ thị force-directed","\u002Fchallenges\u002Fapp-graph-embedding","challenges\u002F137.app-graph-embedding",137,{"title":745,"path":746,"stem":747,"day":748},"App: tuning siêu tham số với gradient và eval","\u002Fchallenges\u002Fapp-tuning","challenges\u002F138.app-tuning",138,{"title":750,"path":751,"stem":752,"day":753},"App: sentiment từ tokenize tới Naive Bayes","\u002Fchallenges\u002Fapp-sentiment","challenges\u002F139.app-sentiment",139,{"title":755,"path":756,"stem":757,"day":758},"App: tìm ảnh với CNN và similarity search","\u002Fchallenges\u002Fapp-image-search","challenges\u002F140.app-image-search",140,{"title":760,"path":761,"stem":762,"day":763},"App: dự báo chuỗi với RNN và LSTM","\u002Fchallenges\u002Fapp-forecast","challenges\u002F141.app-forecast",141,{"title":765,"path":766,"stem":767,"day":768},"App: chat bảo mật với TLS handshake và PKI","\u002Fchallenges\u002Fapp-secure-chat","challenges\u002F142.app-secure-chat",142,{"title":770,"path":771,"stem":772,"day":773},"App: pipeline batch vs stream và CAP","\u002Fchallenges\u002Fapp-data-pipeline","challenges\u002F143.app-data-pipeline",143,{"title":775,"path":776,"stem":777,"day":778},"App: hệ thống cache LRU, LFU và locks","\u002Fchallenges\u002Fapp-cache-system","challenges\u002F144.app-cache-system",144,{"title":780,"path":781,"stem":782,"children":783,"day":785},"App: index DB với B-tree, hash và Bloom","\u002Fchallenges\u002Fapp-db-index","challenges\u002F145.app-db-index",[784],{"title":780,"path":781,"stem":782,"day":785},145,{"title":787,"path":788,"stem":789,"day":790},"App: spell checker với Trie và độ tương đồng","\u002Fchallenges\u002Fapp-spell-checker","challenges\u002F146.app-spell-checker",146,{"title":792,"path":793,"stem":794,"day":795},"App: AI game kẹo với State và Strategy","\u002Fchallenges\u002Fapp-game-ai","challenges\u002F147.app-game-ai",147,{"title":797,"path":798,"stem":799,"day":800},"App: text editor undo với stack, Command và Memento","\u002Fchallenges\u002Fapp-text-editor","challenges\u002F148.app-text-editor",148,{"title":802,"path":803,"stem":804,"day":805},"App: hệ thống thông báo với Observer và queue","\u002Fchallenges\u002Fapp-notification","challenges\u002F149.app-notification",149,{"title":807,"path":808,"stem":809,"day":810},"Ôn tập tổng hợp: từ sắp xếp tới tối ưu","\u002Fchallenges\u002Fon-tap-tong-hop","challenges\u002F150.on-tap-tong-hop",150,{"title":812,"path":813,"stem":814,"day":815},"Capstone: benchmark sort và graph traversal","\u002Fchallenges\u002Fcapstone-sort-graph","challenges\u002F151.capstone-sort-graph",151,{"title":817,"path":818,"stem":819,"day":820},"Capstone: autocomplete cache LRU và Trie nâng cao","\u002Fchallenges\u002Fcapstone-cache-trie","challenges\u002F152.capstone-cache-trie",152,{"title":822,"path":823,"stem":824,"day":825},"Capstone: clustering pipeline và báo cáo metric","\u002Fchallenges\u002Fcapstone-clustering","challenges\u002F153.capstone-clustering",153,{"title":827,"path":828,"stem":829,"day":830},"Capstone: recsys có đo cold start và sparsity","\u002Fchallenges\u002Fcapstone-recsys","challenges\u002F154.capstone-recsys",154,{"title":832,"path":833,"stem":834,"day":835},"Capstone: hệ thống lớn có mật mã và streaming","\u002Fchallenges\u002Fcapstone-crypto-scale","challenges\u002F155.capstone-crypto-scale",155,{"title":837,"path":838,"stem":839,"day":840},"Capstone: tối ưu TSP và vẽ đồ thị tổng hợp","\u002Fchallenges\u002Fcapstone-optimization","challenges\u002F156.capstone-optimization",156,{"title":842,"path":843,"stem":844,"day":845},"Capstone: SimUDuck refactor toàn diện","\u002Fchallenges\u002Fcapstone-patterns-duck","challenges\u002F157.capstone-patterns-duck",157,{"title":847,"path":848,"stem":849,"day":850},"Capstone: Pizza Store đa vùng và toppings","\u002Fchallenges\u002Fcapstone-patterns-pizza","challenges\u002F158.capstone-patterns-pizza",158,{"title":852,"path":853,"stem":854,"day":855},"Capstone: home theater Facade và macro","\u002Fchallenges\u002Fcapstone-patterns-home","challenges\u002F159.capstone-patterns-home",159,{"title":857,"path":858,"stem":859,"day":860},"Capstone: mạng xã hội mini với graph và feed","\u002Fchallenges\u002Fcapstone-social","challenges\u002F160.capstone-social",160,{"title":862,"path":863,"stem":864,"day":865},"Phỏng vấn 1: array, string và two pointers","\u002Fchallenges\u002Fphong-van-algo-1","challenges\u002F161.phong-van-algo-1",161,{"title":867,"path":868,"stem":869,"day":870},"Phỏng vấn 2: BST, heap và top-k","\u002Fchallenges\u002Fphong-van-algo-2","challenges\u002F162.phong-van-algo-2",162,{"title":872,"path":873,"stem":874,"day":875},"Phỏng vấn 3: BFS, DFS, Dijkstra trên ma trận","\u002Fchallenges\u002Fphong-van-graph","challenges\u002F163.phong-van-graph",163,{"title":877,"path":878,"stem":879,"day":880},"Phỏng vấn 4: DP kinh điển và greedy chứng minh","\u002Fchallenges\u002Fphong-van-dp","challenges\u002F164.phong-van-dp",164,{"title":882,"path":883,"stem":884,"day":885},"Phỏng vấn 5: cache, rate limiter và search","\u002Fchallenges\u002Fphong-van-system","challenges\u002F165.phong-van-system",165,{"title":887,"path":888,"stem":889,"day":890},"Phỏng vấn 6: kể chuyện patterns và SOLID","\u002Fchallenges\u002Fphong-van-patterns","challenges\u002F166.phong-van-patterns",166,{"title":892,"path":893,"stem":894,"day":895},"Dự án cuối 1: đặc tả và chia module","\u002Fchallenges\u002Fdu-an-cuoi-1","challenges\u002F167.du-an-cuoi-1",167,{"title":897,"path":898,"stem":899,"day":900},"Dự án cuối 2: benchmark và profiling","\u002Fchallenges\u002Fdu-an-cuoi-2","challenges\u002F168.du-an-cuoi-2",168,{"title":902,"path":903,"stem":904,"day":905},"Dự án cuối 3: dữ liệu lớn và evaluate","\u002Fchallenges\u002Fdu-an-cuoi-3","challenges\u002F169.du-an-cuoi-3",169,{"title":907,"path":908,"stem":909,"day":910},"Dự án cuối 4: áp dụng patterns và review chéo","\u002Fchallenges\u002Fdu-an-cuoi-4","challenges\u002F170.du-an-cuoi-4",170,{"title":912,"path":913,"stem":914,"day":915},"Tổng kết 180 ngày: bản đồ tri thức","\u002Fchallenges\u002Ftong-ket-180-ngay","challenges\u002F171.tong-ket-180-ngay",171,{"title":917,"path":918,"stem":919,"day":920},"Lộ trình sau 180 ngày: ML, systems, research","\u002Fchallenges\u002Flo-trinh-sau-180","challenges\u002F172.lo-trinh-sau-180",172,{"title":922,"path":923,"stem":924,"day":925},"Checklist năng lực: tự đánh giá 180 kỹ năng","\u002Fchallenges\u002Fchecklist-nang-luc","challenges\u002F173.checklist-nang-luc",173,{"title":927,"path":928,"stem":929,"day":930},"Bộ đề luyện thêm 50 bài tự ra đề","\u002Fchallenges\u002Fbo-de-luyen-them","challenges\u002F174.bo-de-luyen-them",174,{"title":932,"path":933,"stem":934,"day":935},"System design cơ bản: scale, ELB và sharding","\u002Fchallenges\u002Fsystem-design-co-ban","challenges\u002F175.system-design-co-ban",175,{"title":937,"path":938,"stem":939,"day":940},"Đọc whitepaper và viết blog kỹ thuật","\u002Fchallenges\u002Fdoc-paper-viet-blog","challenges\u002F176.doc-paper-viet-blog",176,{"title":942,"path":943,"stem":944,"day":945},"Ngày open source: đọc source và đóng góp","\u002Fchallenges\u002Fopen-source-day","challenges\u002F177.open-source-day",177,{"title":947,"path":948,"stem":949,"day":950},"Mock interview và peer review chéo","\u002Fchallenges\u002Fmock-interview","challenges\u002F178.mock-interview",178,{"title":952,"path":953,"stem":954,"day":955},"Hoàn thiện sản phẩm demo cuối khóa","\u002Fchallenges\u002Fsan-pham-demo","challenges\u002F179.san-pham-demo",179,{"title":957,"path":958,"stem":959,"day":960},"Demo day và tổng kết","\u002Fchallenges\u002Fle-tot-nghiep","challenges\u002F180.le-tot-nghiep",180,{"id":962,"title":963,"body":964,"category":1561,"day":1561,"description":1562,"difficulty":1561,"estimatedMinutes":108,"extension":1105,"lastUpdate":1563,"meta":1564,"navigation":1120,"outcomes":1561,"path":1565,"prerequisites":1561,"seo":1566,"stem":1567,"tags":1568,"__hash__":1572},"guides\u002Fguides\u002Fbat-dau.md","Cách bắt đầu",{"type":965,"value":966,"toc":1545},"minimark",[967,972,1014,1018,1022,1025,1037,1040,1050,1053,1090,1094,1101,1191,1194,1198,1203,1206,1271,1274,1278,1299,1302,1306,1309,1335,1338,1378,1384,1388,1395,1415,1418,1447,1451,1454,1457,1461,1499,1503,1529,1532,1535,1538,1541],[968,969,971],"h2",{"id":970},"các-bước-bắt-đầu","Các bước bắt đầu",[973,974,975,984,993,1003,1011],"ol",{},[976,977,978,979,983],"li",{},"Tạo một repo trên GitHub, ví dụ ",[980,981,982],"code",{},"180-days-challenge",". Nên để public (xem lý do bên dưới).",[976,985,986,987,992],{},"Dựng khung thư mục và mẫu note như phần ",[988,989,991],"a",{"href":990},"#c%E1%BA%A5u-tr%C3%BAc-%C4%91%E1%BB%81-xu%E1%BA%A5t","Cấu trúc đề xuất",".",[976,994,995,996,999,1000,992],{},"Đọc các bài ",[988,997,998],{"href":6},"nền tảng"," theo thứ tự. Mỗi bài viết một note ngắn vào ",[980,1001,1002],{},"fundamentals\u002F",[976,1004,1005,1006,1010],{},"Làm ",[988,1007,1009],{"href":1008},"\u002Fchallenges\u002F1.mang-va-danh-sach","ngày 1",". Xong thì ghi note, cập nhật bảng tiến độ, commit.",[976,1012,1013],{},"Lặp lại mỗi ngày. Nếu có thể, quay thêm video giải thích.",[968,1015,1017],{"id":1016},"vì-sao-cần-repo-riêng","Vì sao cần repo riêng",[1019,1020,1021],"p",{},"Web này tĩnh. Không tài khoản, không lưu tiến độ. Repo của bạn là nơi duy nhất ghi lại bạn đã làm gì.",[1019,1023,1024],{},"Một repo tốt trả lời được ba câu hỏi chỉ trong 30 giây:",[1026,1027,1028,1031,1034],"ul",{},[976,1029,1030],{},"Đang ở ngày thứ mấy?",[976,1032,1033],{},"Ngày X đã học gì, code ở đâu, hiểu tới đâu?",[976,1035,1036],{},"Có ngày nào bỏ dở không?",[968,1038,991],{"id":1039},"cấu-trúc-đề-xuất",[1041,1042,1048],"pre",{"className":1043,"code":1045,"language":1046,"meta":1047},[1044],"language-text","180-days-challenge\u002F\n├── README.md                  # Giới thiệu + bảng tiến độ\n├── fundamentals\u002F              # Note các bài nền tảng\n│   ├── big-o-notation.md\n│   └── de-quy.md\n├── days\u002F\n│   ├── 001-mang-va-danh-sach\u002F\n│   │   ├── README.md          # Note của ngày: hiểu gì, sai gì, trả lời câu hỏi ôn tập\n│   │   ├── src\u002F               # Code bài tập\n│   │   ├── tests\u002F             # Test tự viết\n│   │   └── diagrams\u002F          # Hình vẽ: .excalidraw, .svg, .png\n│   ├── 002-...\u002F\n│   └── ...\n└── templates\u002F\n    └── day.md                 # Mẫu note, copy mỗi ngày\n","text","",[980,1049,1045],{"__ignoreMap":1047},[1019,1051,1052],{},"Mấy quy ước nhỏ nhưng quan trọng:",[1026,1054,1055,1070,1080],{},[976,1056,1057,1061,1062,1065,1066,1069],{},[1058,1059,1060],"strong",{},"Tên thư mục = số ngày 3 chữ số + slug trên web."," Ngày 1 là ",[980,1063,1064],{},"001-mang-va-danh-sach",". Đánh 3 chữ số thì ",[980,1067,1068],{},"ls"," và GitHub tự sắp đúng thứ tự, ngày 10 không bị xếp trước ngày 2.",[976,1071,1072,1075,1076,1079],{},[1058,1073,1074],{},"Mỗi ngày một thư mục độc lập."," Có file build riêng (Makefile, ",[980,1077,1078],{},"package.json",", ...) nếu cần. Ngày 50 không được làm hỏng code ngày 5.",[976,1081,1082,1085,1086,1089],{},[1058,1083,1084],{},"Note nằm cạnh code."," ",[980,1087,1088],{},"README.md"," trong thư mục ngày sẽ hiện luôn khi mở thư mục đó trên GitHub.",[968,1091,1093],{"id":1092},"mẫu-note-mỗi-ngày","Mẫu note mỗi ngày",[1019,1095,1096,1097,1100],{},"Copy ",[980,1098,1099],{},"templates\u002Fday.md"," sang thư mục ngày mới rồi điền vào. Viết bằng lời của mình, không copy từ web.",[1041,1102,1106],{"className":1103,"code":1104,"language":1105,"meta":1047,"style":1047},"language-md shiki shiki-themes github-light github-light github-dark","# Ngày 001: Dynamic Array\n\n- Đề: https:\u002F\u002F180-days-challenge.vercel.app\u002Fchallenges\u002F1.mang-va-danh-sach\n- Thời gian: 75 phút\n- Video: (link YouTube nếu có)\n\n## Ý chính (tự diễn đạt lại)\n\n## Diagram\n\n## Chỗ mình sai \u002F bị kẹt và cách gỡ\n\n## Trả lời câu hỏi ôn tập\n\n## Còn chưa hiểu\n","md",[980,1107,1108,1116,1122,1132,1139,1146,1150,1155,1159,1164,1168,1173,1177,1182,1186],{"__ignoreMap":1047},[1109,1110,1112],"span",{"class":1111,"line":63},"line",[1109,1113,1115],{"class":1114},"syb_3","# Ngày 001: Dynamic Array\n",[1109,1117,1118],{"class":1111,"line":68},[1109,1119,1121],{"emptyLinePlaceholder":1120},true,"\n",[1109,1123,1124,1128],{"class":1111,"line":73},[1109,1125,1127],{"class":1126},"sP4rz","-",[1109,1129,1131],{"class":1130},"sxrX7"," Đề: https:\u002F\u002F180-days-challenge.vercel.app\u002Fchallenges\u002F1.mang-va-danh-sach\n",[1109,1133,1134,1136],{"class":1111,"line":78},[1109,1135,1127],{"class":1126},[1109,1137,1138],{"class":1130}," Thời gian: 75 phút\n",[1109,1140,1141,1143],{"class":1111,"line":83},[1109,1142,1127],{"class":1126},[1109,1144,1145],{"class":1130}," Video: (link YouTube nếu có)\n",[1109,1147,1148],{"class":1111,"line":88},[1109,1149,1121],{"emptyLinePlaceholder":1120},[1109,1151,1152],{"class":1111,"line":93},[1109,1153,1154],{"class":1114},"## Ý chính (tự diễn đạt lại)\n",[1109,1156,1157],{"class":1111,"line":98},[1109,1158,1121],{"emptyLinePlaceholder":1120},[1109,1160,1161],{"class":1111,"line":103},[1109,1162,1163],{"class":1114},"## Diagram\n",[1109,1165,1166],{"class":1111,"line":108},[1109,1167,1121],{"emptyLinePlaceholder":1120},[1109,1169,1170],{"class":1111,"line":113},[1109,1171,1172],{"class":1114},"## Chỗ mình sai \u002F bị kẹt và cách gỡ\n",[1109,1174,1175],{"class":1111,"line":118},[1109,1176,1121],{"emptyLinePlaceholder":1120},[1109,1178,1179],{"class":1111,"line":123},[1109,1180,1181],{"class":1114},"## Trả lời câu hỏi ôn tập\n",[1109,1183,1184],{"class":1111,"line":128},[1109,1185,1121],{"emptyLinePlaceholder":1120},[1109,1187,1188],{"class":1111,"line":133},[1109,1189,1190],{"class":1114},"## Còn chưa hiểu\n",[1019,1192,1193],{},"Mục \"Chỗ mình sai\" có giá trị nhất. Ba tháng sau đọc lại, bạn sẽ thấy mình đã tiến bộ tới đâu.",[968,1195,1197],{"id":1196},"theo-dõi-tiến-trình","Theo dõi tiến trình",[1199,1200,1202],"h3",{"id":1201},"bảng-tiến-độ-trong-readme","Bảng tiến độ trong README",[1019,1204,1205],{},"Đặt bảng này ở README gốc. Mỗi ngày xong thì thêm một dòng:",[1041,1207,1209],{"className":1103,"code":1208,"language":1105,"meta":1047,"style":1047},"| Ngày | Chủ đề                    | Trạng thái | Note                               | Video     |\n| ---- | ------------------------- | ---------- | ---------------------------------- | --------- |\n| 001  | Dynamic Array             | ✅         | [note](days\u002F001-mang-va-danh-sach) | [▶️](link) |\n| 002  | Linked List               | 🚧         | [note](days\u002F002-...)               |           |\n| 003  | Stack                     | ⬜         |                                    |           |\n",[980,1210,1211,1216,1221,1251,1266],{"__ignoreMap":1047},[1109,1212,1213],{"class":1111,"line":63},[1109,1214,1215],{"class":1130},"| Ngày | Chủ đề                    | Trạng thái | Note                               | Video     |\n",[1109,1217,1218],{"class":1111,"line":68},[1109,1219,1220],{"class":1130},"| ---- | ------------------------- | ---------- | ---------------------------------- | --------- |\n",[1109,1222,1223,1226,1230,1233,1237,1240,1243,1245,1248],{"class":1111,"line":73},[1109,1224,1225],{"class":1130},"| 001  | Dynamic Array             | ✅         | [",[1109,1227,1229],{"class":1228},"sulnz","note",[1109,1231,1232],{"class":1130},"](",[1109,1234,1236],{"class":1235},"sRE2K","days\u002F001-mang-va-danh-sach",[1109,1238,1239],{"class":1130},") | [",[1109,1241,1242],{"class":1228},"▶️",[1109,1244,1232],{"class":1130},[1109,1246,1247],{"class":1235},"link",[1109,1249,1250],{"class":1130},") |\n",[1109,1252,1253,1256,1258,1260,1263],{"class":1111,"line":78},[1109,1254,1255],{"class":1130},"| 002  | Linked List               | 🚧         | [",[1109,1257,1229],{"class":1228},[1109,1259,1232],{"class":1130},[1109,1261,1262],{"class":1235},"days\u002F002-...",[1109,1264,1265],{"class":1130},")               |           |\n",[1109,1267,1268],{"class":1111,"line":83},[1109,1269,1270],{"class":1130},"| 003  | Stack                     | ⬜         |                                    |           |\n",[1019,1272,1273],{},"✅ xong, 🚧 đang làm, ⬜ chưa làm. Nhìn cột trạng thái là biết ngay mình đang ở đâu.",[1199,1275,1277],{"id":1276},"commit-mỗi-ngày","Commit mỗi ngày",[1026,1279,1280,1283,1293],{},[976,1281,1282],{},"Ít nhất một commit mỗi ngày học. Ô xanh trên contribution graph của GitHub chính là chuỗi ngày học của bạn.",[976,1284,1285,1286,1289,1290,992],{},"Message ghi rõ ngày: ",[980,1287,1288],{},"day 001: dynamic array push\u002Finsert\u002Ferase",", ",[980,1291,1292],{},"day 001: note + diagram resize",[976,1294,1295,1296,992],{},"Muốn xem lại cả ngày: ",[980,1297,1298],{},"git log --oneline --grep \"day 001\"",[1019,1300,1301],{},"Commit nhỏ, commit nhiều. Lịch sử commit cho thấy bạn đã đi từ code sai tới code đúng thế nào. AI không làm giả được thứ đó.",[968,1303,1305],{"id":1304},"vẽ-diagram-trong-repo","Vẽ diagram trong repo",[1019,1307,1308],{},"Vẽ ra là cách nhanh nhất để biết mình hiểu thật hay chưa. Nên vẽ: con trỏ của linked list, cây sau mỗi lần xoay, bảng DP, class diagram của pattern.",[1026,1310,1311,1321],{},[976,1312,1313,1316,1317,1320],{},[1058,1314,1315],{},"Mermaid",": viết diagram bằng text ngay trong file ",[980,1318,1319],{},".md",", GitHub tự render. Hợp với flowchart, class diagram, sequence diagram.",[976,1322,1323,1326,1327,1330,1331,1334],{},[1058,1324,1325],{},"Excalidraw",": vẽ tay tự do. Lưu file ",[980,1328,1329],{},".excalidraw"," để sửa lại được, export thêm ",[980,1332,1333],{},".svg"," để nhúng vào note.",[1019,1336,1337],{},"Ví dụ Mermaid cho Observer pattern:",[1041,1339,1341],{"className":1103,"code":1340,"language":1105,"meta":1047,"style":1047},"```mermaid\nclassDiagram\n    Subject o-- Observer\n    Subject : +attach(o)\n    Subject : +notify()\n    Observer : +update()\n```\n",[980,1342,1343,1348,1353,1358,1363,1368,1373],{"__ignoreMap":1047},[1109,1344,1345],{"class":1111,"line":63},[1109,1346,1347],{"class":1130},"```mermaid\n",[1109,1349,1350],{"class":1111,"line":68},[1109,1351,1352],{"class":1130},"classDiagram\n",[1109,1354,1355],{"class":1111,"line":73},[1109,1356,1357],{"class":1130},"    Subject o-- Observer\n",[1109,1359,1360],{"class":1111,"line":78},[1109,1361,1362],{"class":1130},"    Subject : +attach(o)\n",[1109,1364,1365],{"class":1111,"line":83},[1109,1366,1367],{"class":1130},"    Subject : +notify()\n",[1109,1369,1370],{"class":1111,"line":88},[1109,1371,1372],{"class":1130},"    Observer : +update()\n",[1109,1374,1375],{"class":1111,"line":93},[1109,1376,1377],{"class":1130},"```\n",[1019,1379,1380,1381,992],{},"Nhúng hình Excalidraw vào note: ",[980,1382,1383],{},"![resize](diagrams\u002Fresize.svg)",[968,1385,1387],{"id":1386},"public-repo-để-mọi-người-cùng-học","Public repo để mọi người cùng học",[1019,1389,1390,1391,1394],{},"Nếu được, hãy để repo ",[1058,1392,1393],{},"public",". Lợi ích:",[1026,1396,1397,1403,1409],{},[976,1398,1399,1402],{},[1058,1400,1401],{},"Có người nhìn thì khó bỏ cuộc."," Repo public là một lời cam kết.",[976,1404,1405,1408],{},[1058,1406,1407],{},"Người đi sau học được từ note và cả chỗ sai của bạn."," Họ thấy rõ con đường, không chỉ thấy đáp án.",[976,1410,1411,1414],{},[1058,1412,1413],{},"Thành portfolio thật."," 180 ngày commit đều đặn thuyết phục nhà tuyển dụng hơn mọi dòng tự giới thiệu trong CV.",[1019,1416,1417],{},"Vài lưu ý khi public:",[1026,1419,1420,1426,1433,1444],{},[976,1421,1422,1423,1425],{},"Thêm topic ",[980,1424,982],{}," cho repo trên GitHub để người khác dễ tìm.",[976,1427,1428,1429,1432],{},"Thêm ",[980,1430,1431],{},"LICENSE"," (ví dụ MIT) để người khác biết họ được dùng lại code của bạn tới đâu.",[976,1434,1435,1436,1439,1440,1443],{},"Không commit key, token, mật khẩu hay dữ liệu cá nhân. Dùng ",[980,1437,1438],{},".gitignore"," và file ",[980,1441,1442],{},".env"," không commit.",[976,1445,1446],{},"Đọc repo người khác sau khi đã tự làm xong, không phải trước khi làm. Luật \"tự code bằng tay\" vẫn áp dụng.",[968,1448,1450],{"id":1449},"quay-video-youtube","Quay video YouTube",[1019,1452,1453],{},"Không bắt buộc, nhưng rất đáng làm. Giải thích được cho người khác nghĩa là mình hiểu thật. Đây là phép thử mạnh nhất để kiểm tra chuyện đó.",[1019,1455,1456],{},"Mỗi video giải thích lại bài từ đầu đến cuối, như đang dạy cho một người chưa biết gì. Xong phần giải thích mới kể lại những chỗ mình sai. Dài 10-20 phút, chia làm hai phần:",[1199,1458,1460],{"id":1459},"phần-1-giải-thích-từ-đầu-đến-cuối","Phần 1: Giải thích từ đầu đến cuối",[973,1462,1463,1469,1475,1481,1487,1493],{},[976,1464,1465,1468],{},[1058,1466,1467],{},"Bài toán (1 phút)."," Đề yêu cầu gì, đầu vào, đầu ra, ràng buộc. Nêu một ví dụ cụ thể.",[976,1470,1471,1474],{},[1058,1472,1473],{},"Vì sao cần nó (1 phút)."," Cách ngây thơ nhất là gì, chậm hay tệ ở đâu.",[976,1476,1477,1480],{},[1058,1478,1479],{},"Ý tưởng (3-5 phút)."," Vẽ diagram, cho chạy tay trên ví dụ nhỏ từng bước. Đây là phần quan trọng nhất.",[976,1482,1483,1486],{},[1058,1484,1485],{},"Độ phức tạp (1-2 phút)."," Thời gian và bộ nhớ, giải thích vì sao ra con số đó chứ không chỉ đọc kết quả.",[976,1488,1489,1492],{},[1058,1490,1491],{},"Code (3-5 phút)."," Đi qua code của mình theo đúng thứ tự vừa giải thích. Không đọc từng dòng, chỉ nói những đoạn chứa ý tưởng.",[976,1494,1495,1498],{},[1058,1496,1497],{},"Chạy test (1 phút)."," Chạy test, chỉ ra các case biên: rỗng, một phần tử, rất lớn.",[1199,1500,1502],{"id":1501},"phần-2-những-lỗi-mình-đã-mắc","Phần 2: Những lỗi mình đã mắc",[973,1504,1505,1511,1517,1523],{},[976,1506,1507,1510],{},[1058,1508,1509],{},"Lỗi sai."," Mở lại commit hoặc đoạn code sai, cho người xem thấy nó chạy sai thế nào.",[976,1512,1513,1516],{},[1058,1514,1515],{},"Vì sao sai."," Mình đã hiểu nhầm điều gì. Đây mới là thứ người xem cần học, không phải bản thân con bug.",[976,1518,1519,1522],{},[1058,1520,1521],{},"Cách phát hiện."," Nhờ test nào, lần debug nào, hay nhờ vẽ lại diagram.",[976,1524,1525,1528],{},[1058,1526,1527],{},"Bài học."," Một câu ngắn để lần sau không lặp lại.",[1019,1530,1531],{},"Kết video bằng một câu còn chưa hiểu hoặc câu hỏi mở cho người xem.",[1019,1533,1534],{},"Phần 2 lấy thẳng từ mục \"Chỗ mình sai \u002F bị kẹt\" trong note. Viết note kỹ thì quay nhanh.",[1019,1536,1537],{},"Không cần quay đẹp. Màn hình + giọng nói là đủ. Dán link video vào note ngày đó và vào cột Video của bảng tiến độ. Có thể gom thành playlist \"180 Days Challenge\" để theo dõi.",[1019,1539,1540],{},"Note + diagram + video của cùng một ngày bổ trợ cho nhau: note để tra cứu nhanh, diagram để nhìn cấu trúc, video để nghe giải thích.",[1542,1543,1544],"style",{},"html pre.shiki code .syb_3, html code.shiki .syb_3{--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sulnz, html code.shiki .sulnz{--shiki-light:#032F62;--shiki-light-text-decoration:underline;--shiki-default:#032F62;--shiki-default-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline}html pre.shiki code .sRE2K, html code.shiki .sRE2K{--shiki-light:#24292E;--shiki-light-text-decoration:underline;--shiki-default:#24292E;--shiki-default-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline}",{"title":1047,"searchDepth":68,"depth":68,"links":1546},[1547,1548,1549,1550,1551,1555,1556,1557],{"id":970,"depth":68,"text":971},{"id":1016,"depth":68,"text":1017},{"id":1039,"depth":68,"text":991},{"id":1092,"depth":68,"text":1093},{"id":1196,"depth":68,"text":1197,"children":1552},[1553,1554],{"id":1201,"depth":73,"text":1202},{"id":1276,"depth":73,"text":1277},{"id":1304,"depth":68,"text":1305},{"id":1386,"depth":68,"text":1387},{"id":1449,"depth":68,"text":1450,"children":1558},[1559,1560],{"id":1459,"depth":73,"text":1460},{"id":1501,"depth":73,"text":1502},null,"Các bước chuẩn bị trước ngày 1: tạo repo, tổ chức theo ngày, ghi note, vẽ diagram, quay video giải thích và chia sẻ lỗi sai.","2026-09-19",{},"\u002Fguides\u002Fbat-dau",{"title":963,"description":1562},"guides\u002Fbat-dau",[1569,1570,1229,1571],"git","repo","tien-do","UkAT4PlO_-hB8CdBBV1JcgNJQEnk5Vm8hOhS7OtKGdE",1790133036537]