← Trở về trải nghiệm

Interview Experience

ĐỌC THỬ 1/3

Software Engineer

Junior · Technology / Software · Singapore

Anonymous contributor·Reviewed by EmpSignal
·4 phút đọc

Bối cảnh trải nghiệm

Vai tròSoftware Engineer
Cấp độJunior
NgànhTechnology / Software
Quốc giaSingapore
Năm2026
Số vòng1
Chủ đề
AlgorithmsData StructuresSystem DesignSQLBehavioral

Một vòng technical interview không hề "junior": từ OSI model, TCP 3-way handshake đến context switching, deadlock, race condition và goroutine — rồi kết thúc bằng một bài coding về Dynamic Programming.

Phỏng vấn Software Engineer tại Công Ty S: Từ TCP Handshake đến 1 triệu Goroutine - Một vòng technical xoáy sâu vào Network, OS và Concurrency

My Experience

Phỏng vấn Junior Software Engineer tại Công Ty S: Một vòng technical xoáy sâu vào Network, OS và Concurrency

Một vòng technical interview không hề "junior": từ OSI model, TCP 3-way handshake đến context switching, deadlock, race condition và goroutine — rồi kết thúc bằng một bài coding về Dynamic Programming.

Bối cảnh

Đây là một vòng technical interview cho vị trí Junior Software Engineer tại Công Ty S, diễn ra cuối năm 2025.

Điểm đáng chú ý nhất của buổi phỏng vấn là interviewer gần như không tập trung vào framework hay syntax của một ngôn ngữ cụ thể.

Thay vào đó, phần lớn thời gian được dành cho những kiến thức nền tảng:

  • Networking
  • Operating Systems
  • Concurrency
  • Coding / Problem Solving

Và cách hỏi cũng không dừng ở mức định nghĩa.

Một câu hỏi có thể bắt đầu rất cơ bản, nhưng ngay sau đó interviewer tiếp tục hỏi "vì sao?", "nếu trường hợp này xảy ra thì sao?" hoặc đưa ra một tình huống cụ thể để kiểm tra xem ứng viên thực sự hiểu cơ chế bên dưới hay chỉ đang nhớ kiến thức theo kiểu textbook.

Đó cũng là pattern xuyên suốt buổi phỏng vấn.

Networking: Không chỉ hỏi TCP là gì

Phần Networking mở đầu với OSI model.

Ứng viên được hỏi về tên các tầng và chức năng của từng tầng, sau đó chuyển sang những kiến thức quen thuộc hơn như HTTP/1, TCP và UDP.

Nhưng phần TCP mới thực sự bắt đầu đào sâu.

TCP 3-way handshake

Một trong những câu hỏi là mô tả chi tiết quá trình 3-way handshake và giải thích vai trò của sequence number.

Đây không chỉ là câu hỏi để nhớ ba bước SYN → SYN-ACK → ACK.

Khi bị hỏi sâu hơn, ứng viên cần giải thích được TCP đang cố thiết lập điều gì, sequence number được dùng như thế nào và tại sao cơ chế này cần thiết cho một connection-oriented protocol.

TCP retransmission

Một câu hỏi khác đi vào cơ chế retry / retransmission của TCP.

Điểm quan trọng ở đây là không nên hiểu TCP đơn giản là "gửi không được thì gửi lại".

TCP sử dụng acknowledgement, sequence number, timeout và các cơ chế liên quan đến congestion control để phát hiện và xử lý packet loss.

Khi server nhận bị quá tải thì chuyện gì xảy ra?

Một trong những tình huống thú vị nhất của buổi phỏng vấn là:

Nếu server A gửi một lượng request rất lớn tới server B, nhưng server B đang quá tải và không thể xử lý thêm, thì chuyện gì xảy ra ở phía A trong TCP?

Câu hỏi này buộc ứng viên phải kết nối nhiều concept với nhau thay vì trả lời một định nghĩa riêng lẻ.

Ở mức TCP, receiver có thể điều tiết lượng dữ liệu mà sender được phép gửi thông qua receive window / flow control. Nếu packet bị mất hoặc acknowledgement không đến đúng thời gian, TCP cũng có cơ chế retransmission.

Nói cách khác, câu hỏi không đơn giản là "server B quá tải thì A retry".

Ứng viên cần phân biệt được flow control, congestion control và retransmission đang giải quyết những vấn đề khác nhau như thế nào.

Operating Systems & Concurrency: Phần nặng nhất

Nếu Networking kiểm tra khả năng hiểu protocol, thì phần Operating Systems & Concurrency kiểm tra sâu hơn về cách máy tính thực sự chạy code.

Thread vs Process

Một câu hỏi nền tảng nhưng rất dễ bị trả lời theo kiểu học thuộc:

Thread khác Process như thế nào?

Từ đó interviewer tiếp tục hỏi:

  • Khi nào nên dùng multithreading?
  • Khi nào nên dùng multiple processes?
  • Vì sao thread thường được xem là "lightweight" hơn process?
  • Tại sao trong nhiều trường hợp người ta lại ưu tiên multithreading?

Điểm quan trọng không chỉ là biết thread và process khác nhau ở memory space.

Bạn cần hiểu sự khác biệt đó ảnh hưởng như thế nào đến resource sharing, isolation, communication và cost của việc tạo / chuyển đổi execution context.

Concurrency

Bạn đã đọc hết phần xem trước miễn phí

Bạn đang đọc phần mở đầu của trải nghiệm này.

Phần còn lại bao gồm

  • ·Phần còn lại của câu chuyện
  • ·Chi tiết quy trình và câu hỏi (nếu có)
  • ·Những điều người viết ước mình biết trước
Nâng cấp Membership để đọc toàn bộ trải nghiệm→

Trải nghiệm liên quan

Gợi ý dựa trên chủ đề, ngành và cấp bậc tương tự bài bạn vừa đọc.

Khám phá thêm trên EmpSignal

Ngoài đọc trải nghiệm, đây là những cách khác để kết nối và chuẩn bị tốt hơn.

Signal Talk

Ghép 1:1 ẩn danh với người cùng chủ đề — không lộ email, luôn là cuộc trò chuyện thật.

Tìm người để nói chuyện →

Signal Interview Prep AI

EmpSignal AI đọc job description, đối chiếu với trải nghiệm phỏng vấn thật, rồi chỉ ra câu hỏi, stories và điểm dễ bị hỏi sâu.

home.pillars.prepBadge

Bạn cũng có một câu chuyện?

Chia sẻ trải nghiệm phỏng vấn hoặc nơi làm việc của bạn — ẩn danh, không lộ email hay tên công ty.

Chia sẻ trải nghiệm →