Bộ 4452+ câu hỏi phỏng vấn IT đầy đủ chủ đề — Frontend, Backend, Database, System Design, DevOps đến AI Engineering. Đáp án song ngữ Việt–Anh, từ Junior đến Senior, ôn luyện miễn phí.
DOCTYPE (Document Type Declaration) khai báo phiên bản HTML đang dùng và phải nằm ở dòng đầu tiên. HTML5 chỉ cần một dòng: Nó quyết định browser render ở standards mode hay quirks mode. Thiếu DOCTYPE → quirks mode, và khác biệt lớn nhất là…
Cascade là thuật toán chọn ra giá trị thắng khi nhiều khai báo cùng nhắm vào một thuộc tính của một element. Thứ tự xét, từ trên xuống — dừng ngay khi phân định được: 1. Origin + !important: !important của user agent !important của…
var, let và const đều khai báo biến trong JavaScript, nhưng khác nhau về scope, hành vi khai báo lại, và khả năng gán lại giá trị. - var có function scope — biến "lan" ra toàn bộ function chứa nó, bất kể nó được…
TypeScript là superset của JavaScript có kiểu tĩnh, biên dịch ra JavaScript thuần. Cùng đoạn đó trong JavaScript chạy bình thường và trả về '0102' — một bug âm thầm chỉ lộ ra khi người dùng gặp. Bốn lợi ích, xếp theo mức tác động…
JSX là cú pháp cho phép viết thẻ giống HTML ngay trong file JavaScript. Nó không phải là một ngôn ngữ riêng — trình duyệt hoàn toàn không hiểu JSX, mà Babel hoặc SWC dịch nó thành lời gọi hàm trước khi code chạy. Hình…
Sự khác biệt chính bao gồm: - Kiến trúc (Architecture): App Router (Next.js 13+) dùng thư mục app/ và hỗ trợ React Server Components mặc định. Pages Router dùng thư mục pages/ nơi mọi component được xử lý như Client Component. - Data Fetching: App…
RTK là cách duy nhất được khuyến nghị để viết Redux hiện đại — createSlice gộp actions+reducer, Immer cho phép write mutable syntax, RTK Query thay thế thunk cho data fetching. Redux Toolkit (RTK) là bộ công cụ chính thức và là cách duy nhất…
Node.js là runtime cho phép chạy JavaScript ngoài trình duyệt, ở phía server hoặc công cụ dòng lệnh, được xây dựng trên V8 engine của Chrome và thư viện libuv để xử lý I/O bất đồng bộ. Khác với JavaScript trên trình duyệt vốn bị…
Mẹo hiểu SELECT: SQL không chạy theo thứ tự bạn viết, mà theo thứ tự thực thi: FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT Hệ quả quan trọng: alias đặt trong SELECT (vd…
Webpack là module bundler gộp toàn bộ asset (JS, CSS, ảnh) thành các file bundle đã tối ưu. Khái niệm cốt lõi: - Entry — điểm bắt đầu của dependency graph, thường là src/index.js. - Output — nơi ghi bundle ra, ví dụ dist/bundle.js. -…
CI (Continuous Integration): tự động build và test mỗi lần push hoặc mở PR, bắt lỗi lúc còn dễ sửa. CD (Continuous Delivery): CI xanh thì tự deploy lên staging, còn lên production vẫn cần người duyệt. Continuous Deployment: deploy thẳng lên production, không cần…
Docker đóng gói app cùng dependency vào container để chạy giống nhau ở mọi môi trường. Container khác VM: VM ảo hoá phần cứng nên nặng, có OS riêng và boot tính bằng phút; container dùng chung kernel của host nên nhẹ, khởi động tính…
Jest là JavaScript testing framework từ Meta, phổ biến nhất trong hệ sinh thái JS — zero-config với Create React App và Next.js, hỗ trợ TypeScript qua ts-jest hoặc babel-jest. Tính năng chính: - Test isolation — mỗi test file chạy trong environment riêng (jsdom…
Core Web Vitals là bộ ba chỉ số của Google đo trải nghiệm người dùng thực, là yếu tố SEO ranking từ 2021. - LCP (Largest Contentful Paint) — tốc độ loading: thời điểm render phần tử lớn nhất trong viewport. Good <2.5s, poor 4s.…
XSS là lỗ hổng cho phép attacker inject script độc hại chạy trong browser của nạn nhân — đánh cắp session, redirect user, sửa nội dung trang. - Stored XSS — script được lưu vào DB (comment, profile), tấn công mọi user xem trang. -…
Git Flow có 5 loại branch: main (production), develop (tích hợp code), feature/ (tính năng mới), release/ (chuẩn bị release), hotfix/ (sửa lỗi khẩn cấp). Trunk-based Development là hướng ngược lại: commit thẳng vào main với feature flags, phù hợp team CI/CD mature. Thực tế…
Go là ngôn ngữ lập trình do Google tạo ra (2009), biên dịch (compiled), statically typed, cú pháp đơn giản. Ưu điểm: tốc độ gần C/C++, concurrency mạnh (goroutines), binary đơn (không cần runtime), stdlib phong phú, phù hợp cho microservices, cloud tools, APIs.
SEO (Search Engine Optimization) là tối ưu hoá website để đạt thứ hạng cao trên Google, Bing, và các công cụ tìm kiếm. 68% online experiences bắt đầu từ search engine — frontend developer ảnh hưởng trực tiếp đến khả năng index và rank của…
Người phỏng vấn muốn nghe: một bản tóm tắt 60-90 giây liên quan đến công việc, không phải tiểu sử đời tư. Công thức "hiện tại → quá khứ → tương lai": bạn đang làm gì, đã làm được gì nổi bật, và vì sao…
SRP quy định mỗi class/module chỉ nên có một lý do để thay đổi, tức là chỉ chịu trách nhiệm cho một chức năng duy nhất. Ví dụ trong TypeScript: Lợi ích: code dễ test, dễ maintain. Dấu hiệu vi phạm: class có nhiều method…
Kafka là distributed event streaming platform cho phép xử lý dữ liệu real-time với throughput cao, latency thấp và khả năng replay message — lý do chính khiến nó phổ biến trong hệ thống phân tán. Apache Kafka được LinkedIn phát triển và open-source năm…
Redis (Remote Dictionary Server) là in-memory data structure store, thường được dùng làm cache, message broker, và session store. Redis nhanh vì toàn bộ data được lưu trong RAM — tốc độ đọc/ghi RAM nhanh hơn disk hàng nghìn lần. Ngoài ra, Redis dùng I/O…
Mô hình OSI (Open Systems Interconnection) chia giao tiếp mạng thành 7 tầng từ dưới lên: Physical (truyền bit qua cáp/sóng), Data Link (đóng gói frame, MAC address, phát hiện lỗi), Network (định tuyến gói tin qua IP), Transport (kiểm soát luồng & lỗi, TCP/UDP),…
Process là đơn vị thực thi độc lập với không gian bộ nhớ riêng (virtual address space, heap, stack, file descriptors). Thread là đơn vị thực thi nhẹ hơn bên trong process: các thread cùng process chia sẻ heap/code/file descriptors nhưng có stack riêng. Tạo…
Cloud Computing là mô hình cung cấp tài nguyên công nghệ thông tin (máy chủ, lưu trữ, mạng, phần mềm) qua internet theo mô hình dùng bao nhiêu trả bấy nhiêu (pay-as-you-go), thay vì tự đầu tư hạ tầng vật lý. IaaS (Infrastructure as a…
Java là ngôn ngữ hướng đối tượng, strongly-typed, biên dịch ra bytecode và chạy trên JVM. Cùng một file .class có thể chạy trên nhiều hệ điều hành mà không cần biên dịch lại — đó là "Write Once, Run Anywhere" từ 1995, nay do…
Spring Boot là framework tạo app Java/Spring nhanh, ít cấu hình, dựng trên Spring Framework để bỏ phần lớn XML và boilerplate. Gồm 3 phần chính: 1. Auto-configuration — tự cấu hình theo dependency có sẵn (thêm Tomcat → tự set up web server). 2.…
PHP viết tắt của Hypertext Preprocessor, là ngôn ngữ lập trình phía server dùng để tạo trang web động. Khi người dùng truy cập một trang PHP, server sẽ thực thi mã PHP rồi trả về HTML cho trình duyệt. Khác với JavaScript chạy trên…
Laravel là framework PHP hiện đại với cú pháp gọn đẹp và bộ công cụ phong phú cho phép phát triển ứng dụng nhanh. Nó giải quyết các vấn đề phổ biến: routing (ánh xạ URL), templating (engine Blade), truy cập database (Eloquent ORM), xác…
Value type và reference type khác nhau ở cách biến lưu dữ liệu: biến value type chứa giá trị, biến reference type chứa reference trỏ tới object trên heap. Hãy hình dung value type như bản photo — mỗi người giữ bản sao riêng. Reference…
var cho phép Dart tự suy luận kiểu dữ liệu một lần lúc khai báo và không thể thay đổi kiểu sau đó. dynamic cho phép kiểu thay đổi trong runtime, bỏ qua kiểm tra kiểu tĩnh. final tạo biến không thể gán lại sau…
RabbitMQ là message broker mã nguồn mở, cho phép các ứng dụng giao tiếp bất đồng bộ thông qua một broker trung gian thay vì gọi trực tiếp lẫn nhau. Dùng khi cần decouple các service, xử lý tác vụ nền như gửi email, resize…
val khai báo biến chỉ đọc, không thể gán lại sau khi khởi tạo (tương tự final trong Java), còn var khai báo biến có thể thay đổi giá trị. Dùng val làm mặc định giúp code an toàn hơn và phù hợp với nguyên…
Python dùng hai cơ chế: (1) Reference counting — mỗi object đếm số tham chiếu, về 0 thì giải phóng ngay (2) Garbage Collector (module gc) — phát hiện và thu hồi circular references mà reference counting không xử lý được (3) Memory Pool (PyMalloc)…
Vue.js là progressive JavaScript framework để xây dựng UI. (1) So với React: Vue có template syntax rõ ràng hơn, two-way binding tích hợp sẵn, learning curve thấp hơn; React dùng JSX, unidirectional flow, hệ sinh thái lớn hơn (2) So với Angular: Vue nhẹ…
NestJS là framework Node.js TypeScript-first lấy cảm hứng từ Angular, tổ chức code theo Modules, Controllers và Providers (thường là Services) với Dependency Injection tích hợp sẵn. Nó không thay thế Express/Fastify mà chạy trên một trong hai adapter đó và thêm lớp abstraction để…
Angular là framework frontend full-featured dùng TypeScript để xây dựng SPA, enterprise app và hybrid-rendered web app. AngularJS là dòng 1.x cũ, khác kiến trúc hoàn toàn và không nên gọi lẫn với Angular hiện đại. So với React/Vue, Angular opinionated hơn: có DI, Router,…
LLM là mô hình ngôn ngữ dựa trên kiến trúc Transformer, được pre-train trên lượng lớn text corpus (hàng trăm tỷ đến hàng nghìn tỷ token). Cốt lõi của LLM là dự đoán token tiếp theo (next-token prediction) dựa trên chuỗi token đầu vào —…
ReactJS là thư viện JavaScript render ra DOM trong browser, output là HTML/CSS. React Native là framework dùng cùng model component + JSX nhưng render ra native UI components (UIView trên iOS, ViewGroup/Android.View trên Android), không có DOM, không có HTML tag. Khác biệt cụ…
FastAPI là framework Python để xây dựng HTTP API, dựa trên type hints, Starlette và Pydantic. Nó phù hợp khi cần API typed, tài liệu OpenAPI tự động, validation rõ ràng, hiệu năng tốt và developer experience dễ chịu. Nên dùng FastAPI cho REST API,…
PostgreSQL là relational database (cơ sở dữ liệu quan hệ) mã nguồn mở — dữ liệu nằm trong các bảng có cột rõ ràng và ràng buộc chặt chẽ. Điểm mạnh chính: SQL chuẩn, transaction ACID (làm là đúng và đủ, không nửa vời), nhiều…
MongoDB là document database: thay vì bẻ dữ liệu thành nhiều bảng, nó lưu cả một "cục" dữ liệu liên quan trong một document (giống một object JSON) nằm trong collection. Bên dưới, document được lưu dạng BSON. Nên chọn khi: - Dữ liệu vốn…
Flow tốt nhất là: 1. Nhắc lại đề bằng lời của mình để xác nhận hiểu đúng. 2. Hỏi constraints (kích thước input, mảng đã sort chưa, có duplicate không, xử lý null/empty). 3. Đưa ra brute force trước để có baseline. 4. Chỉ ra…
Hỏi đúng câu cho thấy bạn làm việc như một kỹ sư thực thụ, không vội lao vào code khi yêu cầu còn mơ hồ. Hãy luôn có sẵn bộ câu hỏi checklist: 1. Dữ liệu đầu vào (Input): Có thể rỗng (empty) hay null…
Dễ đọc thắng, vì interviewer phải hiểu code của bạn để chấm. Vài quy tắc đơn giản mà hiệu quả: đặt tên biến có nghĩa (left, right, freq thay vì i, j, m); tách helper function khi một khối làm việc rõ ràng; tránh one-liner…
Django là web framework Python kiểu "batteries-included" — ORM, admin, auth, form, template, migration đều có sẵn. Cài xong là gần như đủ đồ để dựng một app production, không phải đi gom 5–7 thư viện rời rồi tự ráp lại. Hợp với: app server-rendered…
Ruby (Matz, 1995) là ngôn ngữ thông dịch, dynamic typing, thuần hướng đối tượng, theo triết lý "developer happiness" — code đọc gần như tiếng Anh. Khác biệt so với ngôn ngữ khác: - Mọi thứ đều là object — kể cả 5 hay nil…