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.
Những bài toán cổ điển trong lập trình
Đâ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:
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).
Giải thuật và Cấu trúc dữ liệu
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
- Sum of Even Numbers After Queries
- Robot Return to Origin
- N-Repeated Element in Size 2N Array
- Balanced Binary Tree
- Longest Substring Without Repeating Characters
- Remove Nth Node From End of List
- Merge k Sorted Lists
- Next Permutation
Các video về cấu trúc dữ liệu và giải thuật
Cấu trúc dữ liệu
- Data Structures & Algorithms #1 — What Are Data Structures? — Video
- Multi-dim — Video
- Dynamic Arrays — Video
- Resizing arrays — Video
- Data Structures: Linked Lists — Video
- Core Linked Lists Vs Arrays — Video
- Pointers to Pointers — Video
- Data Structures: Trees — Video
- Data Structures: Heaps — Video
- Data Structures: Hash Tables — Video
- Phone Book Problem — Video
- Data Structures: Stacks and Queues — Video
- Using Stacks Last-In First-Out — Video
- Data Structures: Crash Course Computer Science #14 — Video
- Data Structures: Tries — Video
Giải thuật
- Algorithms: Graph Search, DFS and BFS — Video
- BFS(breadth-first search) and DFS(depth-first search) — Video
- Algorithms: Binary Search — Video
- Binary Search Tree Review — Video
- Python Algorithms for Interviews — Video
- Algorithms: Recursion — Video
- Algorithms: Bubble Sort — Video
- Algorithms: Merge Sort — Video
- Algorithms: Quicksort — Video
Độ phức tạp của thuật toán (Big O Notation)
- Introduction to Big O Notation and Time Complexity (Data Structures & Algorithms #7) — Video
- Harvard CS50 — Asymptotic Notation — Video
- A Gentle Introduction to Algorithm Complexity Analysis — Post
- Cheat sheet — Post
Quy hoạch động (Dynamic Programming)
- Dynamic Programming (Think Like a Programmer) — Video
- Algorithms: Memoization and Dynamic Programming — Video
- Dynamic Programming I: Fibonacci, Shortest Paths — Video
- Dynamic Programming II: Text Justification, Blackjack — Video
- Dynamic Programming — Post
Xử lý mảng (String Manipulation)
- Coding Interview Question and Answer: Longest Consecutive Characters — Video
- Sedgewick — Substring Search — Video
Các hướng dẫn phỏng vấn
- Google Coding Interview — Universal Value Tree Problem — Video
- Google Coding Interview Question and Answer #1: First Recurring Character — Video
- Find min and max element in a binary search tree — Video
- Find height of a binary tree — Video
- Check if a binary tree is binary search tree or not — Video
- What Is Tail Recursion? Why Is It So Bad? — Video
Những vấn đề khác
Đế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:
- Bigger Is Greater
- ZigZag Conversion
- Reverse Integer
- Combination Sum II
- Multiply Strings
- Larry’s Array
- Short Palindrome
- Valid Number
- Bigger is Greater
- The Full Counting Sort
- Lily’s Homework
- Common Child
- Repeated Substring Pattern
- Remove Element
- Delete Node in a BST
- Split Array into Consecutive Subsequences
- Number of Subarrays with Bounded Maximum
- Combination Sum IV
- Best Time to Buy and Sell Stock with Cooldown
- Longest Repeating Character Replacement
- Swap Nodes in Pairs
- Binary Tree Right Side View
- Flatten Nested List Iterator
- Binary Tree Level Order Traversal
- Binary Search Tree Iterator
- Maximum Length of Pair Chain
- Split Linked List in Parts
Các vấn đề về Operational Programming
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ế
- Kangaroo Problem
- Breaking Records
- Find A Stringiter
- No Idea!
- Days of the programmer
- Leaderboard
- Word Order
- Sherlock And Squares
- Equalize The Array
- Apples And Oranges
- More Operational Style Questions
Các video về thiết kế hệ thống
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.
- Parking Lot System — Video
- Whats App — Video
- Uber design — Video
- Instagram — Video
- Tinder Service — Video
Các câu hỏi phỏng vấn về hệ điều hành
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?
- Commonly Asked Operating Systems Interview Questions
- What is Translation lookaside buffer?
- Why does Round Robin avoid the Priority Inversion Problem?
- Interrupt Vs System Call—What is ‘inode’ in file system?
- Operating System Interview Questions and Answers — Part I
- What is a kernel — Gary explains
- Round Robin Algorithm Tutorial (CPU Scheduling)
- The Magic of LRU Cache (100 Days of Google Dev) — Video
- The Memory Hierarchy — Video
- Interrupts — Video
- Scheduling — Video
Threads
- User Level thread Vs Kernel Level thread
- Intro to Processes & Threads — Video
- Difference Between Process and Thread — Georgia Tech — Advanced Operating Systems — Video
- Difference between forking and multithreading
Các câu hỏi phỏng vấn về lập trình hướng đối tượng
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ọ
- Java Programming Tutorial — 49 — Inheritance — Video
- Java Programming Tutorial — 55 — Introduction to Polymorphism — Video
- Java Programming Tutorial — 58 — Abstract and Concrete Classes — Video
- Java Programming Tutorial — 57 — Overriding Rules — Video
- Java Programming Tutorial — 59 — Class to Hold Objects
- Object-Oriented Programming — Video
Design Patterns
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?
- Factory Design Pattern — Video
- Observer Design Pattern — Video
- Adapter Design Pattern — Video
- Facade Design Pattern — Video
- Chain of Responsibility Design Pattern — Video
- Interpreter Design Pattern — Video
- Singleton Design Pattern Tutorial — Video
- Chapter 6 (Part 1) — Patterns (video) — Video
- Head First Design Patterns — Video
SQL
Đâ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 đề
- Trips and Users
- Human Traffic of Stadium
- Department Top Three Salaries
- Exchange Seats
- Hackerrank The Report
- Nth Highest Salary
- Symmetric Pairs
- OccupationsPlacements
- Ollivander’s Inventory
SQL — Videos
- 6 SQL Query Interview Questions — Video
- Learning about ROW_NUMBER and Analytic Functions — Video
- Advanced Implementation Of Analytic Functions — Video
- Advanced Implementation Of Analytic Functions Part 2 — Video
- Wise Owl SQL Videos — Video
Post SQL Problems
- Binary Tree Nodes
- Weather Observation Station 18
- ChallengesPrint Prime Numbers
- Big Countries
- Exchange Seats
- 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:
Facebook Group:
cơ hội việc làm IT : ITguru.vn