Chia sẻ buổi phỏng vấn Fullstack Developer không mấy vui vẻ của mình với 1 cty product (Tạm gọi cty này là P).
Bài viết khá dài và cũng có phần cảm nhận của cá nhân mình nên anh em không thích có thể bỏ qua.
Buổi pv bao gồm: 2 Team Lead (1BE, 1FE), 1 Technical Manager và mình (Ứng viên).
Sau khi qua vòng Phone screen, HR, Test thì mình được mời tới office để tham gia phỏng vấn với công ty.
Cty hẹn pv 3h30, mình tới sớm 20p và ngồi chờ, nói chuyện với HR 1 số vấn đề.
Đúng 3h30, mình được HR đưa vào phòng ngồi. Đầu tiên thì 2 anh lead tới trước, mình chào hỏi và nhận được lời đáp và giới thiệu tên, chức vụ (khá nice)
Sau đó 2 anh có hỏi mình 1 số vấn đề trước, anh Manager này tới sau 10p, mình cũng chào hỏi và anh này đi thẳng tới, kéo ghế ngồi và không đáp lại mình (Cũng OK, không vấn đề)
Kế tới anh M này cũng cầm CV mình lên và nghía (Mình đoán là không xem trước CV) và bắt đầu hỏi trong khi đang nhai kẹo cao su (Đến đây mình khá khó chịu, cảm giác không được tôn trọng và muốn đi về)
Tiếp là đoạn pv giữa mình và 3 anh này:
anh M: Mô tả về dự án đang làm
Mình: Dạ bla bla, dự án microservice cho phép user tạo dynamic UI, dynamic action và dynamic datamodel để control workflow, request ạ
anh M: Dùng Postgres mà cũng dynamic được à
Mình: Dạ có kết hợp với Hasura, GraphQL để tạo dựa trên thông tin user define á anh
anh M: Hasura, GraphQL anh nhớ dùng để query thôi mà (???), dự án này mà cũng dùng microservice à
Mình: Dạ dự án này khá lớn và riêng teamsize ở VN đã là 105 người rồi ạ
Kế tiếp mấy anh này dựa vào kết quả bài test của mình để hỏi tiếp:
anh M: CDN là gì, dùng nó tăng performance như thế nào?
Mình: CDN là Content Delivery Network, ... Dùng để tăng tốc độ truy cập cũng như giảm thời gian tải resource, nó có cơ chế caching để việc truy cập resource nhanh hơn ạ
anh M: Anh nhớ CDN làm gì có cache, cache thì phải có thời gian expire chứ, resource thì em đâu cần expire
Mình: Dạ theo em hiểu là có cache ạ, và có thể expire và có versioning (Đoạn này mình tranh cãi với ổng vì sao có cache ở CDN, cảm giác khá khó chịu)
...
anh M: Rồi trong dự án này thì việc thực tế em làm để tăng performance là gì?
Mình: Dạ em có thực hiện việc xử lý tác vụ năng ở phía Web worker thay vì main thread của React, sau đó thực hiện transfer data và main thread và update UI để tăng performance ạ.
Lúc này 3 người nhìn nhau cười, mình cũng khá bối rối vì không biết vì sao lại cười
- Còn gì nữa không em
Mình: Dạ optimized source code, giảm connection tới Db và chuyển đổi query phù hợp để giảm redundant data.
...
anh M: Câu slow query 1 triệu record trả về thì làm sao để biết cách mà tăng tốc độ query?
Mình: Dạ trước hết em dùng explain để phân tích câu query, sau đó sử dụng index và thêm vào những điều kiện cũng như giới hạn column để match với expect result ạ
Chỗ này mình không giải thích được các access method của query
anh M: Giảm số lượng column lúc select đâu tăng tốc độ lên bao nhiêu em
anh Lead BE: Giả sử câu query đó chỉ cần 1 record và nó đang trả về 1 triệu record thì sao em
Mình: Dạ cần thêm điều kiện và có thể dùng các aggregate function và group by để query đúng hơn
anh M: group by nó dựa trên kết quả đã query nên em đang làm 1 câu query chậm thêm chậm hơn (Phần này mình đang trả lời với anh lead BE nhưng anh M này có vẻ đang nhầm với câu trước của ảnh thì phải)
anh M: rồi số lượng record nhiều nhất em thường làm là bao nhiêu.
Mình: Dạ em không nhớ số lượng record nhưng nhớ dung lượng ít nhất 1 table khi query tầm 31MB ạ
anh M nhìn 2 anh kia rồi nói: Đúng rồi, làm outsource thì UAT là hết cốt, có bao giờ được động vào product đâu mà 1 triệu record.
Kế tới là cuộc pv đi vào hồi kết sau câu hỏi này của anh M: Với vai trò system admin thì em làm gì để chống DDoS.
Mình: (Khá khó chịu với những điều đó nhưng cũng trả lời lịch sự): Dạ có thể thêm rate limit, capcha và có thể dùng cloudflare để phòng chống ạ
anh M: Có chắc là phòng được không?
Mình: Theo em thì việc chuyên nghiệp nên để người chuyên nghiệp làm ạ, em focus vào develop chứ không làm system admin nên có thể không nắm rõ những cái này ạ
anh M: Sau Cty có giao cho em 1 người làm 1 dự án từ A-Z thì cũng phải có hướng xử lý chứ
Kế tiếp anh M này không hỏi thêm và 2 anh lead thì chỉ hỏi thêm cơ bản về OOP, SOLID, JS function