Cho dù bạn là một kỹ sư phần mềm mới vào nghề hay là một developer giàu kinh nghiệm, chuẩn bị kỹ cho một buổi phỏng vấn không bao giờ là thừa. Danh sách dưới đây cung cấp cho bạn hơn 140 nguồn tài liệu giúp bạn có được đầy đủ thông tin để có thể chuẩn bị tốt nhất cho buổi phỏng vấn về lập trình sắp tới. Các tài liệu và video bằng tiếng Anh nhưng có lẽ cũng không quá khó khăn cho việc tham khảo.

Đây là những bài toán mà nhà tuyển dụng thường hay hỏi khi bắt đầu. Tưởng là đùa nhưng mục đích là xem bạn.. có biết code không? Đây là những câu hỏi để có thể quyết định có tiếp tục phỏng vấn bạn nữa hay không. Ví dụ bài toán Fizz Buzz là bài toán kinh điển nhập môn lập trình và là một trong những câu hỏi phỏng vấn các nhà tuyển dụng thích dùng khi phỏng vấn về lập trình.

Hãy xem qua các bài toán này:

  1. Fizz Buzz
  2. Subarray Sum Equals K
  3. Arrays: Left Rotation
  4. Strings: Making Anagrams
  5. Nth Fibonacci

Những câu hỏi trên không tập trung vào các giải thuật và cấu trúc dữ liệu nhưng đòi hỏi bạn phải hiểu rõ về vòng lặp, dãy (array).

Các câu hỏi chuẩn bị

Trước khi xem các video về cấu trúc dữ liệu và giải thuật, hãy xem các vấn đề dưới đây. Hãy xem liệu bạn có thể trả lời được hay không

  1. Sum of Even Numbers After Queries
  2. Robot Return to Origin
  3. N-Repeated Element in Size 2N Array
  4.  Balanced Binary Tree
  5. Longest Substring Without Repeating Characters
  6. Remove Nth Node From End of List
  7. Merge k Sorted Lists
  8. Next Permutation

Cấu trúc dữ liệu

  1. Data Structures & Algorithms #1 — What Are Data Structures? — Video
  2. Multi-dim — Video
  3. Dynamic Arrays — Video
  4. Resizing arrays — Video
  5. Data Structures: Linked Lists — Video
  6. Core Linked Lists Vs Arrays — Video
  7. Pointers to Pointers — Video
  8. Data Structures: Trees — Video
  9. Data Structures: Heaps — Video
  10. Data Structures: Hash Tables — Video
  11. Phone Book Problem — Video
  12. Data Structures: Stacks and Queues — Video
  13. Using Stacks Last-In First-Out — Video
  14. Data Structures: Crash Course Computer Science #14 — Video
  15. Data Structures: Tries — Video

Giải thuật

  1. Algorithms: Graph Search, DFS and BFS — Video
  2. BFS(breadth-first search) and DFS(depth-first search) — Video
  3. Algorithms: Binary Search — Video
  4. Binary Search Tree Review — Video
  5. Python Algorithms for Interviews — Video
  6. Algorithms: Recursion — Video
  7. Algorithms: Bubble Sort — Video
  8. Algorithms: Merge Sort — Video
  9. Algorithms: Quicksort — Video
  1. Introduction to Big O Notation and Time Complexity (Data Structures & Algorithms #7) — Video
  2. Harvard CS50 — Asymptotic Notation — Video
  3. A Gentle Introduction to Algorithm Complexity Analysis — Post
  4. Cheat sheet — Post
  1. Dynamic Programming (Think Like a Programmer) — Video
  2. Algorithms: Memoization and Dynamic Programming — Video
  3. Dynamic Programming I: Fibonacci, Shortest Paths — Video
  4. Dynamic Programming II: Text Justification, Blackjack — Video
  5. Dynamic Programming — Post
  1. Coding Interview Question and Answer: Longest Consecutive Characters — Video
  2. Sedgewick — Substring Search — Video

Các hướng dẫn phỏng vấn

  1. Google Coding Interview — Universal Value Tree Problem — Video
  2. Google Coding Interview Question and Answer #1: First Recurring Character — Video
  3. Find min and max element in a binary search tree — Video
  4. Find height of a binary tree — Video
  5. Check if a binary tree is binary search tree or not — Video
  6. What Is Tail Recursion? Why Is It So Bad? — Video

Đến đây bạn đã xem được kha khá các vấn đề cần cho chuẩn bị cho buổi phỏng vấn kỹ sư phần mềm. Nhưng như vậy đã đủ? Hãy thử sức thêm với các câu hỏi và vấn đề sau:

  1. Bigger Is Greater
  2. ZigZag Conversion
  3. Reverse Integer
  4. Combination Sum II
  5. Multiply Strings
  6. Larry’s Array
  7. Short Palindrome
  8. Valid Number
  9. Bigger is Greater
  10. The Full Counting Sort
  11. Lily’s Homework
  12. Common Child
  13. Repeated Substring Pattern
  14. Remove Element
  15. Delete Node in a BST
  16. Split Array into Consecutive Subsequences
  17. Number of Subarrays with Bounded Maximum
  18. Combination Sum IV
  19. Best Time to Buy and Sell Stock with Cooldown
  20. Longest Repeating Character Replacement
  21. Swap Nodes in Pairs
  22. Binary Tree Right Side View
  23. Flatten Nested List Iterator
  24. Binary Tree Level Order Traversal
  25. Binary Search Tree Iterator
  26. Maximum Length of Pair Chain
  27. Split Linked List in Parts

Một số công ty khi phỏng vấn software engineer họ sẽ không hỏi bạn nhiều về các giải thuật. Thay vào đó họ sẽ hỏi nhiều các câu hỏi về implementation và operation. Đây là những câu hỏi khá đặc biệt và bao gồm các vấn đề thực tế

  1. Kangaroo Problem
  2. Breaking Records
  3. Find A Stringiter
  4. No Idea!
  5. Days of the programmer
  6. Leaderboard
  7. Word Order
  8. Sherlock And Squares
  9. Equalize The Array
  10. Apples And Oranges
  11. More Operational Style Questions

Các câu hỏi về thiết kế hệ thông là những câu hỏi khá quan trọng để kiểm tra xem bạn có suy nghĩ rộng, toàn cảnh như một kỹ sư hay không. Các câu hỏi sẽ tập trung vào những dịch vụ, các vấn đề về server, làm sao bạn quản lý được traffic… Tất cả các câu trả lời của bạn sẽ cho nhà tuyển dụng thấy bạn có thể thiết kế phần mềm thay vì chỉ làm những gì người khác giao cho bạn.

  1. Parking Lot System — Video
  2. Whats App — Video
  3. Uber design — Video
  4. Instagram — Video
  5. Tinder Service — Video

Khi phỏng vấn các vị trí kỹ sư phần mềm hiếm khi nhà tuyển dụng hỏi bạn về hệ điều hành. Tuy nhiên, sẽ không thừa nếu bạn nắm các khái niệm như threads (luồng), scheduling, memory.. cho dù chỉ ở mức cơ bản. Sẽ rất xấu hổ nếu bạn không thể trả lời được về sự khác nhau giữa process và thread phải không nào?

  1. Commonly Asked Operating Systems Interview Questions
  2. What is Translation lookaside buffer?
  3. Why does Round Robin avoid the Priority Inversion Problem?
  4. Interrupt Vs System Call—What is ‘inode’ in file system?
  5. Operating System Interview Questions and Answers — Part I
  6. What is a kernel — Gary explains
  7. Round Robin Algorithm Tutorial (CPU Scheduling)
  8. The Magic of LRU Cache (100 Days of Google Dev) — Video
  9. The Memory Hierarchy — Video
  10. Interrupts — Video
  11. Scheduling — Video
  1. User Level thread Vs Kernel Level thread
  2. Intro to Processes & Threads — Video
  3. Difference Between Process and Thread — Georgia Tech — Advanced Operating Systems — Video
  4. Difference between forking and multithreading

Tương tự như các câu hỏi về hệ điều hành, không nhiều các nhà tuyển dụng hỏi bạn về lập trình hướng đối tượng. Có lẽ họ cho rằng đây là những khái niệm cơ bản ai cũng biết. Tuy nhiên, sẽ không hay tí nào nếu bạn không thể trả lời được những câu hỏi của họ

  1. Java Programming Tutorial — 49 — Inheritance — Video
  2. Java Programming Tutorial — 55 — Introduction to Polymorphism — Video
  3. Java Programming Tutorial — 58 — Abstract and Concrete Classes — Video
  4. Java Programming Tutorial — 57 — Overriding Rules — Video
  5. Java Programming Tutorial — 59 — Class to Hold Objects
  6. Object-Oriented Programming — Video

Sẽ rất có ích nếu bạn hiểu được các design patterns hoạt động thế nào và tại sao bạn lại dùng chúng. Một số nhà tuyển dụng sẽ hỏi bạn những câu hỏi khá đơn giản khi phỏng vấn developer như “tại sao bạn lại dùng một factory class?” Bạn có trả lời được câu hỏi này?

  1. Factory Design Pattern — Video
  2. Observer Design Pattern — Video
  3. Adapter Design Pattern — Video
  4. Facade Design Pattern — Video
  5. Chain of Responsibility Design Pattern — Video
  6. Interpreter Design Pattern — Video
  7. Singleton Design Pattern Tutorial — Video
  8. Chapter 6 (Part 1) — Patterns (video) — Video
  9. Head First Design Patterns — Video

Đây là phần cuối cùng trong bài này. Có thể bạn không bị hỏi nhiều về SQL trong buổi phỏng vấn nhưng đâu có mất gì nếu bạn chuẩn bị kỹ phần này đúng không nào?

SQL — Các vấn đề

  1. Trips and Users
  2. Human Traffic of Stadium
  3. Department Top Three Salaries
  4. Exchange Seats
  5. Hackerrank The Report
  6. Nth Highest Salary
  7. Symmetric Pairs
  8. OccupationsPlacements
  9. Ollivander’s Inventory

SQL — Videos

  1.  6 SQL Query Interview Questions — Video
  2. Learning about ROW_NUMBER and Analytic Functions — Video
  3. Advanced Implementation Of Analytic Functions — Video
  4. Advanced Implementation Of Analytic Functions Part 2 — Video
  5. Wise Owl SQL Videos — Video

Post SQL Problems

  1. Binary Tree Nodes
  2. Weather Observation Station 18
  3. ChallengesPrint Prime Numbers
  4. Big Countries
  5. Exchange Seats
  6. SQL Interview Questions: 3 Tech Screening Exercises (For Data Analysts)

Kết luận

Tham dự một buổi phỏng vấn về lập trình dù ở vị trí nào đều thường không dễ dàng và đôi lúc bạn cảm thấy mình sẽ không đi đến đâu. Với các câu hỏi, tài liệu, video bên trên sẽ giúp bạn có cái nhìn toàn cảnh hơn, chuẩn bị tốt hơn so với những đối thủ cạnh tranh cho vị trí mà bạn đang mong muốn

Chúc bạn may mắn!

Bài viết được tham khảo từ 142 Resources for Mastering Coding Interviews và có cập nhật thêm một số thông tin

 

Bạn có biết?


tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất

Linkedin Page: https://bit.ly/LinkedinITguru
Facebook Group: https://bit.ly/ITguruvn
cơ hội việc làm IT : ITguru.vn