TEKO
Interviewer là bạn Phương Programming Manager trông còn khá trẻ (chắc chưa đến 30), bạn này đang làm ở Sing vì là nhân viên xuất sắc được sang Sing ngồi cùng sếp.
Câu hỏi pv bắt đầu như mọi cuộc pv khác, đó là giới thiệu bản thân, các công việc đã làm. Sau đó là hỏi về những khó khăn đã gặp phải trước đây, cách để giải quyết như thế nào.
Những bài toán bạn đã từng gặp phải trước đây?
- Bài toán chia gói hàng (packages) thành các giỏ hàng (buckets)
Làm sao để tiết kiệm thời gian cho shipper? Quy trình sẽ là: từ address dùng google map api để convert ra toạ độ x, y sau đó dùng thuật toán LMS để gom các điểm gần nhau. Cần tinh chỉnh các hệ số để tối ưu nhất có thể
- Check Gitlab pipeline mongodb đã import chưa?
thường thì import data từ QA sau khi tạo mongodb, vì vậy có thể check là nếu mongodb đã create thì lưu vào 1 biến trạng thái trong một file variables.json của gitlab artifact, sau đó get biến này để check có import không
- flexible platform: làm sao các component mềm dẻo, độc lập?
tạo ra một số quy tắc về dữ liệu và styling. về dữ liệu thì dùng input/output cho từng component. quy định không dùng css position absolute, fixed
- angular: build dynamic components, frontend dựa vào schema từ backend
xử lý với các form dynamic, dung ngx-formly để generate form từ json schema
- Issue Grafana không get dc metric từ Prometheus
Liên quan đến DB của prometheus bị đầy, solution có thể là giảm retension time đến một giá trị phù hợp.
- Cách structure project/pipeline để đáp ứng được deployment cho nhiều service, tenant khác nhau
Chia ra các project khác nhau, tổ chức call từ project chứa config đến project chứa template
Bài Coding
Sau đó là 20 phút làm 1 bài coding đơn giản. Bài toán là parsing data từ dạng csv sang mảng 2 chiều. Trường hợp đơn giản nhất là chỉ có dấu phẩy để tách cột
Nguyễn Văn A, Đinh Tiên Hoàng, Đà Lạt, Việt Nam
Sau đó nâng cao hơn là dùng dấu nháy kép (") để gộp địa chỉ
Nguyễn Văn A, "Đinh Tiên Hoàng, Đà Lạt", Việt Nam
Expect là lời giải phải đáp ứng được cả 2 trường hợp này.
Vì thời gian khá ngắn nên mình đã không giải được trọn vẹn đề bài mà mới chỉ giải quyết từng case. Với bài toán này, để đáp ứng được cả 2 trường hợp thì việc split string đơn thuần không giải quyết được, cần thêm 1 bước xử lý nữa là check dấu nháy kép. Một solution có thể là split dấu phẩy sau đó check dấu nháy kép để cộng string.
VMO
- Cần xây dựng những gì cơ bản nhất để deploy một service lên AWS
- Nếu có khoảng 10 service thì cần chia subnet như nào (dải mạng/subnet mask)
- Làm thế nào để các service trong các subnet connect được với nhau
- Monitoring như thế nào, chẳng hạn Kafka MSK
- Các metric được get như thế nào, lưu ở đâu (prometheus db)
- Nếu Kafka consumer không get message kịp với tốc độ producer thì làm sao
Cyptopie
- k8s có những loại network nào (clusterIP, NodePort, với 1 loại k nhớ)
- có những loại health check nào, phân biệt liveness, readiness, startup health check
- nếu 1 trang gặp sự cố thì xử lý như nào
- chọn EC2 instance type như thế nào, loại M với C thì khác gì nhau
- nếu file image quá lớn thì làm sao
- nếu Kafka leader down thì xảy ra điều gì
OCG
45'
Bạn đã tự build MySQL có nhiều replica chưa
Nếu RDS MySQL load nhiều thì xử lý như nào?
Scale pod, node trong k8s như thế nào?
Làm sao scale dựa vào kafka metric
Làm sao scale được gitlab runner
Bạn có dựng DB ở nơi khác ngoài AWS để tiết kiệm chi phí chẳng hạn
Cấu trúc k8s
Các tool devops hay dùng
Làm sao deploy app lên các node nhất định
IP của pod được xác định như nào
Làm sao giới hạn access đến DB trên k8s
Bạn có vận hành EKS không
Làm sao monitor hệ thống EKS
Vận hành alert như nào