Mục lục
- Giới thiệu bối cảnh kinh doanh
- Kiểm tra sự phát triển kiến trúc
- Kiểm tra nguyên lý của công nghệ nền tảng của công ty
- Kiểm tra điểm khó của hệ thống
- Kiểm tra kỹ năng chuyên môn
- Tóm tắt
Bài viết này chia sẻ với các bạn trải nghiệm phỏng vấn của một bạn khi phỏng vấn một bộ phận của Alibaba.
Bạn này có nền tảng kỹ thuật không tồi, đã làm việc trong một số công ty Internet có quy mô vừa phải khá nổi tiếng, sau đó dự định thử sức vào vị trí của Alibaba, nên đi phỏng vấn.
Vòng 1 và vòng 2 phỏng vấn, tất cả đều vượt qua, phỏng vấn viên đánh giá là kỹ năng kỹ thuật cơ bản khá ổn, nền tảng cũng tốt, phân cấp đều là cấp bậc P6+.
Nhưng vòng 3 là giám đốc bộ phận P9 phỏng vấn bạn ấy, kết quả là bạn ấy bị loại ở đây, vì vậy chia sẻ một số câu hỏi trong vòng 3 này để mọi người tham khảo.
1. Giới thiệu bối cảnh kinh doanh
Đầu tiên, bạn này giới thiệu một số kinh nghiệm dự án của mình. Hiện tại bạn ấy đang phụ trách một hệ thống dữ liệu trong công ty, logic kinh doanh không phức tạp nhưng có một chút khó về kỹ thuật.
Chủ yếu là mỗi ngày sẽ có người gọi API của bạn ấy, sau đó dữ liệu sẽ được lưu vào bảng dữ liệu.
Nói đơn giản là bối cảnh như sau, như hình dưới:
Hệ thống này mỗi ngày các cuộc gọi API sẽ lưu vào cơ sở dữ liệu khoảng 200.000 dữ liệu, như vậy mỗi tháng là khoảng 6 triệu dữ liệu, mỗi năm là gần 100 triệu dữ liệu được lưu vào cơ sở dữ liệu.
Nhưng đây là đối với toàn bộ cơ sở dữ liệu, phân tán đến mỗi bảng cốt lõi bên trong, thì mỗi bảng mỗi năm tăng thêm khoảng 10 triệu dữ liệu.
2. Kiểm tra sự phát triển kiến trúc
Hệ thống là như vậy, sau đó phỏng vấn viên bắt đầu hỏi...
Phỏng vấn viên có chút điểm trừ đối với ấn tượng của ứng viên..
Phân tích:
Thực tế loại câu hỏi này trong các cuộc phỏng vấn tại BAT, Meituan, Jingdong, v.v., đều là câu hỏi thường gặp. Bởi vì hệ thống của các công ty lớn phải đối mặt với sự tăng trưởng gấp đôi của kinh doanh, áp lực hệ thống ngày càng lớn, vì vậy mỗi năm phải nâng cấp kỹ thuật một vài lần, liên tục phải tiến hành phát triển kiến trúc.
Vì vậy, trong các công ty Internet, một khía cạnh rất quan trọng trong khả năng thiết kế kiến trúc, chính là khả năng phát triển kiến trúc nhắm mục tiêu vào sự tăng trưởng của kinh doanh, là điều rất cốt lõi.
Bạn phải có ý thức là nếu khối lượng kinh doanh của bạn tăng gấp 10 lần, tăng gấp 100 lần, kiến trúc hệ thống của bạn cần phát triển như thế nào? Điều này gần như là ý thức và khả năng cần có của kỹ sư cấp cao.
Thực tế mọi người có thể suy nghĩ một chút, nếu tăng gấp 10 lần, mỗi bảng mỗi năm tăng thêm gần 100 triệu dữ liệu, liệu có thể sử dụng phương thức cơ sở dữ liệu đơn bảng đơn để chịu tải không?
Chắc chắn là không được, vì vậy chắc chắn là cần phải giới thiệu kỹ thuật phân tách cơ sở dữ liệu phân tách bảng để giải quyết vấn đề tăng gấp 10 lần, đảm bảo mỗi cơ sở dữ liệu mỗi bảng phân tán một lượng dữ liệu nhất định, tránh việc dữ liệu của một bảng đơn lẻ quá lớn.
Vậy mọi người suy nghĩ thêm một chút, nếu tăng gấp 100 lần thì sao, mỗi bảng mỗi năm tăng thêm gần 1 tỷ dữ liệu, phân tách cơ sở dữ liệu phân tách bảng cũng chưa chắc đủ. Bởi vì lúc này có thể sẽ gặp phải vấn đề truy cập đồng thời cao, cơ sở dữ liệu khó có thể chịu được.
Lúc này, bạn có nên xem xét thiết kế kiến trúc lưu trữ dữ liệu như dị cấu trúc dữ liệu, tách biệt dữ liệu nóng lạnh không?
Ví dụ như sử dụng kiến trúc MySQL phân tách cơ sở dữ liệu phân tách bảng + cơ sở dữ liệu NoSQL phân tán + tìm kiếm phân tán Elasticsearch + bộ nhớ cache Redis để thiết kế toàn diện kiến trúc lưu trữ dữ liệu này.
Bạn có thể tiến hành kiến trúc tách biệt dữ liệu nóng lạnh trước, ví dụ như dữ liệu nóng nhất được đưa vào cơ sở dữ liệu NoSQL phân tán, chuyên dụng để chịu tải ghi đồng thời cao của dữ liệu trong ngày, cũng như đọc và ghi hiệu suất cao.
Sau đó, một khoảng thời gian nhất định, tiến hành lưu trữ dữ liệu, chuyển dữ liệu lạnh không còn được sử dụng thường xuyên trong NoSQL sang MySQL để lưu trữ.
Cuối cùng là xử lý tìm kiếm dữ liệu khổng lồ, có thể xây dựng chỉ mục trong Elasticsearch để giải quyết, nhưng có thể lấy dữ liệu chi tiết từ lưu trữ dị cấu trúc NoSQL + MySQL.
Hơn nữa, đối với một số dữ liệu truy vấn đặc biệt nóng, có thể sử dụng Redis để làm bộ nhớ cache.
Thực tế đánh giá của phỏng vấn viên P9 đó là mong đợi ứng viên nói ra kiến trúc này. Mặc dù cấp bậc P6+ chưa chắc có khả năng hoàn toàn kiểm soát được kiến trúc này, nhưng ít nhất phải có ý thức.
Kết quả là ứng viên hoàn toàn không nói được gì, thì chắc chắn sẽ khiến người ta thất vọng.
3. Kiểm tra nguyên lý của công nghệ nền tảng của công ty
Bạn này hệ thống của họ có một phần dữ liệu được đặt trong dịch vụ lưu trữ đặc biệt, sử dụng dịch vụ lưu trữ trên nền tảng đám mây, hơn nữa dữ liệu được lưu trữ trong dịch vụ lưu trữ rất quan trọng.
Vì vậy phỏng vấn viên bắt đầu hỏi câu hỏi thứ hai.
Phân tích:
Đây là lỗi thứ hai mà bạn này mắc phải, không phải nói là kỹ sư cấp cao, mà nói là một kỹ sư cao cấp, nên phải hiểu rõ mọi mặt mà hệ thống mình phụ trách sử dụng.
Ví dụ như bạn sử dụng API chuyển đổi giọng nói, hoặc API truy vấn của công ty chuyển phát nhanh, thì ít nhất bạn phải biết họ đang làm gì ở phía sau, hoặc hỏi rõ ràng giới hạn QPS của API của họ, cũng như lượng truy cập của bạn là bao nhiêu.
Bạn sử dụng dịch vụ lưu trữ đặc biệt, thì ít nhất phải biết nguyên lý thực hiện của loại dịch vụ lưu trữ đó, cách bố trí dung lượng lưu trữ, v.v., đây là tiêu chuẩn nghề nghiệp tối thiểu để kỹ sư cao cấp kiểm soát công việc của mình.
4. Kiểm tra điểm khó của hệ thống
Bầu không khí phỏng vấn hơi gượng gạo, nhưng vẫn tiếp tục...
Phân tích:
Phỏng vấn tại các công ty lớn chắc chắn sẽ hỏi bạn điểm khó của hệ thống là gì, điều này thể hiện kinh nghiệm dự án của bạn có bao nhiêu giá trị.
Cho dù dự án của bạn có tệ đến đâu, bạn cũng phải cố gắng nhét thêm một chút công nghệ mới vào, không có điểm khó cũng phải tìm ra điểm khó, nếu không đi phỏng vấn chắc chắn sẽ bị người ta khinh thường.
Ví dụ như hệ thống ở trên, thực tế nó có một bước là cần phải di chuyển dữ liệu, tức là chuyển dữ liệu có thể là vài triệu dữ liệu trong cơ sở dữ liệu, một lần di chuyển sang bộ lưu trữ khác.
Vậy bước di chuyển dữ liệu này, thực tế liên quan đến việc di chuyển hàng chục triệu dữ liệu.
Bạn làm sao để đảm bảo hiệu quả di chuyển dữ liệu? Làm sao để đảm bảo tính chính xác của dữ liệu sau khi di chuyển? Làm sao để tránh ảnh hưởng đến hiệu suất của cơ sở dữ liệu trong quá trình di chuyển?
Những vấn đề này, thực tế bạn nên suy nghĩ một chút, xem xét chúng như một điểm khó về kỹ thuật để giải thích kỹ càng.
5. Kiểm tra kỹ năng chuyên môn
Phân tích:
Phỏng vấn tại các công ty lớn chắc chắn sẽ kiểm tra độ sâu kỹ thuật của bạn, thường là đào sâu và kiểm tra kỹ thuật bạn sử dụng nhiều nhất, hoặc kỹ thuật bạn quen thuộc nhất, xem độ sâu kỹ thuật của bạn sâu đến đâu.
Kết quả là bạn này tự nói là MQ, nhưng thực tế hiểu biết về MQ rất nông cạn, những thứ sâu sắc đều không nói được, thì kết quả cuối cùng chắc chắn là khiến phỏng vấn viên rất khó chịu.
6. Tóm tắt
Thực tế bạn này nền tảng kỹ thuật không tồi, bao gồm một số kiến thức cơ bản về kỹ thuật, vì vậy vòng phỏng vấn đầu tiên và thứ hai đều vượt qua. Nhưng góc độ kiểm tra của vòng phỏng vấn thứ ba hoàn toàn khác nhau, ngay lập tức bộc lộ ra những khuyết điểm về năng lực của bạn ấy.
Hoàn toàn không có ý thức về sự phát triển kiến trúc của hệ thống mình phụ trách, không bao giờ suy nghĩ về điểm khó của hệ thống, không hiểu rõ những chi tiết kỹ thuật mà hệ thống liên quan, không tích lũy được chiều sâu kỹ thuật, tất cả đều dẫn đến việc bạn ấy thể hiện rất tệ trong vòng 3, kết quả là bị loại trực tiếp.
Vì vậy, hy vọng mọi người thông qua bài viết này, rút kinh nghiệm từ bạn này, thường xuyên suy nghĩ về điểm khó về kỹ thuật của hệ thống mình phụ trách, cũng như khi khối lượng kinh doanh tăng gấp đôi thì kiến trúc phát triển như thế nào, những chi tiết kỹ thuật mà hệ thống liên quan, cũng như tích lũy chiều sâu kỹ thuật liên quan.