Tuyển tập các câu hỏi phỏng vấn cho vị trí lập trình Front-end
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
LICENSE Update LICENSE Dec 15, 2015
README.md Fix format Mar 6, 2017
SUMMARY.md Update SUMMARY.md Feb 28, 2016
_config.yml Set theme jekyll-theme-cayman Jan 5, 2017
book.json Update book.json Feb 28, 2016

README.md

Tuyển tập câu hỏi phỏng vấn Front-end

Mục đích của trang là tổng hợp lại danh sách các câu hỏi tham khảo phỏng vấn cho vị trí lập trình viên Front-end.

Với mong muốn giúp những ai đang sắp được phỏng vấn chuẩn bị tốt hơn, đồng thời giúp ôn lại các kiến thức về front-end một cách vững chắc nhất.

Mình tha thiết mong muốn mọi người cùng đóng góp nội dung, tại đây.

Table of Contents

  1. Hỏi chung
  2. Hỏi về HTML
  3. Hỏi về CSS
  4. Hỏi về Javascript
  5. Hỏi về Testing
  6. Hỏi về Performance
  7. Hỏi về Network
  8. Hỏi về Coding
  9. Hỏi chơi cho vui

Getting Involved

  1. Contributors
  2. How to Contribute
  3. License

Hỏi chung

  • Những điểm nào mà bạn thích, hoặc không thích về lập trình?
  • Khác nhau giữa UI và UX?
  • Nói về môi trường làm việc mà bạn mong muốn?
  • Ba cách để giảm dung lượng tải trang?
  • CORS?
  • Bla bla ...

Hỏi về HTML

  • Tác dụng của doctype?
  • Khác nhau giữa HTML và XHTML là gì?
  • Có vấn đề gì không nếu lưu trang MIME dạng application/xhtml+xml?
  • Điều gì mà bạn cần phải chú ý nếu xây dựng và phát triển các trang web đa ngôn ngữ?
  • Thuộc tính data- dùng để làm gì?
  • Nếu HTML5 là nguồn mở, thẻ HTML nào mà bạn sẽ phát triển thêm?
  • Khác nhau giữa cookie, sessionStoragelocalStorage.
  • Khác nhau giữa <script>, <script async><script defer>.
  • Tại sao nên đặt <link> trong thẻ <head></head> và đặt <script> sau thẻ </body>. Ngoại lệ khi nào?

Hỏi về CSS

  • CSS framework là gì?
  • Có mấy cách để sử dụng CSS trên trang web?
  • Lợi / hại của việc sử dụng External Style Sheets?
  • Giải thích Ruleset là gì?
  • Case-sensitivity - ngôn ngữ css có phân biệt hoa thường khi nào?
  • Khác nhau giữa Class selector và Id selector?
  • Pseudo-elements là gì?
  • Cách nào đổi khôi phục thuộc tính mặc định của một đối tượng?
  • Ex: thẻ <a class="color1 color2"> có màu đỏ, sau đó bị class color2 đè lên thành màu xanh. Cú pháp nào để khôi phục lại thành màu trước đó?
  • z-index dùng để làm gì?
  • Tại sao @import chỉ có thể sử dụng ở đầu file?

(Coming soon)

Hỏi về Javascript

  • Ý nghĩa của biến this.
  • Sử dụng AMDCommonJS có tốt hay không? Tại sao tốt hoặc không tốt?
  • Nếu viết theo kiểu IIFE, tại sao đoạn mã sau bị lỗi? function foo(){ }();
    • Sửa lại
  • Khác nhau giữa null, undefined hoặc chưa khai báo?
    • Cách kiểm tra từng trường hợp trên.
  • Khác nhau giữa host objectsnative objects là gì?
  • Javascript closure là gì?
  • ES6 Yeild là gì? giải thích
  • ES6 Function* là gì? giải thích
  • callback có phải là một phần của V8 hay không ?
  • Khác biệt của arrow function là gì ?
  • Phân biệt let,const,var khi nào thì dùng nó ?
  • Promise trong JS là gì ?
  • Có nên dùng nhiều callback lồng nhau (callback hell) ?

Hỏi về Testing

  • Có nên sử dụng các công cụ Lint Style hay không? Tại sao?
  • Có nên áp dụng unit test hay không ?
  • Bạn có biết về TDD không ? nêu thử 1 vài framework ?

Hỏi về Performance

  • Bạn hay xài công cụ nào để kiểm tra lỗi về hiệu suất tải trên trình duyệt?
  • Giải thích sự khác nhau giữa layout, painting và compositing.

Hỏi về Network

  • Tại sao lưu resource (js/css/...) trên nhiều domain sẽ tốt hơn?
  • Sự khác nhau giữa Long-Polling, Websockets và Server-Sent?
  • Giải thích ý nghĩa của mấy cái HTTP Header sau:
    • Diff. between Expires, Date, Age and If-Modified-...
    • Do Not Track
    • Cache-Control
    • Transfer-Encoding
    • ETag
    • X-Frame-Options
  • HTTP action là gì?
  • Phân biệt các method HTTP(khi nào thì dùng nó).

Hỏi về Coding

Hỏi: foo có giá trị là bao nhiêu?

var foo = 10 + '20';

Hỏi: Viết hàm add để thực hiện được câu lệnh sau:

add(2, 5); // 7
add(2)(5); // 7

Hỏi: Kết quả trả về của hàm lệnh sau là gì?

"i'm a developer".split("").reverse().join("");

Hỏi: Giá trị của window.foo là gì?

( window.foo || ( window.foo = "bar" ) );

Hỏi: Kết quả của 2 lệnh alert là gì?

var foo = "Hello";
(function() {
  var bar = " World";
  alert(foo + bar);
})();
alert(foo + bar);

Hỏi: Giá trị của foo.length trong trường hợp sau?

var foo = [];
foo.push(1);
foo.push(2);

Hỏi: Giá trị của foo.x trong trường hợp sau?

var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};

Hỏi: Các lệnh sau sẽ in ra console cái gì?

console.log('one');
setTimeout(function() {
  console.log('two');
}, 0);
console.log('three');

Hỏi: Các lệnh sau sẽ in ra console cái gì?

baz = function() {
 return "some thing cool";
}
foo = false;
console.log (foo && baz());
console.log (foo || baz());

Hỏi: Cho var string = ['1','3','4','10','2','5','9','7','8','6'] in ra kết quả sau

10 9 8 7
6 5 4 
3 2 
1

Hỏi chơi cho vui

  • Những dự án nào mà bạn cho là thú vị đã từng làm qua?
  • Bạn hay sử dụng các công cụ (tools) nào?
  • Bạn thích tính năng nào của Internet Explorer nhất?
  • Bạn cho biết cách để đo thời gian chạy của một đoạn code javascript, chính xác tới ms?
  • Cho 8 viên bi trong đó có 7 viên cùng khối lượng và 1 viên còn lại nặng hơn ?
  • Cho 1 cái cân -|- (kiểu vậy). Làm sao để tìm viên bi nặng hơn nhanh nhất ?
  • Cho 2 sợi dây. Đốt 2 sợi dây đó thì mất 1 tiếng. Hỏi trong 45 phút thì làm sao có thể đốt được 2 sợi dây đó.

Contributors

How to Contribute

Trang được xây dựng bởi cộng đồng. Để đóng góp vào danh sách câu hỏi, vui lòng:

  1. Fork repo tại Github: https://github.com/duyetdev/frontend-interview-questions-vietnamese
  2. Commit câu hỏi trực tiếp vào file README.md, nhánh master.
  3. Tạo Pull Request.