Tên Công Ty: Cốc Cốc
Vị trí tuyển dụng: Software Engineer, Data
Thời gian: 01/2019
Yêu cầu chung (tóm tắt):
- Must have: Algorithms and data structures, *nix, Java/C++/Scala, good Eng
- Plus:
- Spring/Quarkus for Java
- Cache/Message Queue services such as Redis, Ignite and Kafka
- SQL, noSQL, Elasticsearch, Cassandra or ClickHouse
Quá trình phỏng vấn
- Round 1:
+ Làm test, 5 ngày gửi lại.
+ Viết thuật toán sort 1TB text data chạy được trên máy 8GB mem. Tối ưu IO các thứ.
+ Gợi ý/ Lời khuyên: Mấy bài test này thường khá đơn giản, search google được. Chủ yếu đánh giá về coding style. Nếu tối ưu được thì sẽ là điểm cộng.
- Round 2: Phỏng vấn trực tiếp
- Người phỏng vấn: Leader team
- Một số câu hỏi/ chủ đề phỏng vấn:
- Algorithms: Một số thuật toán sort. Khi nào nên dùng cái nào. Vài ví dụ. Hỏi lại về bài test ở Round 1.
- Data structures: Dict, Tree. Bài toán nhỏ ví dụ.
- Whiteboard coding: Insert vào BTree.
- Computer architecture and Networking:
- Process, multithread, cách quản lý memory, shared mem của các cơ chế trên. Khi nào thì nên dùng cái nào, ví dụ cụ thể.
- Https hoạt động ra sao: Xác thực, mã hóa như nào. Vẽ flow cơ chế xác thực với CA.
- Front-end:
- Phân biệt cookie, localstorage, sessionstorage
- forEach vs map, let vs var vs const.
- Cache, sử dụng session, cookie ra sao.
- Mấy cái nữa nhưng mình hem biết trả lời ...
- Xử lý data và kinh nghiệm dự án:
- Kiến thức cơ bản với DW, design lên whiteboard một cái datamart cho sale.
- Kinh nghiệm các dự án cũ, có gì khó, xử lý được gì, tự hào gì.
- Thiết kế một pipeline ETL/ELT cho cookie uuid. Mục đích cuối cùng là phân loại người dùng thường/ vip, kết hợp các service của AWS với nhau. (Chỗ này có thể nêu tên một vài model ML)
+ Gợi ý/ Lời khuyên
- Tiếng Anh nên tốt chút, mình hơi cùi
- Hỏi rất rộng nên cần ôn tập rộng. (Round 3 thì bị hỏi sâu)
- Round 3: Phỏng vấn trực tiếp
- Người phỏng vấn: Head of department
- Một số câu hỏi/ chủ đề phỏng vấn
- Algorithms và DS: Bị hỏi sâu hơn so với round trước. Bắt phân tích vì sao lại làm như vậy
- Computer architecture and Networking: Hỏi sâu vãi nhái, gần như tất cả những gì học ở trường đều phải nhớ
- Whiteboard coding: KMP Search. Cái này mình chỉ nhớ tư tưởng với giả mã, lúc code thì vừa trao đổi về ý tưởng vừa code. Code chắc sai lòe
- *nix: Hỏi về mấy lệnh để xử lý data. swapping, paging ....
- Database: Bị hỏi khá sâu về pgsql (chắc do mình nói là mình biết ): cơ chế của wal, replication ...
- Xử lý data và kinh nghiệm dự án
- Bài toán xây dựng distributed systems lưu data searchable (elasticsearch): sharding, inverted index, write, search với shard, routing ...
- Key-value store: từ cơ chế lưu data ở disk tới file, tới versioning, hading failure, replica ... hỏi khá nhiều, mình cũng không nhớ hết.
- Vẽ vời ra một hệ thống với event-drive với Kafka làm lõi. Bài toán xử lý booking (như kiểu grab)
+ Gợi ý/ Lời khuyên
- Round này mình fail vì:
- tiếng Anh chưa tốt.
- Bị hỏi sâu quá, ôn tập chưa đủ kỹ. Cảm giác như bị hỏi tới cùng luôn
- Nhiều kiến thức mình nghĩ là mình biết mà sau khi bị hỏi thì mới thấy mình éo biết gì.
- Kiến thức chuyên ngành cũng chưa sâu. Sau đợt tạch ở đây và đi làm ở chỗ khác + tự cày 6 tháng nữa mới tự tin hơn
Gợi ý/ Lời khuyên chung:
- Ôn tập thật kỹ các kiến thức học ở trường.
- Tiếng Anh cần tốt.
- Tự tin, mình thiếu tự tin quá.
- Đọc thêm nhiều về SA, các kiến thức cơ sở, đừng quá chú trọng vào việc dùng tool.