Hướng dẫn bài test javascript
Hãy cùng ITguru thử sức với 50 câu hỏi phỏng vấn JavaScript được chọn lọc từ nhiều nguồn khác nhau. Các câu hỏi này ở nhiều cấp độ khác nhau, từ cơ bản đến nâng cao. Nếu bạn muốn kiểm tra lại kiến thức của mình hoặc chuẩn bị cho một cuộc phỏng vấn JavaScript, thì bài viết này dành cho bạn. Show Ngoài những câu hỏi trong bài, bạn cũng có thể tìm được một số nguồn câu hỏi ở cuối bài, giúp bạn chuẩn bị tốt hơn cho chặng đường sắp tới Nội dung
Q1: Giải thích phép so sánh trong JavaScriptTrong Java, chúng ta có hai cách so sánh:
so sánh nghiêm ngặt (strict comparison) và chuyển đổi kiểu (type-converting). Strict comparison sử dụng ba dấu bằng ===
Strict comparison không cho phép ép kiểu dữ liệu (coercion). Vì một số bạn có thể không quen với khái niệm coercion, chúng ta sẽ xem một ví dụ nhanh dưới đây:
2/ So sánh trừu tượng (Abstract comparison ) So sánh trừ tượng sử dụng Dấu bằng kép (Double Equals) ==
Các toán tử trong JavaScript Q2: Callback function là gì và hãy cho một ví dụ đơn giản:Callback function (hàm gọi lại) là một hàm được thực thi sau khi một hàm khác đã thực thi xong. Hay nói cách khác, một callback function là một hàm được truyền cho một hàm khác như một đối số và được thực thi sau khi một số tác vụ đã hoàn thành. Ví dụ:
Nếu bạn chạy đoạn code, bạn sẽ nhận được hai thông báo. Thông báo đầu tiên “Starting my JS blog.” và thông báo thứ hai: “Finished my blog!” Xem thêm: JavaScript Callback Q3: Primitive là gì? Các primitive value trong JavaScript là gì?Trong JavaScript có 2 loại kiểu dữ liệu: Kiểu nguyên thủy (primitive) và object. Một kiểu nguyên thủy không phải là một object và không có các phương thức (method) của riêng nó. Tất cả các kiểu nguyên thủy là bất biến. Có sáu loại nguyên thủy trong JS:
Q4: Toán tử && để làm gì?Hãy xem đoạn code này Về cơ bản, toán tử && (đọc là logic AND) tìm giá trị (falsy) đầu tiên trong biểu thức và trả về giá trị đó. Nếu nó không tìm thấy giá trị falsy, nó sẽ trả về giá trị cuối cùng trong biểu thức. Vì vậy, dòng đầu tiên:
trả về false vì false là giá trị falsy đầu tiên trong biểu thức đó. Dòng thứ hai:
không chứa giá trị falsy và do đó trả về giá trị cuối cùng trong biểu thức, là 1. Q5: Toán tử || dùng để làm gì trong JavaScriptToán tử || là toán tử OR. Nó tìm thấy biểu thức truthy đầu tiên và trả về biểu thức đó. Nó cũng sử dụng tính năng short-circuiting để tránh những lần kiểm tra không cần thiết. Do đó, sẽ rất hữu ích khi đặt giá trị mặc định của một biến trong trường hợp những giá trị trước lựa chọn mặc định là falsy
Và ta có ‘foo’ là giá trị của foo. Q6: Hãy cho biết Falsy value và Truthy value là gì? Có những falsy value nào trong JavaScript?Đây là câu hỏi phỏng vấn JavaScript thường được hỏi và nhiều bạn khá bối rối. Falsy values là những giá trị trong Javascript mà khi ép kiểu về Boolean, thì sẽ cho ra giá trị false. Tương tự, truthy values là những giá trị mà khi ép kiểu về Boolean, thì sẽ cho ra giá trị true. Có 7 falsy values trong JavaScript:
Tất cả những kiểu dữ liệu trên sẽ thành false trong các điều kiện. Lưu ý nhiều tài liệu sẽ chỉ liệt kê 6 falsy value
và quên Q7: Sự khác biệt giữa undefined và null là gì?Đây là một khái niệm có thể gây nhầm lẫn cho những người mới làm quen với JavaScript và là câu hỏi phỏng vấn có thể làm bạn mất điểm. 1/Null Null có nghĩa là một giá trị rỗng hoặc không tồn tại. Null được gán cho một biến như là một đại diện không có giá trị:
2/ Undefined
Không giống như
Xem thêm: JavaScript — What’s the difference between Null & Undefined? Câu hỏi có độ khó trung bìnhQ8: IIFEs (Immediately Invoked Function Expressions) là gì?Một Immediately Invoked Function Express được thực thi ngay sau khi nó được tạo.
Q9: Hãy phân biệt giữa anonymous và named functions?Anonymous function (Hàm ẩn danh) chỉ đơn giản là một hàm không có tên và tất cả đều được tạo trong thời gian chạy ứng dụng.
Q10: Làm thế nào bạn có thể kiểm tra xem một số có phải là số nguyên hay không?Một cách nhanh chóng sẽ là dùng hàm Một cách khác là lấy số đo chia số cho 1 và xem có phần dư hay không.
Q11: Hãy phân tích các phần khác nhau của URL này https://www.movies.com:443/movies/index.html?type=horror&imdb=8#BlockbustersCác phần của URL(Uniform Resource Locator) như sau:
Q12: Ba giai đoạn của sự lan truyền sự kiện (event propagation) là gì?Propagation (lan truyền) xảy ra với việc capturing trước sau đó bubbling . , và đến . Image: TutorialrepublicSau đó, sau khi phần tử mục tiêu được truy cập (trong đoạn code này có thể là event.target), giai đoạn bubbling xảy ra. Bubbling ngược lại với giai đoạn capturing. Trong giai đoạn bubbling, các sự kiện nổi bong bóng (buble up) lên cây DOM. Vì vậy, nó sẽ đi từ phần tử đích đến tận Window. Trong ví dụ của chúng ta ở trên, sau khi siêu liên kết được nhấp vào, nó sẽ đi từ phần tử có liên kết, đến phần tử ,
đến phần tử , đến phần tử và cuối cùng là Cửa sổ.
Các câu hỏi phỏng vấn JavaScript có độ khó caoQ13: Kết quả của đoạn code sau là gì?
Điều này đáng ngạc nhiên trả về false! Tại sao? Bởi vì dấu chấm động không được biểu diễn đúng cách bên trong. Vì vậy, ví dụ 0,1 + 0,2 sẽ bằng 0,30000000000000004. Bạn có thấy kỳ lạ không? Lý do cho điều này là máy tính không thể biểu diễn float một cách chính xác. Một cách giải quyết sẽ là làm tròn số khi thực hiện các phép toán số học với số thập phân. Hãy cẩn thận, câu hỏi phỏng vấn JavaScript này tưởng đơn giản nhưng có thể khiến bạn mất điểm đấy Q14: Từ khóa “this” hoạt động như thế nào? Hãy cho một ví dụ?Từ khóa Từ khóa
Công việc của hàm Q15: Đoạn mã này trả về True hay False?
Câu trả lời là True! Bạn sẽ nghĩ Q16. Tại sao Math.max() nhỏ hơn Math.min()?Việc Nếu không có đối số nào được đưa ra,
Nếu Q17: Tại sao 018 Trừ 017 lại bằng 3?Việc 018 – 017 trả về 3 là kết quả của việc chuyển đổi kiểu. Trong trường hợp này, chúng ta đang nói về số bát phân (octal numbers). Trong JavaScript, tiền tố 0 sẽ chuyển đổi bất kỳ số nào thành bát phân. Tuy nhiên, 8 không được sử dụng trong hệ bát phân và bất kỳ số nào có chứa 8 sẽ được chuyển đổi âm thầm thành số thập phân thông thường. Do đó, 018 – 017 trên thực tế tương đương với biểu thức thập phân 18 – 15, vì 017 là bát phân nhưng 018 là thập phân. Lưu ý: để hiểu hơn về số bát phân để trả lời tốt câu hỏi phỏng vấn JavaScript này bạn nên tìm hiểu thêm về octal numbers tại đây Các câu hỏi phỏng vấn JavaScript tổng hợpQ18: Function Expression khác thế nào với Function Declaration?Một Function declaration (khai báo hàm) sử dụng từ khóa
Trong cách sử dụng, sự khác biệt chính là Function declaration được thực hiện theo cơ chế hoisting, trong khi Function Expression thì không. Điều đó có nghĩa là các khai báo hàm được trình thông dịch JavaScript chuyển lên đầu phạm vi của chúng và do đó bạn có thể xác định một khai báo hàm và gọi nó ở bất kỳ đâu trong code của bạn. Ngược lại, bạn chỉ có thể gọi một biểu thức hàm theo trình tự tuyến tính: bạn phải xác định nó trước khi gọi nó. Q19: Sự khác nhau giữa |