The interview consisted of four stages: HR, SDET (Software Development Engineer in Test), SDET Project Leader, and QA Department Leader.
The HR representative first came into the meeting room to verify my information, and then the interview with the panel began.
- First Interviewer: SDET
The first interviewer, an SDET, was a graduate from NCTU who transitioned from an internship to a full-time role. The interviewer started by asking me to introduce myself, then explained the job responsibilities.
The interviewer mentioned that the main task of the job is conducting UI testing, which involves writing automated test scripts using Python Selenium for web scraping. These scripts are deployed in Docker containers, which are then managed in Jenkins to achieve CI/CD (Continuous Integration/Continuous Deployment). While not all projects utilize Docker, some use Kubernetes instead.
I asked if there would be opportunities to work on backend tasks. The interviewer replied that it would be unlikely because:
1. The backend at their company is highly advanced and mainly developed using Java.
2. Since the R&D team writes their own unit tests, the QA team is primarily responsible for testing the APIs they develop. If any issues are found, they would report them back to R&D for resolution.
3. The QA department focuses mainly on UI testing, making collaboration with the frontend team more frequent.
I then asked if he felt the phrase “once a QA, always a QA” applied. He thought it wasn’t the case, as frequent collaboration with the frontend team could lead to opportunities to transition to a frontend role in the future.
- Second Interviewer: SDET Project Leader
The second interviewer, the SDET Project Leader, had previously worked as a full-stack developer, and his responses carried the air of a more seasoned engineer. Like the first interviewer, he asked me to introduce myself and then requested that I explain the content, architecture, and tools used in a blog website project I had published on GitHub. Afterward, he began asking technical questions:
1. Name three principles of object-oriented programming (Encapsulation, Inheritance, Polymorphism). I could only recall Inheritance.
2. Explain object-oriented programming methods (Instance, Class, Static). I could only recall Instance since Python often uses the self.(attribute) syntax.
3. Explain the difference between value types and reference types. I didn’t know this at all.
Then it was my turn to ask questions. I asked what skills I could gain if I joined the team. He said I would primarily develop the ability to collaborate within a team. In school, projects are often individual efforts with a workflow that revolves around a repetitive cycle of git commit and git push. In the industry, however, since everyone is committing code, you need to learn to:
1. Review code.
2. Adapt to other people's coding styles, as not everyone follows standardized formats despite having guidelines in place.
3.Resolve conflicts, as multiple people might commit simultaneously.
Finally, I asked again if there would be opportunities to work on backend tasks. He mentioned that in the second half of the year, there would be a project to build a QA Department Dashboard, so there would definitely be an opportunity to get involved.
- Final Interviewer: QA Department Leader
The QA Department Leader asked me about my familiarity with Python. I explained that I had been using Python as a computational tool since my third year in college for research projects and numerical analysis assignments. During graduate school, I started writing more structurally and adopting object-oriented programming. He then re-emphasized the responsibilities of this position, and the interview concluded.