Background
- NTNU CSIE (everyone assumes we’re at the Guting campus on Heping East Road, but CS is actually on Tingzhou Road)
- Started coding in 10th grade, though by high school graduation my skill level was about on par with a freshman at one of the “Zhong” universities (NCU, NSYSU, NCHU, CCU — the cluster ranked just below the top four in Taiwan)
- ICPC Silver Award x2 (my teammates carried hard ><)
- Algorithm TA for two semesters
- Built an Online Judge as a side project
- Gave a talk about OJ development at SITCON
- Two-month internship at a cybersecurity company
- Dabbled in CTF and NASA (network security) but never got really good at any of them
Preparation
- Solved around 20 Leetcode problems, following the Grind75 order
- The English resume took quite a bit of time — I spent about two weeks refining it
Overview
Fair warning: lots of rambling below. Feel free to skip straight to the company you’re interested in.
- Offer: None
- Reject: KKCompany (required 2023 graduation), IBM, Trend Micro, Microsoft, Synology
- No response: Intel, CHT Security, iKala
- Ghosted: MTK
- Other: OnwardSecurity, GoFreight
Post-Interview Takeaways
- Operating Systems, Computer Networking, OOP (my department offered two relevant courses: Advanced Programming and Object-Oriented Analysis & Design), Systems Programming, Data Structures, and Algorithms — all matter a lot
- Start sending out resumes early to maximize your chances
- Take advantage of any referral opportunities you can get
Synology — Product Developer Intern
- D: Got a referral
- D+3: Scheduled online interview
- D+14: First round
- D+19: Second round
- D+26: Received rejection
First round (about one hour):
Started with a self-introduction, then moved on to OS, Network, and OOP questions. Here are the ones I still remember:
- process vs. thread
- Inter-process communication
- shared memory
- Where have you used it: Linux APIs
- message passing
- Where have you used it: Linux pipes
- network
- shared memory
- Issues with multithreading / multiprocessing
- semaphore vs. mutex — use cases and differences
- Resource creation and destruction on the stack (forgot the full name, but it’s basically the lifecycle of an object within a function scope)
- TCP vs. UDP
- TCP connection establishment (3-way handshake) and teardown (4-way handshake)
- OOP inheritance
- Polymorphism
- Algorithm design from my senior project
Next came two whiteboard problems (one easy, one medium). You could use Google Docs or share your screen from your preferred IDE (I used VSCode; they didn’t ask me to compile and run).
During the interview I only wrote an O(2n) solution, but it can actually be done in a single pass.
@Uier had assigned a similar problem in an algorithms homework before, so I solved it right away. Underclassmen, do those bonus problems — your TAs will appreciate it.
After the whiteboard problems, they gave me time to ask questions. The interviewer was friendly, and the whole scheduling and results process moved fast.
Second round (about one hour):
The problem itself wasn’t hard — I had to parse a C-style string like aKey=123\0bKey=456\0cKey=789\0\0 and look up the value for a given key. But it had been too long since I’d done C string manipulation, and I’d spent all my prep time on OOP and OS before this round. I was a bit too nervous.
That said, the interviewer’s feedback afterward taught me a lot.
GoFreight Tracking
- D: Referred through a senior named Dan
- D+1: Confirmed internship details
- D+6: Scheduled online interview
- D+15: Interview
I think the product this company builds is pretty cool, and the engineers seem really talented1.
GoFreight has two main products: Freight Forwarding Software and Container Tracking Software. There’s a fair amount of info about the former online if you’re curious.
Tracking’s core service crawls shipping company websites and aggregates the data, helping freight forwarders monitor shipment status. This prevents issues like goods sitting at customs too long and racking up detention fees. Previously, forwarders relied on manual tracking, which was error-prone. (Both products are interesting in that they tackle freight industry problems through heavy automation.)
The intern role mainly involves developing, maintaining, and refactoring crawlers. The main challenges revolve around various anti-scraping mechanisms: standard CAPTCHAs, Google reCAPTCHA, and even CDN-level ML-based protections. Sounds like a solid challenge.
However, the training period is fairly long — could be two to three months — so they prefer interns who can commit for about a year. Fully remote at the moment though.
Interview: Pretty relaxed conversation. I brought up a few of my web scraping side projects, and we talked about project development experiences.
Since a one-year internship commitment was a bit uncertain for me, I declined / was declined (?). Still, this is a company I’d love to join if the opportunity came up again.
MediaTek (MTK) — IT Engineer
- D: Submitted resume through their system (picked a convenient interview slot)
- D+4: Scheduled online interview
- D+11: Interview

The job description covered a lot of areas, but it’s actually divided into four tracks (you don’t need to know all of them):
- ML-related
- Application development
- Operations
- Cybersecurity
When I received the interview invite, they also asked me to take a Watson-Glaser personality assessment and an English proficiency test (felt slightly easier than TOEIC — 50 listening and 50 reading questions, one hour total).
Interview flow:
Started with a self-introduction. I wasn’t well-prepared for this part — the manager seemed to expect a slide-based presentation and a longer introduction, but I’d only prepared about a minute’s worth. There wasn’t much to discuss or ask about after that.
Then the manager introduced the job scope. Since I applied relatively late, only the cybersecurity team within IT was still hiring (though seeing a former Balsn team captain on the email recipient list kind of gave it away).
They asked about my cybersecurity background, and I asked about the specifics of the work. I also asked what kind of candidate they were looking for (someone passionate about security with strong ethical standards, and a fast learner when facing the unknown).
There’s very little info online about MTK IT internships — most of what you find is about chip design or firmware. So I’m jotting this down here in case it helps someone.
OnwardSecurity
- D: Resume forwarded through a professor in the department
- D: Scheduled interview
- D+5: Interview
- D+10: Original department scheduled another interview for a different role; another department also scheduled an interview
- D+12: Two interviews
Positions interviewed for: Security Software Development, IT-leaning role (involves some Java), and Automotive Software Vulnerability Research — three positions total. All three were conducted over Google Meet, coordinated via email with their HR.
The interview questions mostly revolved around my past project experience, with some questions about my current internship and future graduate school plans. I felt my performance was somewhere between average and smooth. There weren’t too many deep technical questions (OS, DS, Algo, OOP-type stuff). I asked the interviewers some questions too, like their software development process and how colleagues and managers typically collaborate.
In the end, I turned down the offer due to commute distance (Hsinchu to Taipei).
Microsoft RDI
- D: Filled out the application and got a referral
- D+1: Phone screening
- D+5: Email asking me to pick a department and role
- D+8: Phone call to schedule first round
- D+20: First round
Phone screening (presumably ManpowerGroup):
A phone interview briefly covering my resume background. There was also an English portion (self-introduction, future plans). It caught me off guard and I felt I did poorly, but somehow I still made it to the next round. About ten minutes total.
First round (presumably HR): Conducted over Teams. Similar questions about my resume, an English self-introduction (I actually prepared this time), and some behavioral questions (why Microsoft, most challenging experience, etc.).
Then they switched to Mandarin for technical questions:
- Red Black Tree
- Array vs. List
- Quick Sort
- Merge Sort
At the end, they described the team I might be assigned to, asked if I was okay with it, and left time for my questions. About twenty-five minutes total. For this round, I had to go to a room on campus because my apartment had an AC repair scheduled. Turns out the room had bad echo, and there were background voices on the HR’s side too — the whole session wasn’t super smooth.
For some reason, the job description sounded more like a TAI (Technical Assistant Intern) role than an RDI (Research Development Intern) position.
Trend Micro — Software Development and Testing
- D: Applied through 104
- D+1: Received Codility test link
- D+6: Completed the test
- D+13: Emailed to ask about results (passed)
- D+46: Received rejection
Codility test problems:
Same as this problem, except the numbers aren’t limited to 0 and 1 — they’re positive integers whose sum could overflow an int: https://www.geeksforgeeks.org/maximum-count-of-adjacent-pairs-with-even-sum-in-given-circular-array/
Given a string like
"..xxx..x..xxxx."wherexrepresents a pothole and.represents flat ground, repairing n consecutive potholes costs n + 1. Given a budget of m, what’s the maximum number of potholes you can repair? (I don’t remember the exact wording, but that was my understanding.)Given a seating chart for a train car like the one below, and a string like
reserved = "1A 2C 3D 2E 1H"representing booked seats: a family of four wants to sit together. DEFG in one row is one option, but BCDE or FGHI (separated by a single aisle) also work. Given n rows (n * 10 seats total), find the maximum number of four-person families that can be seated under the reservation constraints.

