// 01
Self-Introduction ~150 words
My name is Nguyen Hoang Lam, a Cloud/DevOps Engineer with over two years of hands-on experience operating high-availability infrastructure on AWS and Azure. I currently work at FPT Software supporting MyZoi, a fintech e-wallet platform, where I manage Linux servers, web application deployments, CI/CD pipelines, and 24/7 incident response. My daily work covers exactly the areas in this role — DNS, SSL/TLS certificates, SSH access, TCP/IP networking, and troubleshooting production issues through CloudWatch and Datadog. I automate operational tasks with Bash and Python, provision infrastructure with Terraform, and run containerized workloads on Kubernetes. I've also administered Azure Virtual Machines and Windows Server on an enterprise project. I enjoy the hosting and reliability side of engineering — keeping systems available, fast, and stable — and I'm comfortable working in English with international teams. I'm excited to bring this experience to your team and grow further in web hosting and cloud infrastructure.
// 02
Opening & Screening Questions
The interviewer usually opens with these. Answer with calm confidence — they set the tone for everything after.
Yes. This is a web hosting administrator role — keeping hosting systems available, performant, and stable, and supporting the applications that run on them. Concretely, I understand it covers:
- Web servers & hosting — IIS on Windows and Nginx/Apache on Linux, plus the Windows Services and Linux daemons that keep applications running.
- Deploying & supporting apps — .NET, Java, and Python applications on server environments.
- Hosting services — DNS, SSL/TLS, SSH, FTP/SFTP, and TCP/IP networking.
- Cloud & orchestration — Azure cloud hosting and Kubernetes environments.
- DevOps & automation — CI/CD pipelines, Infrastructure as Code with Terraform, and SSO / identity configuration.
- Operations — monitoring, troubleshooting incidents, and collaborating with developers and the US-based team.
Yes — I understand the work is shift-based and can include night shifts, and I'm fully comfortable with that. I already have 24/7 on-call and incident-response experience, so working in rotation and covering off-hours is normal for me, especially to give proper coverage across the US time zone.
My main motivation is learning and growing. I've built a solid foundation in cloud operations, and I'm looking for a role where I can broaden my skills further — deeper hosting and Windows/IIS work, more Azure and Azure DevOps, and steady exposure to an international, English-speaking team. This role fits that direction well, and I see it as a place where I can keep developing while contributing from day one.
// 03
Technical Q&A — Hosting Fundamentals
Maps to “Manage hosting services: DNS, SSL, SSH, FTP, TCP/IP” and “Deploy & support web applications (.NET, Java, Python).”
- DNS resolution — browser cache → OS resolver → recursive resolver → root/TLD/authoritative servers → returns the A/AAAA record (IP).
- TCP handshake — client opens a connection to the server on port 80/443.
- TLS handshake (if HTTPS) — certificate is presented and validated, session keys negotiated.
- HTTP request hits the web server (Nginx / Apache / IIS).
- The web server either serves static content or reverse-proxies to the app (Kestrel for .NET, Tomcat/JVM for Java, gunicorn for Python).
- Response returns to the browser.
- Managed: AWS ACM certificate attached to an ALB/CloudFront — auto-renewed, no manual work. Azure App Service Managed Certificates work similarly.
- On the server: Let's Encrypt via
certbot— obtains the cert through an HTTP-01 or DNS-01 challenge, installs it into Nginx, and a systemd timer / cron job auto-renews roughly every 60 days. - Force HTTP → HTTPS redirect, enforce TLS 1.2/1.3, disable weak ciphers.
- Check expiry from the CLI:
$ echo | openssl s_client -connect example.com:443 2>/dev/null \ | openssl x509 -noout -dates # notBefore / notAfter tell you the validity window
- Nginx — event-driven, excellent for static content, reverse proxy, load balancing, high concurrency.
- Apache — process/thread-based, very flexible with modules and
.htaccess. - IIS — Windows-native, tight integration with ASP.NET / .NET.
- A reverse proxy sits in front of app servers to terminate TLS, load balance, cache, serve static assets, and hide the backend. I typically run Nginx as a reverse proxy in front of app processes/containers.
General pattern — the principle is the same across stacks:
- Install the runtime — .NET runtime, JDK/Tomcat, or Python + virtualenv.
- Run the app as a systemd service so it restarts on failure and starts on boot.
- Put Nginx in front as a reverse proxy handling TLS and routing to the app's port.
- Lock down the firewall / security group — expose only 80/443, keep the app port internal.
- .NET on Linux → Kestrel behind Nginx.
- Java → jar/war under Tomcat, or a fat jar as a systemd service.
- Python → gunicorn/uWSGI behind Nginx.
// 04
Technical Q&A — Networking
- A (name → IPv4), AAAA (IPv6), CNAME (alias), MX (mail), TXT (SPF/DKIM/verification), NS, SOA.
Work layer by layer:
$ dig app.example.com # does DNS resolve to the right IP? $ ping app.example.com # reachable? (ICMP may be blocked) $ nc -zv app.example.com 443 # is that port actually open? $ ss -tlnp # is the service listening? (on server) # then check: security group / firewall rules, app running, logs
Key skill: isolating whether it's DNS vs network vs firewall vs app-down.
- Prefer SSH / SFTP (encrypted, port 22) over plain FTP (port 21, cleartext credentials).
- Harden SSH: key-based auth, disable root login, disable password auth, restrict source IPs via security groups, use a bastion host.
- If FTP is required for a legacy system, use FTPS or SFTP instead of plain FTP.
// 05
Real-Case Troubleshooting — your strongest section
- Situation: A MyZoi service was intermittently returning 502 errors from the ALB, affecting availability.
- Task: Find the root cause and restore stability without a risky broad rollback.
- Action: I checked the ALB target group health and saw targets flapping unhealthy. I correlated this with pod restarts and traced it to a misconfigured readiness probe — the probe path/timing was wrong, so Kubernetes marked healthy pods as not-ready. The ALB pulled them out and routed requests to terminating pods → 502s. I corrected the readiness probe (path, timeout, and thresholds) and verified targets stayed healthy.
- Result: The 502s were eliminated and deployments became stable.
- Lesson: Health-check and probe configuration is critical for availability behind any load balancer.
- Scope it — all users or some? Which endpoint? When did it start?
- Check monitoring — CloudWatch/Datadog dashboards for CPU, memory, latency, error rate.
- Check logs — web server + application logs.
- Check upstream — database (I've tuned slow queries via Performance Insights + indexing), external dependencies, connection-pool exhaustion.
- Check infra — one node vs all, disk full, memory pressure.
- Correlate with recent deploys — roll back if needed.
- Communicate status and follow the runbook.
- CPU:
top/htop, identify the process, check for a runaway thread or traffic spike. - Disk:
df -hfor usage,du -sh *to find large dirs, check log growth → set up log rotation. - Memory:
free -m, check for leaks / OOM indmesg.
// 06
CI/CD, Automation & Cloud
Maps to “Contribute to CI/CD, automation” and “Support Azure/Kubernetes.”
- GitHub Actions builds and tests, then pushes a container image to a registry.
- GitOps with ArgoCD syncs manifests to the cluster (ArgoCD runs
helm templateand applies the result — declarative, auditable). - Terraform provisions the infrastructure.
- Benefits: consistency, full audit trail, and fast rollbacks via
git revert. - For simpler hosting I can also do build → artifact → deploy over SSH/rsync → restart the systemd service.
- Bash/Python for backups, health checks, log rotation, and alerting.
- Example: CloudWatch alarm → SNS → Lambda → Slack notification.
- Scheduling via cron / systemd timers, or EventBridge Scheduler + Lambda for cloud-native jobs.
- A container packages an app + its dependencies so it runs the same everywhere — lighter than a VM because it shares the host kernel.
- Kubernetes orchestrates containers: Pods, Deployments, Services, Ingress — handling scaling, self-healing, and rolling updates.
// 07
Behavioral & Fit
- Proactive monitoring + alerting to catch issues early.
- Root-cause analysis on recurring incidents.
- Runbooks so anyone on the team can respond consistently.
- Preventive automation for the fixes.
// 08
Handling the Gaps — be honest, then pivot
// 09
Smart Questions to Ask Them
Asking good questions signals seniority and genuine interest.
- What web servers and OS mix are most common in your hosting environment (Nginx/Apache/IIS, Linux vs Windows)?
- How is the on-call / night-shift rotation structured across time zones?
- What does the CI/CD stack look like today — Azure DevOps, GitHub Actions, or Jenkins?
- What are the biggest reliability or hosting challenges the team is trying to solve right now?
- What does success in this role look like in the first 3–6 months?
// 10