Cung cấp câu hỏi phỏng vấn: Bạn đọc tuyển dụng của Bank này, bạn thấy muốn vượt qua thì phải làm gì đúng không?

Nội dung bài viết

Video học lập trình mỗi ngày

Mục tuyển dụng là vậy...

Yêu cầu vị trí Backend chỉ cần vậy mà thôi?

Bạn đã đọc và thấy đúng không? Chính xác là những nhà tuyển dụng họ rất quan tâm đến việc triển khai nhiều transaction cùng một lúc. Vì vậy trọng tâm là bạn muốn apply vào vị trí đó thì nếu như có kịch bản đó xảy ra thì bạn sẽ làm gì?

Khi join vào một team bất kể ngôn ngữ Java hay go hay một ngôn ngữ nào thì nếu là vị trí liên quan đến tầng backend, bạn sẽ nghe rất nhiều về "đa luồng" (multithreading). Có thể bạn tự hỏi: "Tại sao nó lại quan trọng đến vậy?", "Bắt đầu học từ đâu?". Nếu bạn đang có những thắc mắc đó, thì tôi ngày xưa cũng không khác gì là mấy, vì vậy tôi có thể nói ra những kiến thức trọng tâm đối với tôi, và hy vọng bạn có cùng chung quan điểm.

Còn nếu cảm thấy tôi đang thiếu sót hay bỏ qua một vấn đề nào khác, vui lòng thêm cho tôi một lời tham khảo. Cảm ơn anh em

Xử lý tình huống đa luồng

Giờ server nào cũng có multi-core vì vậy hãy cố gắng lợi dụng và bắt nó làm việc hết công suất, lúc đó các tác vụ mới thực sự là hiệu quả. Cái nền tảng căn bản bạn phải hiểu trước là Concurrency (Đồng thời) vs. Parallelism (Song song) : Đây là hai khái niệm thường bị nhầm lẫn. Nên hiểu rõ chúng giúp bạn biết khi nào tác vụ thực sự chạy cùng lúc và khi nào chúng chỉ "xen kẽ" nhau.

Bạn có thể tham khảo một bài viết tuyệt vời Hoá ra tôi đã thực sự chưa hiểu về Concurrency vs Parallelism sau khi kết thúc phỏng vấn

Không cần nói nhiều ở đây, vài tuần trước tôi thực sự khởi động những bài viết nói về "JAVA Intern: Học JAVA từ những khái nhiệm quan trọng" nói về Multi-Thread và khi nào sử dụng chúng.

Nay tôi sẽ bổ sung trước cho các bạn những khái niệm quan trọng tiếp theo nếu như bạn muốn đi trước và tìm hiểu trước mọi người.

Giải quyết đa luồng (Multi-Thread) thì những khái niệm này nên trải nghiệm

Tôi đã sắp xếp rất kỹ về lộ trình bạn nên học. Hãy chú ý, cấp độ dễ học và cấp độ được thưởng sử dụng trong các dự án như yêu cầu tuyền dụng trên kia..

Usage Frequency: ★★★★★ (Rất thường gặp/quan trọng trong các dự án) -> ☆☆☆☆☆ (Ít gặp/ít quan trọng) Learning Difficulty: ★★★★★ (Rất khó học/hiểu sâu) -> ☆☆☆☆☆ (Rất dễ học/hiểu)

Cách học: Hãy học những keywords mà thường xuyên sử dụng trong các dự án. Tập trung vào đó...

Câu hỏi phỏng vấn về đa luồng

  1. How do you ensure thread safety in a Java program? Usage Frequency: ★★★★★ Learning Difficulty: ★★★★★

  2. What is the difference between threads and processes? Usage Frequency: ★★★★★ Learning Difficulty: ★★☆☆☆

  3. What are the ways to create a thread? Usage Frequency: ★★★★★ Learning Difficulty: ★★☆☆☆

  4. What is the difference between a thread's run() and start() methods? Usage Frequency: ★★★★★ Learning Difficulty: ★★☆☆☆

  5. What is the difference between sleep() and wait()? Usage Frequency: ★★★★★ Learning Difficulty: ★★★☆☆

  6. What is the difference between parallelism and concurrency? Usage Frequency: ★★★★★ Learning Difficulty: ★★★☆☆

  7. What is deadlock? Usage Frequency: ★★★★★ Learning Difficulty: ★★★☆☆

  8. What is the difference between synchronized and volatile? Usage Frequency: ★★★★★ Learning Difficulty: ★★★★☆

  9. How to prevent deadlock? Usage Frequency: ★★★★★ Learning Difficulty: ★★★★☆

  10. What is the difference between synchronized and Lock? (Referring to java.util.concurrent.locks.Lock) Usage Frequency: ★★★★★ Learning Difficulty: ★★★☆☆

  11. What is the difference between synchronized and ReentrantLock? Usage Frequency: ★★★★★ Learning Difficulty: ★★★☆☆

  12. What are the ways to create a thread pool? Usage Frequency: ★★★★★ Learning Difficulty: ★★★☆☆ (Easy with Executors, harder to understand ThreadPoolExecutor deeply)

  13. Explain the difference between Runnable and Callable. Usage Frequency: ★★★★☆ Learning Difficulty: ★★☆☆☆

  14. What are the states of a thread? Usage Frequency: ★★★★☆ Learning Difficulty: ★★★☆☆

  15. What is the difference between notify() and notifyAll()? Usage Frequency: ★★★★☆ Learning Difficulty: ★★★☆☆

  16. What is the difference between the submit() and execute() methods in a thread pool? Usage Frequency: ★★★★☆ Learning Difficulty: ★★☆☆☆

  17. What is ThreadLocal? What are its use cases? Usage Frequency: ★★★★☆ Learning Difficulty: ★★★☆☆

  18. Explain the underlying implementation principle of synchronized. Usage Frequency: ★★★★☆ Learning Difficulty: ★★★★☆

  19. What is a daemon thread? Usage Frequency: ★★★☆☆ Learning Difficulty: ★★☆☆☆

  20. What are the states of a thread pool? Usage Frequency: ★★★☆☆ Learning Difficulty: ★★★☆☆

Chúc anh em vươn mình mạnh mẽ...

Có thể bạn đã bị missing