: Những câu hỏi phỏng vấn việc làm thường gặp & cách trả lời hay nhất bằng tiếng Anh và tiếng Việt

1. Callback hell là gì? (What is Callback Hell ?)
Mục đích: Câu hỏi để đánh giá ứng viên đã từng trải nghiệm một tình huống rất thường gặp khi lập trình NodeJs
Chiến lược trả lời: Mô tả callback hell bằng ví dụ đơn giản và chỉ ra trên ví dụ vấn đề về việc đọc hiểu code gây ra từ callback hell


Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"Callback hell là trạng thái nhiều callback lồng vào nhau nhiều cấp khiến cho việc đọc hiểu code trở nên cực kì khó khăn
Ví dụ:
doSomething(function() {
doSomeThingAfter(function() {
doSomethingAfterAfter(function() {
// And many more levels ...
});
});
});
"
Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Callback hell is a status that many callback will be nested altogether and It leads to understanding code really difficult.

For example: as above"
2. Làm sao để không gặp phải callback hell (How to avoid Callback Hell ?)
Mục đích: Câu hỏi để đánh giá ứng viên về cách sử dụng promise và async-await, hai kỹ thuật rất tiện dụng khi lập trình NodeJs, để giải quyết vấn đề callback hell
Chiến lược trả lời: Phân tích từ khó khăn gây ra bởi callback hell tức là khiến cho việc đọc code trở nên khó khăn thì đề ra hướng xử lý theo những kĩ thuật format code

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"Phương pháp chính là phân tách code thành nhiều function nhỏ, mỗi callback được viết thành một function riêng và gọi tới function xử lý tiếp theo
Ví dụ:
doSomeThing(doSomeThingCb);

function doSomeThingCb() {
doSomeThingAfter(doSomeThingAfterCb);
}

function doSomeThingAfterCb() {
doSomethingAfterAfter(doSomethingAfterAfterCb);
}

Ngoài ra, có 2 kĩ thuật để dễ dàng xử lý callback hell:

1. Sử dụng promises
doSomething()
.then(function() {
return doSomeThingAfter();
})
.then(function() {
return doSomethingAfterAfter();
});
.then(...)
.catch(function(e) {
// handle error
});

2. Sử dụng async-await
const result = await doSomething();
const resultAfter = await doSomeThingAfter();
const resultAfterAfter = await doSomethingAfterAfter();

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"The main method is to distinguish code to smaller functions, each of callbacks is written to another specific function.
For example: as above

In addition, there are 2 methods to handle callback hell easily:
1: using promises, 2 : using async await. All examples will be same as above
3. NodeJs đơn luồng hay đa luồng? (Is NodeJs running as single-thread or multi-threads ?)
Mục đích: Câu hỏi để đánh giá ứng viên có tìm hiểu về cách vận hành của NodeJs và cách thức NodeJs có thể xử lý nhiều tác vụ cùng lúc
Chiến lược trả lời: là cho dù trả lời NodeJs đơn luồng hay đa luồn thì phải đưa ra giải thích vì sao chọn lựa chọn đó


Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"NodeJs đơn luồng nghĩa là nói tới việc trong NodeJs chỉ có một tác vụ Javascript được xử lý tại một thời điểm
Bản thân NodeJs khi chạy sử dụng một luồng chính để thực thi Javascript, là nơi event loop chạy và một thread pool chứa n luồng để Node dùng cho các xử lý nội bộ"

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Nodejs as a single thread means that there is only 1 task which is excecuted in the same time.
Nodejs when running will use single main thread to execute javascript, which event loop is run and another thread pool contains n threads. Node will use theme for internal tasks"
4. Điều gì khiến NodeJs có thể chạy các tác vụ bất đồng bộ (How NodeJs is able to handle asyncronous requests ? What are they ?)
Mục đích: Câu hỏi để đánh giá ứng viên có tìm hiểu về cách vận hành của NodeJs và cách thức NodeJs có thể xử lý nhiều tác vụ cùng lúc, cụ thể là cơ chế Event Loop vốn là thành phần then chốt cho việc xử lý bất đồng bộ các tác vụ I/O của NodeJs
Chiến lược trả lời: Là nêu ra được Event loop đóng vai trò chính cho việc xử lý bất đồng bộ trong NodeJs, nêu ra được cách vận hành cơ bản của Event Loop là điểm cộng

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"NodeJs sử dụng một cơ chế có tên gọi là Event Loop để xử lý bất đồng bộ các tác vụ I/O
Event Loop cho phép NodeJs có thể xử lý đồng thời cùng lúc nhiều tác vụ mà không cần phải đợi tác vụ trước đó xử lý xong
Khi các tác vụ hoàn tất, Event Loop sẽ trả kết quả về dưới dạng các callback."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"NodeJs uses a mechanism named Event loop which to handle asyncronous in I/O tasks
Event Loop allows Nodejs in handling many processes in the same time without waiting last process done.
When task done, Event Loop will release result back in callback type."
5. NodeJs có khả năng xử lý bất đồng bộ, nhưng có trường hợp nào không thể xử lý bất đồng bộ không, hậu quả là gì? (Do we have any case that Nodejs cannot handle async requests ? and What are the consequences ?)
Mục đích: Đánh giá ứng viên có tìm hiểu về điểm hạn chế của NodeJs hay không qua đó đánh giá được khả năng tìm hiểu sâu về NodeJs
Chiến lược trả lời: là nêu ra được những khả năng có thể làm hạn chế tốc độ của NodeJs, có thể kể ra những tình huống trong quá trình làm việc với NodeJs mà bạn gặp vấn đề về tốc độ xử lý

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"Do NodeJs chạy đơn luồng nên các xử lý liên quan tới CPU sẽ làm ảnh hưởng tới tốc độ xử lý của NodeJs
Các xử lý đó bao gồm:
- Mã hóa dữ liệu
- Nén dữ liệu
- Xử lý json dung lượng lớn
- Vòng lặp lồng nhau
...
Hậu quả là Event Loop của NodeJs phải chờ một callback xử lý xong mới có thể tiếp nhận và xử lý các yêu cầu khác."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Because Nodejs run as single-thread so all of handling logic related to CPU will affect to handling speed of NodeJs.
Approachs:
- Encode data
- Compress data
- handling meta json
- nested loop
The consequence is that Event Loop of NodeJs need to wait a callback done to get the next task/process"

Các câu hỏi phỏng vấn tìm việc làm thường gặp khác

1. Giới thiệu sơ lược về bản thân bạn? (Could you briefly Introduce yourself?)
Hầu hết nhà tuyển dụng đều dùng câu hỏi này để bắt đầu câu chuyện với ứng viên. Mục đích câu hỏi này là để đánh giá phong thái và cách trình bày của ứng viên. Lúc này, tùy thuộc vào câu trả lời của ứng viên mà nhà tuyển dụng sẽ đánh giá đây có phải là một ứng viên phù hợp hay không và đưa ra các câu hỏi tiếp theo để đánh giá kỹ năng, tính cách và kinh nghiệm làm việc.

Tip: Để trả lời tốt câu hỏi này, bạn cần đưa ra khái quát những thông tin về cá nhân có liên quan, hữu ích cho vị trí mà mình ứng tuyển như: công việc hiện tại, trình độ học vấn, mục tiêu sự nghiệp,… Bạn nên cân nhắc giới thiệu bản thân theo trình tự thời gian quá khứ, hiện tại và tương lai cũng như gói gọn trong tối đa 2 phút. Chia sẻ ngắn về sở thích, tính cách cũng là một cách thu hút nhà tuyển dụng, tuy nhiên cũng không nên nói quá nhiều về những vấn đề này với nhà tuyển dụng.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"Trước khi giới thiệu về bản thân mình, em/tôi xin gửi lời cảm ơn chân thành tới anh/chị khi đã tạo cơ hội cho em/tôi để được trao đổi về vị trí ứng tuyển của quý công ty. Em chào anh/ chị, tên em là Mai, họ tên đầy đủ của em là Trịnh Thị Tuyết Mai. Em là sinh viên mới ra trường của Trường đại học X, trong thời gian làm sinh viên em đã từng tham gia một số công việc bán thời gian nhưng không thật sự ấn tượng, vì các công việc em làm khá đơn giản, tuy vậy thông qua chúng em học được tính kiên nhẫn và tỉ mỉ. Thông qua các hoạt động này, em có kinh nghiệm hơn trong việc nắm bắt tâm lý người khác, có thêm những kỹ năng như quan sát, có khả năng chịu áp lực cao. Và em tin những điều này sẽ có ích đối với vị trí này. Qua tìm hiểu kỹ về vị trí công việc và môi trường làm việc bên mình cũng như những kinh nghiệm và sở trường em đang có, em thực sự mong muốn được có cơ hội được làm việc cùng anh chị tại công ty Y với vị trí nhân viên tư vấn khách hàng."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Before I introduce myself, I would like to thank you very much for giving me / me the opportunity to talk about the position of your company. / sister, my name is Mai, my full name is Trinh Thi Tuyet Mai. I am a fresh graduate of University X, when I was a student, I used to have some part-time jobs but none is not really significant, because the work I did was quite simple. Nonetheless I learned to be patient and meticulous. Through these jobs, I have more experience in interpersonal skills, observation, and high pressure tolerance. I believe these will be useful for this position through understanding carefully about the job position and working environment For me, I really want to have the opportunity to work with you at company Y as a client consultant. "