[{"data":1,"prerenderedAt":1340},["ShallowReactive",2],{"navigation_docs":3,"-phong-van-tai-lieu-cheatsheet":420,"-phong-van-tai-lieu-cheatsheet-surround":1335},[4,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Phỏng vấn .NET","i-lucide-briefcase","\u002Fphong-van","1.phong-van",[10,27,66,111,128],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":26},"Tổng quan","i-lucide-compass","\u002Fphong-van\u002Ftong-quan","1.phong-van\u002F1.tong-quan",[16,21],{"title":17,"path":18,"stem":19,"icon":20},"Thị trường HCM","\u002Fphong-van\u002Ftong-quan\u002Fthi-truong","1.phong-van\u002F1.tong-quan\u002F1.thi-truong","i-lucide-trending-up",{"title":22,"path":23,"stem":24,"icon":25},"Lộ trình 7 ngày","\u002Fphong-van\u002Ftong-quan\u002Flo-trinh","1.phong-van\u002F1.tong-quan\u002F2.lo-trinh","i-lucide-calendar-days",false,{"title":22,"icon":25,"path":28,"stem":29,"children":30,"page":26},"\u002Fphong-van\u002Flo-trinh","1.phong-van\u002F2.lo-trinh",[31,36,41,46,51,56,61],{"title":32,"path":33,"stem":34,"icon":35},"Ngày 1 — C# cơ bản","\u002Fphong-van\u002Flo-trinh\u002Fngay-1-csharp-co-ban","1.phong-van\u002F2.lo-trinh\u002F1.ngay-1-csharp-co-ban","i-lucide-1",{"title":37,"path":38,"stem":39,"icon":40},"Ngày 2 — OOP và SOLID","\u002Fphong-van\u002Flo-trinh\u002Fngay-2-oop-solid","1.phong-van\u002F2.lo-trinh\u002F2.ngay-2-oop-solid","i-lucide-2",{"title":42,"path":43,"stem":44,"icon":45},"Ngày 3 — C# nâng cao","\u002Fphong-van\u002Flo-trinh\u002Fngay-3-csharp-nang-cao","1.phong-van\u002F2.lo-trinh\u002F3.ngay-3-csharp-nang-cao","i-lucide-3",{"title":47,"path":48,"stem":49,"icon":50},"Ngày 4 — Database và SQL","\u002Fphong-van\u002Flo-trinh\u002Fngay-4-database-sql","1.phong-van\u002F2.lo-trinh\u002F4.ngay-4-database-sql","i-lucide-4",{"title":52,"path":53,"stem":54,"icon":55},"Ngày 5 — ASP.NET Core và EF Core","\u002Fphong-van\u002Flo-trinh\u002Fngay-5-aspnet-efcore","1.phong-van\u002F2.lo-trinh\u002F5.ngay-5-aspnet-efcore","i-lucide-5",{"title":57,"path":58,"stem":59,"icon":60},"Ngày 6 — DSA coding","\u002Fphong-van\u002Flo-trinh\u002Fngay-6-dsa","1.phong-van\u002F2.lo-trinh\u002F6.ngay-6-dsa","i-lucide-6",{"title":62,"path":63,"stem":64,"icon":65},"Ngày 7 — Mock và HR","\u002Fphong-van\u002Flo-trinh\u002Fngay-7-mock-interview","1.phong-van\u002F2.lo-trinh\u002F7.ngay-7-mock-interview","i-lucide-7",{"title":67,"icon":68,"path":69,"stem":70,"children":71,"page":26},"Ngân hàng câu hỏi","i-lucide-database","\u002Fphong-van\u002Fngan-hang-cau-hoi","1.phong-van\u002F3.ngan-hang-cau-hoi",[72,77,82,87,92,97,102,107],{"title":73,"path":74,"stem":75,"icon":76},"C# (60+ câu)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fcsharp","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F1.csharp","i-lucide-hash",{"title":78,"path":79,"stem":80,"icon":81},"OOP và SOLID (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Foop","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F2.oop","i-lucide-shapes",{"title":83,"path":84,"stem":85,"icon":86},"SQL (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fsql","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F3.sql","i-lucide-database-zap",{"title":88,"path":89,"stem":90,"icon":91},"ASP.NET và EF (50+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-ef","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F4.aspnet-ef","i-lucide-server",{"title":93,"path":94,"stem":95,"icon":96},"DSA và Coding (30+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdsa-coding","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F5.dsa-coding","i-lucide-binary",{"title":98,"path":99,"stem":100,"icon":101},"HR và Soft skill (25+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fhr-behavior","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F6.hr-behavior","i-lucide-users",{"title":103,"path":104,"stem":105,"icon":106},"Design Pattern (55+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdesign-pattern","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F7.design-pattern","i-lucide-puzzle",{"title":108,"path":109,"stem":110,"icon":91},"ASP.NET MVC và Web API","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-mvc-webapi","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F8.aspnet-mvc-webapi",{"title":112,"itle":113,"icon":114,"path":115,"stem":116,"children":117,"page":26},"Tai Lieu","Tài liệu và Cheat sheet","i-lucide-book-marked","\u002Fphong-van\u002Ftai-lieu","1.phong-van\u002F4.tai-lieu",[118,123],{"title":119,"path":120,"stem":121,"icon":122},"Cheat Sheet","\u002Fphong-van\u002Ftai-lieu\u002Fcheatsheet","1.phong-van\u002F4.tai-lieu\u002F1.cheatsheet","i-lucide-clipboard-list",{"title":124,"path":125,"stem":126,"icon":127},"Nguồn tham khảo","\u002Fphong-van\u002Ftai-lieu\u002Fnguon","1.phong-van\u002F4.tai-lieu\u002F2.nguon","i-lucide-link",{"title":129,"icon":130,"path":131,"stem":132,"children":133,"page":26},"Phỏng vấn English","i-lucide-globe","\u002Fphong-van\u002Fenglish-interview","1.phong-van\u002F5.english-interview",[134,138,143,148],{"title":135,"path":136,"stem":137,"icon":130},"Tổng quan English","\u002Fphong-van\u002Fenglish-interview\u002Ftong-quan","1.phong-van\u002F5.english-interview\u002F1.tong-quan",{"title":139,"path":140,"stem":141,"icon":142},"Vocabulary","\u002Fphong-van\u002Fenglish-interview\u002Fvocabulary","1.phong-van\u002F5.english-interview\u002F2.vocabulary","i-lucide-book-a",{"title":144,"path":145,"stem":146,"icon":147},"Technical Q và A (EN)","\u002Fphong-van\u002Fenglish-interview\u002Ftechnical-en","1.phong-van\u002F5.english-interview\u002F3.technical-en","i-lucide-code",{"title":149,"path":150,"stem":151,"icon":152},"Behavioral (EN)","\u002Fphong-van\u002Fenglish-interview\u002Fbehavioral-en","1.phong-van\u002F5.english-interview\u002F4.behavioral-en","i-lucide-message-square-text",{"title":154,"icon":155,"path":156,"stem":157,"children":158},"Tự học","i-lucide-graduation-cap","\u002Ftu-hoc","2.tu-hoc",[159,161,287,310,333,357,384],{"title":154,"path":156,"stem":160,"icon":155},"2.tu-hoc\u002Findex",{"title":162,"icon":68,"path":163,"stem":164,"children":165},"Database","\u002Ftu-hoc\u002Fdatabase","2.tu-hoc\u002F1.database\u002Findex",[166,167,197,222,243,248],{"title":162,"path":163,"stem":164,"icon":68},{"title":168,"icon":91,"path":169,"stem":170,"children":171,"page":26},"SQL Server","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server","2.tu-hoc\u002F1.database\u002F2.sql-server",[172,177,182,187,192],{"title":173,"path":174,"stem":175,"icon":176},"1. Giới thiệu và Cài đặt","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F1.gioi-thieu-cai-dat","i-lucide-play-circle",{"title":178,"path":179,"stem":180,"icon":181},"2. Cú pháp cơ bản","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F2.cu-phap-co-ban","i-lucide-code-2",{"title":183,"path":184,"stem":185,"icon":186},"3. Truy vấn nâng cao","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F3.truy-van-nang-cao","i-lucide-git-merge",{"title":188,"path":189,"stem":190,"icon":191},"4. Đặc thù và Performance","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F4.dac-thu-performance","i-lucide-gauge",{"title":193,"path":194,"stem":195,"icon":196},"5. Q và A phỏng vấn","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F5.cau-hoi-phong-van","i-lucide-message-circle-question",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":26},"PostgreSQL","i-simple-icons-postgresql","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql","2.tu-hoc\u002F1.database\u002F3.postgresql",[203,206,209,212,215,218],{"title":173,"path":204,"stem":205,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":207,"stem":208,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F2.cu-phap-co-ban",{"title":183,"path":210,"stem":211,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F3.truy-van-nang-cao",{"title":188,"path":213,"stem":214,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F4.dac-thu-performance",{"title":193,"path":216,"stem":217,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F5.cau-hoi-phong-van",{"title":219,"path":220,"stem":221,"icon":96},"6. Tích hợp C# và Postgres","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftich-hop-csharp","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F6.tich-hop-csharp",{"title":223,"icon":224,"path":225,"stem":226,"children":227,"page":26},"MySQL","i-simple-icons-mysql","\u002Ftu-hoc\u002Fdatabase\u002Fmysql","2.tu-hoc\u002F1.database\u002F4.mysql",[228,231,234,237,240],{"title":173,"path":229,"stem":230,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F4.mysql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":232,"stem":233,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F4.mysql\u002F2.cu-phap-co-ban",{"title":183,"path":235,"stem":236,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F4.mysql\u002F3.truy-van-nang-cao",{"title":188,"path":238,"stem":239,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F4.mysql\u002F4.dac-thu-performance",{"title":193,"path":241,"stem":242,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F4.mysql\u002F5.cau-hoi-phong-van",{"title":244,"path":245,"stem":246,"icon":247},"So sánh 3 RDBMS","\u002Ftu-hoc\u002Fdatabase\u002Fso-sanh","2.tu-hoc\u002F1.database\u002F5.so-sanh","i-lucide-columns-3",{"title":249,"path":250,"stem":251,"children":252,"icon":254},"Supabase (BaaS)","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002Findex",[253,255,259,264,269,274,278,283],{"title":249,"path":250,"stem":251,"icon":254},"i-simple-icons-supabase",{"title":256,"path":257,"stem":258,"icon":68},"1. Database","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fdatabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002F1.database",{"title":260,"path":261,"stem":262,"icon":263},"2. Authentication","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fauthentication","2.tu-hoc\u002F1.database\u002F6.supabase\u002F2.authentication","i-lucide-key",{"title":265,"path":266,"stem":267,"icon":268},"3. Storage & Realtime","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fstorage-realtime","2.tu-hoc\u002F1.database\u002F6.supabase\u002F3.storage-realtime","i-lucide-zap",{"title":270,"path":271,"stem":272,"icon":273},"4. Edge Functions & AI","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Ffunctions-ai","2.tu-hoc\u002F1.database\u002F6.supabase\u002F4.functions-ai","i-lucide-brain",{"title":275,"path":276,"stem":277,"icon":181},"5. API & SDKs","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fapi-sdk","2.tu-hoc\u002F1.database\u002F6.supabase\u002F5.api-sdk",{"title":279,"path":280,"stem":281,"icon":282},"6. Platform & Deploy","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fplatform-deploy","2.tu-hoc\u002F1.database\u002F6.supabase\u002F6.platform-deploy","i-lucide-cloud",{"title":284,"path":285,"stem":286,"icon":196},"7. Interview & Q&A","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Finterview","2.tu-hoc\u002F1.database\u002F6.supabase\u002F7.interview",{"title":288,"icon":289,"path":290,"stem":291,"children":292},"TypeScript","i-simple-icons-typescript","\u002Ftu-hoc\u002Ftypescript","2.tu-hoc\u002F2.typescript\u002Findex",[293,294,297,301,306],{"title":288,"path":290,"stem":291,"icon":289},{"title":173,"path":295,"stem":296,"icon":176},"\u002Ftu-hoc\u002Ftypescript\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F2.typescript\u002F1.gioi-thieu-cai-dat",{"title":298,"path":299,"stem":300,"icon":81},"2. Type System","\u002Ftu-hoc\u002Ftypescript\u002Ftype-system","2.tu-hoc\u002F2.typescript\u002F2.type-system",{"title":302,"path":303,"stem":304,"icon":305},"3. Advanced types","\u002Ftu-hoc\u002Ftypescript\u002Fadvanced-types","2.tu-hoc\u002F2.typescript\u002F3.advanced-types","i-lucide-braces",{"title":307,"path":308,"stem":309,"icon":196},"4. Q và A phỏng vấn","\u002Ftu-hoc\u002Ftypescript\u002Fcau-hoi-phong-van","2.tu-hoc\u002F2.typescript\u002F4.cau-hoi-phong-van",{"title":311,"icon":81,"path":312,"stem":313,"children":314},"OOP","\u002Ftu-hoc\u002Foop","2.tu-hoc\u002F3.oop\u002Findex",[315,316,321,326,330],{"title":311,"path":312,"stem":313,"icon":81},{"title":317,"path":318,"stem":319,"icon":320},"1. Bốn tính chất","\u002Ftu-hoc\u002Foop\u002F4-tinh-chat","2.tu-hoc\u002F3.oop\u002F1.4-tinh-chat","i-lucide-circle-dot",{"title":322,"path":323,"stem":324,"icon":325},"2. SOLID","\u002Ftu-hoc\u002Foop\u002Fsolid","2.tu-hoc\u002F3.oop\u002F2.solid","i-lucide-shield",{"title":327,"path":328,"stem":329,"icon":106},"3. Design Pattern","\u002Ftu-hoc\u002Foop\u002Fdesign-pattern","2.tu-hoc\u002F3.oop\u002F3.design-pattern",{"title":307,"path":331,"stem":332,"icon":196},"\u002Ftu-hoc\u002Foop\u002Fcau-hoi-phong-van","2.tu-hoc\u002F3.oop\u002F4.cau-hoi-phong-van",{"title":334,"icon":305,"path":335,"stem":336,"children":337},"Generic","\u002Ftu-hoc\u002Fgeneric","2.tu-hoc\u002F4.generic\u002Findex",[338,339,344,349,354],{"title":334,"path":335,"stem":336,"icon":305},{"title":340,"path":341,"stem":342,"icon":343},"1. Khái niệm và cú pháp","\u002Ftu-hoc\u002Fgeneric\u002Fkhai-niem","2.tu-hoc\u002F4.generic\u002F1.khai-niem","i-lucide-book",{"title":345,"path":346,"stem":347,"icon":348},"2. Constraint và Variance","\u002Ftu-hoc\u002Fgeneric\u002Fconstraint-variance","2.tu-hoc\u002F4.generic\u002F2.constraint-variance","i-lucide-filter",{"title":350,"path":351,"stem":352,"icon":353},"3. C# vs TS","\u002Ftu-hoc\u002Fgeneric\u002Fso-sanh","2.tu-hoc\u002F4.generic\u002F3.so-sanh","i-lucide-git-compare",{"title":307,"path":355,"stem":356,"icon":196},"\u002Ftu-hoc\u002Fgeneric\u002Fcau-hoi-phong-van","2.tu-hoc\u002F4.generic\u002F4.cau-hoi-phong-van",{"title":358,"icon":359,"path":360,"stem":361,"children":362},"Nuxt 4","i-simple-icons-nuxt","\u002Ftu-hoc\u002Fnuxt-4","2.tu-hoc\u002F5.nuxt-4\u002Findex",[363,364,367,372,376,379],{"title":358,"path":360,"stem":361,"icon":359},{"title":173,"path":365,"stem":366,"icon":176},"\u002Ftu-hoc\u002Fnuxt-4\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F5.nuxt-4\u002F1.gioi-thieu-cai-dat",{"title":368,"path":369,"stem":370,"icon":371},"2. Routing và Rendering","\u002Ftu-hoc\u002Fnuxt-4\u002Frouting-rendering","2.tu-hoc\u002F5.nuxt-4\u002F2.routing-rendering","i-lucide-route",{"title":373,"path":374,"stem":375,"icon":91},"3. Data và Server","\u002Ftu-hoc\u002Fnuxt-4\u002Fdata-server","2.tu-hoc\u002F5.nuxt-4\u002F3.data-server",{"title":307,"path":377,"stem":378,"icon":196},"\u002Ftu-hoc\u002Fnuxt-4\u002Fcau-hoi-phong-van","2.tu-hoc\u002F5.nuxt-4\u002F4.cau-hoi-phong-van",{"title":380,"path":381,"stem":382,"icon":383},"5. Practical Todo App","\u002Ftu-hoc\u002Fnuxt-4\u002Fpractical-todo-app","2.tu-hoc\u002F5.nuxt-4\u002F5.practical-todo-app","i-lucide-check-square",{"title":385,"path":386,"stem":387,"children":388,"icon":390},"Tailwind CSS","\u002Ftu-hoc\u002Ftailwindcss","2.tu-hoc\u002F6.tailwindcss\u002Findex",[389,391,396,401,406,411,416],{"title":385,"path":386,"stem":387,"icon":390},"i-simple-icons-tailwindcss",{"title":392,"path":393,"stem":394,"icon":395},"1. Layout & Spacing","\u002Ftu-hoc\u002Ftailwindcss\u002Flayout-spacing","2.tu-hoc\u002F6.tailwindcss\u002F1.layout-spacing","i-lucide-layout",{"title":397,"path":398,"stem":399,"icon":400},"2. Typography & Colors","\u002Ftu-hoc\u002Ftailwindcss\u002Ftypography-colors","2.tu-hoc\u002F6.tailwindcss\u002F2.typography-colors","i-lucide-type",{"title":402,"path":403,"stem":404,"icon":405},"3. Interactive & Effects","\u002Ftu-hoc\u002Ftailwindcss\u002Finteractive-effects","2.tu-hoc\u002F6.tailwindcss\u002F3.interactive-effects","i-lucide-sparkles",{"title":407,"path":408,"stem":409,"icon":410},"4. Responsive & Dark Mode","\u002Ftu-hoc\u002Ftailwindcss\u002Fresponsive-darkmode","2.tu-hoc\u002F6.tailwindcss\u002F4.responsive-darkmode","i-lucide-monitor-smartphone",{"title":412,"path":413,"stem":414,"icon":415},"5. Customization & Theme","\u002Ftu-hoc\u002Ftailwindcss\u002Fcustomization","2.tu-hoc\u002F6.tailwindcss\u002F5.customization","i-lucide-settings-2",{"title":417,"path":418,"stem":419,"icon":181},"6. Practical Projects","\u002Ftu-hoc\u002Ftailwindcss\u002Fpractical-projects","2.tu-hoc\u002F6.tailwindcss\u002F6.practical-projects",{"id":421,"title":422,"body":423,"description":1328,"extension":1329,"links":1330,"meta":1331,"navigation":1332,"path":120,"seo":1333,"stem":121,"__hash__":1334},"docs\u002F1.phong-van\u002F4.tai-lieu\u002F1.cheatsheet.md","Cheat Sheet — ôn nhanh trước phỏng vấn",{"type":424,"value":425,"toc":1309},"minimark",[426,436,441,633,637,647,651,658,664,698,703,759,763,769,773,779,783,900,903,907,913,917,980,1074,1078,1084,1088,1094,1099,1110,1116,1149,1153,1159,1163,1169,1175,1179,1185,1189,1195,1199,1205,1209,1252,1256,1263,1291,1294,1297,1305],[427,428,431,435],"callout",{"color":429,"icon":430},"warning","i-lucide-clock",[432,433,434],"strong",{},"Đọc lướt 30 phút sáng trước phỏng vấn."," Không học cái mới — chỉ refresh.",[437,438,440],"h2",{"id":439},"a-c-keywords-cần-thuộc","A. C# keywords cần thuộc",[442,443,444,457],"table",{},[445,446,447],"thead",{},[448,449,450,454],"tr",{},[451,452,453],"th",{},"Keyword",[451,455,456],{},"1 dòng",[458,459,460,472,482,492,502,512,522,532,542,552,563,573,583,593,603,613,623],"tbody",{},[448,461,462,469],{},[463,464,465],"td",{},[466,467,468],"code",{},"var",[463,470,471],{},"Suy luận kiểu compile-time",[448,473,474,479],{},[463,475,476],{},[466,477,478],{},"dynamic",[463,480,481],{},"Bỏ qua type check runtime",[448,483,484,489],{},[463,485,486],{},[466,487,488],{},"const",[463,490,491],{},"Compile-time, primitive, inline",[448,493,494,499],{},[463,495,496],{},[466,497,498],{},"readonly",[463,500,501],{},"Set trong ctor, mỗi instance",[448,503,504,509],{},[463,505,506],{},[466,507,508],{},"static readonly",[463,510,511],{},"Set 1 lần, share toàn app",[448,513,514,519],{},[463,515,516],{},[466,517,518],{},"sealed",[463,520,521],{},"Không cho kế thừa",[448,523,524,529],{},[463,525,526],{},[466,527,528],{},"abstract",[463,530,531],{},"Không tạo instance được",[448,533,534,539],{},[463,535,536],{},[466,537,538],{},"virtual",[463,540,541],{},"Cho override",[448,543,544,549],{},[463,545,546],{},[466,547,548],{},"override",[463,550,551],{},"Redefine virtual của cha",[448,553,554,560],{},[463,555,556,559],{},[466,557,558],{},"new"," (method)",[463,561,562],{},"Ẩn method cha (no polymorphism)",[448,564,565,570],{},[463,566,567],{},[466,568,569],{},"out",[463,571,572],{},"Phải gán bên trong, không cần init",[448,574,575,580],{},[463,576,577],{},[466,578,579],{},"ref",[463,581,582],{},"Truyền theo tham chiếu 2 chiều",[448,584,585,590],{},[463,586,587],{},[466,588,589],{},"in",[463,591,592],{},"Read-only reference (struct lớn)",[448,594,595,600],{},[463,596,597],{},[466,598,599],{},"params",[463,601,602],{},"Số tham số biến thiên",[448,604,605,610],{},[463,606,607],{},[466,608,609],{},"using",[463,611,612],{},"Auto Dispose, hoặc import namespace",[448,614,615,620],{},[463,616,617],{},[466,618,619],{},"yield return",[463,621,622],{},"Sinh iterator lazy",[448,624,625,630],{},[463,626,627],{},[466,628,629],{},"lock",[463,631,632],{},"Critical section đơn luồng",[437,634,636],{"id":635},"b-value-vs-reference","B. Value vs Reference",[638,639,644],"pre",{"className":640,"code":642,"language":643},[641],"language-text","Value type:     int, double, bool, char, struct, enum, DateTime\n                → Stack, copy giá trị, default = 0\n\nReference type: class, string, array, delegate, interface\n                → Heap, copy địa chỉ, default = null\n\nstring: REFERENCE nhưng IMMUTABLE — so sánh == bằng nội dung\n","text",[466,645,642],{"__ignoreMap":646},"",[437,648,650],{"id":649},"c-oop-solid","C. OOP & SOLID",[652,653,654,657],"p",{},[432,655,656],{},"4 tính chất",": Encapsulation, Abstraction, Inheritance, Polymorphism.",[652,659,660,663],{},[432,661,662],{},"SOLID",":",[665,666,667,674,680,686,692],"ul",{},[668,669,670,673],"li",{},[432,671,672],{},"S"," — Single Responsibility — 1 class 1 lý do đổi",[668,675,676,679],{},[432,677,678],{},"O"," — Open\u002FClosed — mở mở rộng, đóng sửa",[668,681,682,685],{},[432,683,684],{},"L"," — Liskov Substitution — con thay được cha",[668,687,688,691],{},[432,689,690],{},"I"," — Interface Segregation — interface nhỏ, chuyên biệt",[668,693,694,697],{},[432,695,696],{},"D"," — Dependency Inversion — depend abstraction",[652,699,700,663],{},[432,701,702],{},"Interface vs Abstract",[442,704,705,717],{},[445,706,707],{},[448,708,709,711,714],{},[451,710],{},[451,712,713],{},"Interface",[451,715,716],{},"Abstract",[458,718,719,730,739,748],{},[448,720,721,724,727],{},[463,722,723],{},"Multiple",[463,725,726],{},"✅",[463,728,729],{},"❌",[448,731,732,735,737],{},[463,733,734],{},"Field",[463,736,729],{},[463,738,726],{},[448,740,741,744,746],{},[463,742,743],{},"Ctor",[463,745,729],{},[463,747,726],{},[448,749,750,753,756],{},[463,751,752],{},"Mục đích",[463,754,755],{},"Capability",[463,757,758],{},"Bản chất",[437,760,762],{"id":761},"d-async-task","D. Async \u002F Task",[638,764,767],{"className":765,"code":766,"language":643},[641],"async\u002Fawait KHÔNG tạo thread mới.\nawait giải phóng thread hiện tại, schedule continuation.\n\nI\u002FO bound  → async\u002Fawait trực tiếp\nCPU bound  → Task.Run(...) offload thread pool\n\nTránh: .Result, .Wait()  → deadlock trong WPF\u002FASP.NET classic\nTránh: async void        → trừ event handler\n",[466,768,766],{"__ignoreMap":646},[437,770,772],{"id":771},"e-linq-ienumerable-vs-iqueryable","E. LINQ — IEnumerable vs IQueryable",[638,774,777],{"className":775,"code":776,"language":643},[641],"IEnumerable\u003CT>: LINQ to Objects, query trên memory\nIQueryable\u003CT> : LINQ to SQL\u002FEF, dịch sang SQL chạy ở DB\n\nTrong EF Core: dùng IQueryable đến cuối cùng rồi mới .ToList()\n",[466,778,776],{"__ignoreMap":646},[437,780,782],{"id":781},"f-collection-độ-phức-tạp","F. Collection độ phức tạp",[442,784,785,803],{},[445,786,787],{},[448,788,789,791,794,797,800],{},[451,790],{},[451,792,793],{},"Access",[451,795,796],{},"Search",[451,798,799],{},"Insert",[451,801,802],{},"Delete",[458,804,805,823,840,855,870,885],{},[448,806,807,812,815,818,821],{},[463,808,809],{},[466,810,811],{},"List\u003CT>",[463,813,814],{},"O(1)",[463,816,817],{},"O(n)",[463,819,820],{},"O(1)*",[463,822,817],{},[448,824,825,830,833,836,838],{},[463,826,827],{},[466,828,829],{},"Dictionary",[463,831,832],{},"—",[463,834,835],{},"O(1) avg",[463,837,835],{},[463,839,835],{},[448,841,842,847,849,851,853],{},[463,843,844],{},[466,845,846],{},"HashSet",[463,848,832],{},[463,850,835],{},[463,852,835],{},[463,854,835],{},[448,856,857,862,864,866,868],{},[463,858,859],{},[466,860,861],{},"Queue",[463,863,832],{},[463,865,832],{},[463,867,814],{},[463,869,814],{},[448,871,872,877,879,881,883],{},[463,873,874],{},[466,875,876],{},"Stack",[463,878,832],{},[463,880,832],{},[463,882,814],{},[463,884,814],{},[448,886,887,892,894,896,898],{},[463,888,889],{},[466,890,891],{},"LinkedList",[463,893,817],{},[463,895,817],{},[463,897,814],{},[463,899,814],{},[652,901,902],{},"*Add cuối O(1) amortized.",[437,904,906],{"id":905},"g-di-lifetimes","G. DI lifetimes",[638,908,911],{"className":909,"code":910,"language":643},[641],"Singleton → 1 instance toàn app    | Logger, Cache, Config\nScoped    → 1 instance\u002Frequest      | DbContext, Repository, Service\nTransient → mỗi lần inject          | Stateless helper nhẹ\n\n⚠️ Không inject Scoped vào Singleton → captive dependency.\n",[466,912,910],{"__ignoreMap":646},[437,914,916],{"id":915},"h-http-method-status","H. HTTP method & status",[442,918,919,932],{},[445,920,921],{},[448,922,923,926,929],{},[451,924,925],{},"Method",[451,927,928],{},"Idempotent",[451,930,931],{},"Safe",[458,933,934,943,952,961,971],{},[448,935,936,939,941],{},[463,937,938],{},"GET",[463,940,726],{},[463,942,726],{},[448,944,945,948,950],{},[463,946,947],{},"POST",[463,949,729],{},[463,951,729],{},[448,953,954,957,959],{},[463,955,956],{},"PUT",[463,958,726],{},[463,960,729],{},[448,962,963,966,969],{},[463,964,965],{},"PATCH",[463,967,968],{},"usually ✅",[463,970,729],{},[448,972,973,976,978],{},[463,974,975],{},"DELETE",[463,977,726],{},[463,979,729],{},[442,981,982,992],{},[445,983,984],{},[448,985,986,989],{},[451,987,988],{},"Code",[451,990,991],{},"Khi nào",[458,993,994,1002,1010,1018,1026,1034,1042,1050,1058,1066],{},[448,995,996,999],{},[463,997,998],{},"200",[463,1000,1001],{},"OK có body",[448,1003,1004,1007],{},[463,1005,1006],{},"201",[463,1008,1009],{},"Created (POST) + Location header",[448,1011,1012,1015],{},[463,1013,1014],{},"204",[463,1016,1017],{},"No Content (DELETE, PUT)",[448,1019,1020,1023],{},[463,1021,1022],{},"400",[463,1024,1025],{},"Bad Request — data sai",[448,1027,1028,1031],{},[463,1029,1030],{},"401",[463,1032,1033],{},"Chưa auth",[448,1035,1036,1039],{},[463,1037,1038],{},"403",[463,1040,1041],{},"Đã auth, không quyền",[448,1043,1044,1047],{},[463,1045,1046],{},"404",[463,1048,1049],{},"Không tìm thấy",[448,1051,1052,1055],{},[463,1053,1054],{},"409",[463,1056,1057],{},"Conflict (duplicate)",[448,1059,1060,1063],{},[463,1061,1062],{},"422",[463,1064,1065],{},"Validation business rule",[448,1067,1068,1071],{},[463,1069,1070],{},"500",[463,1072,1073],{},"Server error",[437,1075,1077],{"id":1076},"i-sql-join","I. SQL — JOIN",[638,1079,1082],{"className":1080,"code":1081,"language":643},[641],"INNER JOIN  → giao 2 bảng (chỉ rows match)\nLEFT JOIN   → tất cả rows trái + matched phải (NULL nếu không match)\nRIGHT JOIN  → ngược lại LEFT\nFULL OUTER  → tất cả hai bên\nCROSS JOIN  → tích Descartes\nSELF JOIN   → join với chính mình\n\n⚠️ LEFT JOIN + WHERE trên bảng phải → biến thành INNER!\n   Đặt điều kiện vào ON.\n",[466,1083,1081],{"__ignoreMap":646},[437,1085,1087],{"id":1086},"j-index","J. INDEX",[638,1089,1092],{"className":1090,"code":1091,"language":643},[641],"Clustered     : sắp xếp vật lý dữ liệu, MỖI bảng 1, PK default\nNon-clustered : B-tree riêng trỏ về row, có nhiều\nComposite     : INDEX(A,B,C) — left-most prefix rule\nCovering      : INCLUDE thêm cột, không cần seek về bảng\n",[466,1093,1091],{"__ignoreMap":646},[652,1095,1096],{},[432,1097,1098],{},"Không nên index:",[665,1100,1101,1104,1107],{},[668,1102,1103],{},"Cột thay đổi nhiều",[668,1105,1106],{},"Cột selectivity thấp (Status, Gender)",[668,1108,1109],{},"Bảng nhỏ",[652,1111,1112,1115],{},[432,1113,1114],{},"Non-sargable"," (không dùng được index):",[638,1117,1121],{"className":1118,"code":1119,"language":1120,"meta":646,"style":646},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","WHERE YEAR(date) = 2026          ❌\nWHERE UPPER(email) = '...'       ❌\nWHERE date >= '2026-01-01' AND   ✅\n      date \u003C  '2027-01-01'\n","sql",[466,1122,1123,1131,1137,1143],{"__ignoreMap":646},[1124,1125,1128],"span",{"class":1126,"line":1127},"line",1,[1124,1129,1130],{},"WHERE YEAR(date) = 2026          ❌\n",[1124,1132,1134],{"class":1126,"line":1133},2,[1124,1135,1136],{},"WHERE UPPER(email) = '...'       ❌\n",[1124,1138,1140],{"class":1126,"line":1139},3,[1124,1141,1142],{},"WHERE date >= '2026-01-01' AND   ✅\n",[1124,1144,1146],{"class":1126,"line":1145},4,[1124,1147,1148],{},"      date \u003C  '2027-01-01'\n",[437,1150,1152],{"id":1151},"k-acid-isolation-level","K. ACID + Isolation Level",[638,1154,1157],{"className":1155,"code":1156,"language":643},[641],"A — Atomicity   : all or nothing\nC — Consistency : DB always valid\nI — Isolation   : transactions independent\nD — Durability  : commit persist forever\n\nLevel                  | Dirty | Non-rep | Phantom\nRead Uncommitted       | ✅    | ✅       | ✅\nRead Committed (def)   | ❌    | ✅       | ✅\nRepeatable Read        | ❌    | ❌       | ✅\nSerializable           | ❌    | ❌       | ❌\n",[466,1158,1156],{"__ignoreMap":646},[437,1160,1162],{"id":1161},"l-ef-core-loading","L. EF Core loading",[638,1164,1167],{"className":1165,"code":1166,"language":643},[641],"Lazy    : load khi truy cập (cần proxy + virtual). Risk: N+1\nEager   : .Include(...) → 1 query JOIN\nExplicit: .Entry().Collection().Load()\nProjection (BEST): .Select(u => new UserDto {...}) — chỉ cột cần\n",[466,1168,1166],{"__ignoreMap":646},[638,1170,1173],{"className":1171,"code":1172,"language":643},[641],"AsNoTracking() → read-only, nhanh hơn 20-30%\nSaveChanges() → 1 transaction cho mọi change\n",[466,1174,1172],{"__ignoreMap":646},[437,1176,1178],{"id":1177},"m-big-o-cheat","M. Big O cheat",[638,1180,1183],{"className":1181,"code":1182,"language":643},[641],"O(1)         constant      Dictionary lookup\nO(log n)     log           Binary search\nO(n)         linear        Duyệt mảng\nO(n log n)   linear-log    MergeSort, QuickSort avg\nO(n²)        quadratic     Nested loop, BubbleSort\nO(2ⁿ)        exponential   Fib naive, subset\nO(n!)        factorial     Permutations\n",[466,1184,1182],{"__ignoreMap":646},[437,1186,1188],{"id":1187},"n-jwt-cấu-trúc","N. JWT cấu trúc",[638,1190,1193],{"className":1191,"code":1192,"language":643},[641],"header.payload.signature   (3 phần, base64url)\n\nheader   : { alg, typ }\npayload  : claims (sub, exp, iat, role, …)\nsignature: HMAC\u002FRSA(header + payload + secret)\n\nAuthentication = bạn là ai      → UseAuthentication\nAuthorization  = bạn được làm gì → UseAuthorization\n",[466,1194,1192],{"__ignoreMap":646},[437,1196,1198],{"id":1197},"o-pipeline-aspnet-core-thứ-tự","O. Pipeline ASP.NET Core (thứ tự!)",[638,1200,1203],{"className":1201,"code":1202,"language":643},[641],"1. Exception handling\n2. HTTPS redirect\n3. Static files\n4. Routing\n5. CORS\n6. Authentication  ← phải TRƯỚC\n7. Authorization\n8. Endpoints (MapControllers)\n",[466,1204,1202],{"__ignoreMap":646},[437,1206,1208],{"id":1207},"p-10-câu-thường-được-hỏi-ôn-cuối","P. 10 câu thường được hỏi (ôn cuối)",[1210,1211,1212,1215,1218,1221,1227,1230,1233,1236,1246,1249],"ol",{},[668,1213,1214],{},"Value type vs Reference type — ví dụ?",[668,1216,1217],{},"Interface vs Abstract class — khi nào dùng?",[668,1219,1220],{},"SOLID — viết tắt + giải thích D.",[668,1222,1223,1226],{},[466,1224,1225],{},"async\u002Fawait"," có tạo thread mới?",[668,1228,1229],{},"Singleton\u002FScoped\u002FTransient — DbContext gì?",[668,1231,1232],{},"INNER vs LEFT JOIN — khi nào dùng?",[668,1234,1235],{},"INDEX là gì? Khi nào không nên?",[668,1237,1238,1241,1242,1245],{},[466,1239,1240],{},"IEnumerable"," vs ",[466,1243,1244],{},"IQueryable","?",[668,1247,1248],{},"JWT 3 phần là gì?",[668,1250,1251],{},"Big O của Two Sum với HashMap?",[437,1253,1255],{"id":1254},"q-5-từ-khoá-khi-bí","Q. 5 từ khoá khi bí",[652,1257,1258,1259,1262],{},"Khi không nhớ rõ — ",[432,1260,1261],{},"vẫn nói được"," bằng cách dùng:",[665,1264,1265,1271,1276,1281,1286],{},[668,1266,1267],{},[1268,1269,1270],"em",{},"\"Theo em nhớ thì...\"",[668,1272,1273],{},[1268,1274,1275],{},"\"Em xin 30s suy nghĩ...\"",[668,1277,1278],{},[1268,1279,1280],{},"\"Em chưa được học sâu chỗ này, nhưng em đoán...\"",[668,1282,1283],{},[1268,1284,1285],{},"\"Em nghĩ có 2 cách, em đi cách này trước...\"",[668,1287,1288],{},[1268,1289,1290],{},"\"Anh\u002Fchị có thể cho em ví dụ cụ thể hơn không?\"",[652,1292,1293],{},"Trung thực + chủ động > Im lặng \u002F đoán bừa.",[1295,1296],"hr",{},[427,1298,1301,1304],{"color":1299,"icon":1300},"success","i-lucide-rocket",[432,1302,1303],{},"Chúc may mắn!"," Sau phỏng vấn nhớ gửi email cảm ơn trong 24h.",[1306,1307,1308],"style",{},"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);}",{"title":646,"searchDepth":1133,"depth":1133,"links":1310},[1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327],{"id":439,"depth":1133,"text":440},{"id":635,"depth":1133,"text":636},{"id":649,"depth":1133,"text":650},{"id":761,"depth":1133,"text":762},{"id":771,"depth":1133,"text":772},{"id":781,"depth":1133,"text":782},{"id":905,"depth":1133,"text":906},{"id":915,"depth":1133,"text":916},{"id":1076,"depth":1133,"text":1077},{"id":1086,"depth":1133,"text":1087},{"id":1151,"depth":1133,"text":1152},{"id":1161,"depth":1133,"text":1162},{"id":1177,"depth":1133,"text":1178},{"id":1187,"depth":1133,"text":1188},{"id":1197,"depth":1133,"text":1198},{"id":1207,"depth":1133,"text":1208},{"id":1254,"depth":1133,"text":1255},"Tóm tắt 1 trang các khái niệm quan trọng nhất cho fresher .NET — đọc 30 phút sáng trước khi đi phỏng vấn.","md",null,{},{"title":119,"icon":122},{"title":422,"description":1328},"kkItEVaRI0FpgjWjM_VfqSMUM0JbMW046p171_uhOgk",[1336,1338],{"title":108,"path":109,"stem":110,"description":1337,"icon":91,"children":-1},"80+ câu hỏi ASP.NET MVC 5 tới ASP.NET Core 8\u002F9\u002F10, Minimal API, versioning, rate limiting, output caching. Phỏng vấn fresher tới senior.",{"title":124,"path":125,"stem":126,"description":1339,"icon":127,"children":-1},"Danh sách nguồn được dùng để biên soạn tài liệu này, kèm link đọc thêm cho fresher .NET.",1783490356122]