Công nghệ thông tin

140 nguồn tài liệu để chuẩn bị cho phỏng vấn về lập trình

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.

Nội dung

Những bài toán cổ điển trong lập trìnhGiải thuật và Cấu trúc dữ liệuCác câu hỏi chuẩn bịCác video về cấu trúc dữ liệu và giải thuậtCấu trúc dữ liệuGiải thuậtĐộ phức tạp của thuật toán (Big O Notation)Quy hoạch động (Dynamic Programming)Xử lý mảng (String Manipulation)Các hướng dẫn phỏng vấnNhững vấn đề khácCác vấn đề về Operational Programming Các video về thiết kế hệ thốngCác câu hỏi phỏng vấn về hệ điều hànhThreadsCác câu hỏi phỏng vấn về lập trình hướng đối tượngDesign PatternsSQLSQL — Các vấn đềSQL — VideosPost SQL ProblemsKết luận
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:

Fizz Buzz
Subarray Sum Equals K
Arrays: Left Rotation
Strings: Making Anagrams
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).

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: https://bit.ly/LinkedinITguru
Facebook Group: https://bit.ly/ITguruvn
cơ hội việc làm IT : ITguru.vn

Back to top button