Sau phần 1 và phần 2 của series CS Foundation 101, bạn đã biết được các khái niệm, sáu yếu tố quan trọng trong CS Foundation, cũng như những khóa học giúp nâng cao kiến thức CS Foundation.
Bài viết cuối của series sẽ chia sẻ tới các bạn một số điểm cần lưu ý để có thể vượt qua vòng kiểm tra CS Foundation tại Got It – Competency Interview. Việc bạn có thật sự hiểu kỹ, hiểu sâu những kiến thức CS Foundation hay không đóng vai trò rất quan trọng vào kết quả của buổi phỏng vấn này.
Ở bài viết hôm nay, chúng mình sẽ đưa ra một số ví dụ thực tế xảy ra trong các buổi phỏng vấn tại Got It. Đồng thời, team cũng chia sẻ các gợi ý giúp bạn biết được chúng mình, từ góc độ của người phỏng vấn, mong đợi gì ở ứng viên và cách bạn có thể trả lời để trở nên nổi bật hơn so với những ứng viên khác.
Mục lục
1. Ví dụ về phần kiểm tra kiến thức cấu trúc dữ liệu và giải thuật
Cấu trúc dữ liệu và giải thuật là một trong những kiến thức nền tảng không thể thiếu của ngành khoa học máy tính. Trong các cuộc thi tin học nói chung, đề bài thường xoay quanh việc sử dụng các cấu trúc dữ liệu phù hợp và giải thuật tối ưu nhất để giải quyết một bài toán.
Ở các buổi phỏng vấn Competency tại Got It, gần như tất cả các câu hỏi đầu tiên đều liên quan tới cấu trúc dữ liệu và giải thuật. Trong phần lớn các trường hợp, ứng viên có thể sẽ đưa ra được những định nghĩa và một số thông tin khái quát. Ví dụ như:
- Liên quan đến các phần tử trong mảng (array), các ứng viên đều biết chúng được lưu trữ trên những ô nhớ nối tiếp nhau và độ phức tạp khi truy xuất một phần tử nhất định của mảng là O(1).
Đây đều là những thông tin chính xác. Tuy nhiên, không dừng lại ở đó, Engineer ở Got It sẽ hỏi bạn sâu thêm một chút: “Bạn có biết tại sao độ phức tạp trong trường hợp này lại là O(1) không?”. Rất bất ngờ là khá nhiều bạn không thể trả lời câu hỏi này.
Thật ra câu trả lời cũng không quá phức tạp. Để biết địa chỉ ô nhớ chứa phần tử i trong mảng, ta chỉ cần lấy địa chỉ của ô nhớ chứa phần tử đầu tiên của mảng, cộng với i lần kích thước của phần tử được lưu trong mảng đó. Công thức tính toán là:
addr(a[i]) = addr(a[0]) + i*size(object)
Hoá ra cũng dễ hiểu phải không? Tại Got It, chúng mình luôn mong muốn ứng viên không chỉ biết về các khái niệm mà còn hiểu được bản chất của vấn đề.
- Liên quan đến các giải thuật sắp xếp, hầu hết các ứng viên đều có thể mô tả, cài đặt được các giải thuật như bubble sort, merge sort, quick sort, v.v… và phần lớn đều nói rằng quick sort có hiệu năng tốt nhất.
“Vậy điều đó có đồng nghĩa với việc ta sẽ luôn sử dụng quick sort hay không?”
Hãy thử tìm đáp án cho câu hỏi trên. Bạn chắc chắn sẽ gây được ấn tượng tốt với người phỏng vấn nếu bạn có thể trả lời câu hỏi này. Có một gợi ý thú vị mà chúng mình muốn chia sẻ với các bạn: Hàm sort() trong ngôn ngữ lập trình được rất nhiều người yêu thích – Python không sử dụng quick sort.
Đó là hai ví dụ cụ thể về phần cấu trúc dữ liệu và giải thuật. Mong rằng, qua đây, bạn đã mường tượng được về cách hỏi và đặt vấn đề của chúng mình.
Got It kỳ vọng các ứng viên sẽ không chỉ học thuộc một cách rập khuôn, mà sẽ tư duy sâu, tìm hiểu căn nguyên của các khái niệm, tính chất trong CS Foundation. Do vậy, với các yếu tố khác của CS Foundation (Cơ sở dữ liệu, Hệ điều hành, Mạng máy tính, Lập trình hướng đối tượng, Ngôn ngữ lập trình), bạn cũng hãy hiểu sâu, hiểu đúng để không bỡ ngỡ với các câu hỏi “bất ngờ” của Got It Engineer nhé!
2. Ví dụ về câu hỏi tổng hợp kiến thức CS Foundation
Ngoài những câu hỏi trực tiếp về kiến thức như trên, chúng mình cũng sẽ hỏi bạn các câu hỏi tổng hợp rất gần gũi, xuất phát từ câu chuyện đời sống hằng ngày. Dưới đây là ví dụ về một câu hỏi như vậy.
“Internet giờ đã trở thành một phần không thể thiếu trong cuộc sống của mỗi người. Với rất nhiều người trong chúng ta, việc đầu tiên chúng ta làm sau khi thức dậy không phải là ra khỏi giường, mà sẽ là với lấy chiếc điện thoại và truy cập Facebook. Có khi nào bạn tự hỏi, những việc gì đã diễn ra trong suốt quá trình từ khi bạn gõ facebook.com vào thanh địa chỉ của trình duyệt cho đến khi trang Facebook hiện ra?”
Trên thực tế, đây chính là một câu hỏi mở thường xuyên được đặt ra cho các bạn ứng viên tham gia phỏng vấn Competency tại Got It. Mỗi bạn sẽ có một cách trả lời khác nhau do phạm vi câu hỏi bao trùm rất nhiều kiến thức, thành phần trong mạng máy tính.
Bạn có thể đưa ra một câu trả lời rất đơn giản: Trình duyệt gửi yêu cầu đến máy chủ của Facebook để lấy về nội dung trang web.
Tuy nhiên, đáp án của bạn sẽ được đánh giá cao hơn nếu bạn có thể cung cấp thêm chi tiết về việc làm sao trình duyệt biết phải gửi yêu cầu tới máy chủ của Facebook tại địa chỉ IP nào. Chắc hẳn lúc này bạn đang nghĩ tới dịch vụ phân giải tên miền – domain name service (DNS) phải không?
Chính xác là trình duyệt sẽ cần thông qua DNS để làm việc này. Và như chúng mình đã đề cập ở trên, Got It luôn muốn bảo đảm rằng ứng viên có những hiểu biết sâu sắc về những vấn đề ứng viên trình bày. Vậy nên, rất có thể câu hỏi tiếp theo sẽ là: DNS hoạt động như thế nào?
Sẽ rất tuyệt nếu bạn có hiểu biết về các lớp server của DNS như root servers, top-level domain servers và authoritative servers. Và sẽ tuyệt vời hơn nữa nếu bạn có thể nói cho chúng mình biết rằng DNS chính là một ví dụ tiêu biểu của hệ cơ sở dữ liệu phân tán.
Bật mí nho nhỏ là Got It Engineer sẽ luôn có các câu hỏi follow-up cho những câu trả lời các bạn đưa ra. Trả lời được càng nhiều, càng chính xác, có nghĩa là bạn càng nắm chắc phần kiến thức về CS Foundation. Vậy nên, bạn đừng quên đào sâu và thử áp dụng CS Foundation để phân tích các hệ thống, hiện tượng khoa học máy tính xuất hiện trong đời sống nhé!
3. Lưu ý về bài test lập trình
Ngoài các câu hỏi kiểm tra về CS Foundation, một phần không thể thiếu của các buổi phỏng vấn Competency là các bài test lập trình nhỏ. Thông thường, các bạn ứng viên sẽ có xu hướng bắt tay ngay vào việc viết code nhưng đây không phải là một ý hay. Việc đầu tiên các bạn nên làm là đọc kĩ và đặt ra các câu hỏi để bảo đảm rằng các bạn đang hiểu đúng yêu cầu đề bài.
Ví dụ, nếu đề bài có liên quan đến chuỗi (string), câu hỏi có thể là:
- Chuỗi có phân biệt chữ hoa, chữ thường hay không?
- Khoảng trắng trong chuỗi cần được xử lý như thế nào?
Hay nếu đề bài liên quan đến mảng thì có thể bạn cần quan tâm đến việc mảng đó có được sắp xếp theo thứ tự nào hay không.
Kỹ năng lập trình của các bạn là rất quan trọng. Tuy nhiên, ngoài kỹ năng, Got It đặc biệt quan tâm đến cách bạn tiếp cận vấn đề. Sau khi đã hiểu đề bài, nếu bạn cần thêm thời gian suy nghĩ, đừng ngại đề cập với người phỏng vấn. Đồng thời, đừng chần chừ hỏi mượn giấy bút nếu bạn cần để làm nháp nhé.
Với những bài test lập trình này, việc đưa ra cách giải tối ưu ngay từ đầu là rất khó vì bạn đang phải làm dưới áp lực của buổi phỏng vấn Competency. Vì thế, hãy bắt đầu bằng một giải pháp đơn giản nhất, sau đó từng bước tìm cách cải thiện về mặt hiệu năng.
Việc này cũng phần nào giống như cách chúng ta xây dựng sản phẩm. Chúng ta sẽ bắt đầu với một sản phẩm tối giản dùng được – minimum viable product (MVP), sau đó cải tiến liên tục theo các release để cuối cùng có một sản phẩm hoàn chỉnh.
Nếu trong quá trình làm bài, bạn cảm thấy dù đã rất cố gắng nhưng hướng giải quyết bài toán vẫn chưa rõ ràng, hãy thử hỏi xem người phỏng vấn có thể cho bạn gợi ý gì không. Việc nhận ra lúc nào chúng ta nên dừng lại và tìm kiếm sự giúp đỡ cũng là một kĩ năng rất quan trọng.
Cuối cùng, đừng quên viết test cho phần cài đặt của bạn. Hãy bảo đảm rằng sản phẩm bạn làm ra luôn đạt chất lượng tốt nhất.
“All code is guilty, until proven innocent”
– Anonymous –
Lưu ý nhỏ cuối cùng nhưng không kém phần quan trọng đó là: Bạn chỉ nên trả lời những gì mình thật sự nắm chắc thôi!
Rất nhiều ứng viên cố gắng trả lời câu hỏi trong khi không nắm chắc kiến thức khiến cho cơ hội vượt qua vòng phỏng vấn của các bạn bị giảm đi ít nhiều. Nếu gặp phải câu hỏi ngoài phạm vi hiểu biết của mình, đừng ngần ngại chia sẻ thật với người phỏng vấn. Engineer của Got It chắc chắn sẽ trao cho bạn một cơ hội khác để thể hiện khả năng.
4. Lời kết
Hy vọng rằng bài viết này đã phần nào giúp bạn hiểu được chúng mình mong đợi gì từ các ứng viên và cách để các bạn có thể đạt được số điểm cao nhất trong vòng phỏng vấn Competency.
Hiện tại, Got It đang tuyển dụng nhiều vị trí engineering đặc biệt dành cho các bạn New Grads, sinh viên năm cuối. Nếu bạn đang tìm một bến đỗ giúp bạn trở thành một World-class Engineer ngay tại Việt Nam, thì đừng chần chừ gì nữa, hãy apply Got It, bạn nhé!