Hello, I'm Do Ky Duyen, a recent Software Engineering graduate from Can Tho University.
I
graduated with a GPA of 3.4/4.0 and have gained practical experience through internships at
companies like FPT SOFTWARE and TMA Solutions.
During my internships, I've worked with technologies like Flutter, Angular, and MuleSoft,
developing skills in mobile and web application development. My most recent project was a
comprehensive TodoList application at Hahalho - ZiiChat, where I implemented advanced
features like internationalization and cross-platform functionality.
I'm passionate about technology and continuous learning. Currently, I'm pursuing my Java SE
Developer certification and working to improve my technical skills. My goal is to contribute
innovative solutions and grow as a software engineer.
I'm excited about the opportunity to bring my technical skills, problem-solving approach, and
enthusiasm for learning to your team
Q: Can you walk me through your experience with Flutter development at Hahalolo - ZiiChat?
"During my internship at Hahalolo - ZiiChat, I applied Object-Oriented Programming principles to
develop a TodoList application. I focused on implementing CRUD operations with efficient state
management. A key achievement was designing widget components and creating a widgetBook
according to Figma designs. I also actively participated in Agile Scrum processes, including sprint
planning and estimation, which helped me understand collaborative software development."
Q: You've had internships in different technologies. How have these experiences helped you grow?
"Each internship provided unique learning opportunities. At FPT SOFTWARE, I gained expertise in
MuleSoft and enterprise integration, which taught me about backend systems. My internship at TMA
Solutions with Angular helped me improve my frontend skills and understand RESTful API integrations.
At Hahalolo, I deepened my Flutter development skills. These experiences have made me versatile,
showing my ability to quickly adapt to different technologies and understand various aspects of software
development."
Q: Tell me about the Online Fundraising Website and its authentication feature.
"For the Online Fundraising Website, I implemented a secure authentication system using facial
recognition with FaceNet. The project involved creating a full-stack application using Python,
JavaScript, ReactJS, NodeJS, and MongoDB. I designed the database schema and RESTful
APIs, ensuring robust and secure communication between frontend and backend. The facial
recognition feature was particularly challenging and showcased my ability to integrate
advanced technologies into a practical application."
"For the Online Fundraising Website, I implemented secure authentication using FaceNet for
facial recognition. The project was built using a full-stack approach with Python, JavaScript,
ReactJS, NodeJS, and MongoDB. The facial recognition feature involved several key steps:
Integrating machine learning models for face detection and recognition
Implementing secure storage of facial feature vectors
Creating a robust authentication flow that balances security and user experience
Handling edge cases like low-light conditions or partial face visibility
"The biggest challenge was ensuring both accuracy and performance of the facial recognition
system while maintaining user privacy and data security."
Q: How do you choose the right technology for a project?
"I evaluate projects based on several factors: project requirements, scalability, performance needs, and
team expertise. For instance, I've used Flutter for mobile app development due to its cross-platform
capabilities, Angular for enterprise web applications requiring robust structure, and React for more
flexible, component-based interfaces. My approach is to understand the project's specific needs and
select the most appropriate technology stack."
Q: Why are you pursuing Java SE Developer certification?
"I'm committed to continuous learning and expanding my skill set. The Java SE certification will
help me deepen my understanding of core Java concepts and OOP principles. Currently, I'm
taking Core Java Programming courses to complement my existing knowledge. This certification
aligns with my goal of becoming a more comprehensive and skilled software developer."
Q: Where do you see yourself in the next 3-5 years?
"I aim to grow into a senior developer role, specializing in mobile and web application development. I'm
particularly interested in continuing to work with technologies like Flutter, React, and expanding my
backend development skills. My goal is to not just write code, but to contribute to creating innovative
solutions that solve real-world problems."
Q: How do you stay updated with new technologies?
"I stay current through multiple channels: online courses, tech blogs, GitHub repositories, and developer
communities. I'm actively pursuing certifications, like my ongoing Java SE certification. I also enjoy
working on personal projects that allow me to experiment with new technologies. For example, my
Online Fundraising Website was an opportunity to explore facial recognition technology."
Interview Preparation for Do Ky Duyen
Technical Skills and Experience
Q1: Can you tell me about your experience with Flutter development?
A1: During my internship at Hahalolo - ZiiChat, I applied Object-Oriented Programming
principles in Flutter development. I worked on TodoList applications, implementing CRUD
operations and state management. I also developed UI components and widgetBooks according
to Figma designs, demonstrating my ability to translate design specifications into functional
code.
Q2: What different technologies have you worked with during your internships?
A2: I've gained diverse technology experience across multiple internships:
At FPT Software, I worked as a MuleSoft Developer, gaining expertise in MuleSoft 4.x
and Anypoint Platform for enterprise integration solutions.
At TMA Solutions, I worked as a Frontend Developer using Angular and TypeScript,
implementing interfaces and working with RESTful API integrations.
My current Flutter Developer role involves mobile app development with a focus on UI
design and state management.
Q3: Can you describe one of your personal projects in more detail?
A3: My Online Fundraising Website project is a good example of my full-stack development
skills. I used Python, JavaScript, ReactJS, NodeJS, and MongoDB to create a platform with
secure authentication, including an innovative facial recognition feature using FaceNet. I
designed the database schema and RESTful APIs, following best practices in software design.
Educational Background and Skills
Q4: How has your academic background prepared you for a software
development career?
A4: My Software Engineering degree from Can Tho University provided a strong foundation in
key areas like Object-Oriented Programming, Data Structures and Algorithms, and Software
Development Lifecycle. With a GPA of 3.4/4.0, I've developed a solid understanding of core
computer science principles that I've been able to apply directly in my internships and personal
projects.
Q5: What programming languages are you most comfortable with?
A5: I have experience with multiple programming languages:
JavaScript and TypeScript for frontend and full-stack development
Java (with a focus on core concepts and OOP principles)
Python for backend development
Flutter for mobile app development
Angular and React for web development
Professional Development
Q6: What steps are you taking to continue your professional growth?
A6: I'm currently pursuing my Java SE Developer certification and taking Core Java
Programming courses. I'm also preparing to obtain a TOEIC certificate above 650, which
demonstrates my commitment to continuous learning and improving my technical and language
skills.
Q7: How do you stay updated with the latest technologies?
A7: I actively work on personal projects using different technologies, which helps me stay
current. My recent projects showcase my ability to learn and implement new technologies like
facial recognition, advanced filtering, and various web development frameworks.
Soft Skills and Methodology
Q8: Can you describe your experience with Agile methodologies?
A8: During my Flutter Developer internship, I participated in Agile Scrum processes, including
sprint planning and estimation. This experience taught me the importance of collaborative
development, iterative progress, and effective team communication.
Potential Behavioral Questions
Q9: Tell me about a challenge you faced during a project and how you overcame
it.
A9: During my Online Fundraising Website project, implementing secure facial recognition
authentication was technically challenging. I researched FaceNet technology, studied its
implementation, and successfully integrated a secure authentication mechanism. This
demonstrated my problem-solving skills, ability to learn new technologies, and commitment to
creating robust solutions.
. Yêu cầu làm rõ câu hỏi
Nếu câu hỏi chưa rõ ràng, bạn có thể hỏi lại để có thêm thời gian suy nghĩ:
🔹 "Could you clarify what you mean by that?" (Anh/chị có thể làm rõ ý của câu hỏi không?)
🔹 "I'm not sure I fully understand the question. Could you elaborate?" (Tôi không chắc mình hiểu rõ câu
hỏi. Anh/chị có thể giải thích thêm không?)
2. Thừa nhận bạn chưa biết nhưng thể hiện sự sẵn sàng học hỏi
🔹 "I haven't encountered that before, but I’d love to learn more about it." (Tôi chưa từng gặp điều này
trước đây, nhưng tôi rất muốn tìm hiểu thêm.)
🔹 "That's an interesting question. I don’t have an exact answer at the moment, but here’s how I would
approach it…" (Đây là một câu hỏi thú vị. Hiện tại tôi chưa có câu trả lời chính xác, nhưng tôi sẽ tiếp cận
nó theo cách sau…)
3. Nếu câu hỏi về công nghệ hoặc khái niệm bạn chưa biết
🔹 "I haven't worked directly with that technology, but I have experience with something similar, such as
[công nghệ tương tự]. Would you like me to explain my experience with that?"
(Tôi chưa làm việc trực tiếp với công nghệ đó, nhưng tôi có kinh nghiệm với một công nghệ tương tự,
như [công nghệ tương tự]. Anh/chị có muốn tôi chia sẻ về kinh nghiệm đó không?)
🔹 "I am not familiar with that specific concept, but given my background in [lĩnh vực liên quan], I believe
I can learn it quickly."
(Tôi chưa quen với khái niệm cụ thể đó, nhưng với nền tảng của tôi trong [lĩnh vực liên quan], tôi tin
rằng mình có thể học nhanh chóng.)
4. Nếu bạn cần thêm thời gian suy nghĩ
🔹 "That's a great question. Let me take a moment to think about it." (Đó là một câu hỏi hay. Cho tôi một
chút thời gian suy nghĩ.)
🔹 "I’d like to think about this carefully. May I take a few seconds?" (Tôi muốn suy nghĩ kỹ về điều này. Tôi
có thể dành vài giây được không?)
Việc giữ bình tĩnh và thể hiện thái độ tích cực sẽ giúp bạn ghi điểm, ngay cả khi không biết câu trả lời.
Nếu cần, mình có thể giúp bạn luyện tập cách trả lời một số tình huống cụ thể! 🚀
4o
You said:
các câu hỏi phỏng vấn tiếng anh liên quan đến OOP
ChatGPT said:
Dưới đây là một số câu hỏi phỏng vấn bằng tiếng Anh liên quan đến Object-Oriented Programming
(OOP), kèm theo gợi ý cách trả lời:
1. What are the four pillars of OOP? (Bốn nguyên tắc chính của OOP là gì?)
✅ Gợi ý trả lời:
"The four main pillars of OOP are Encapsulation, Abstraction, Inheritance, and Polymorphism."
🔹 Encapsulation: Wrapping data and methods into a single unit (class) and restricting direct access.
🔹 Abstraction: Hiding implementation details and exposing only the necessary functionalities.
🔹 Inheritance: Allowing one class to inherit properties and behaviors from another class.
🔹 Polymorphism: Allowing a single interface to be used for different types, enabling method overriding
and overloading.
2. What is the difference between abstraction and encapsulation? (Sự khác nhau
giữa abstraction và encapsulation là gì?)
✅ Gợi ý trả lời:
"Encapsulation is about restricting direct access to data by wrapping it inside a class and providing
controlled access via methods. Abstraction, on the other hand, is about hiding unnecessary details and
showing only relevant information to the user. Encapsulation is implemented using access modifiers
(private, protected, public), while abstraction is implemented using abstract classes and interfaces."
3. Can you explain polymorphism with an example? (Bạn có thể giải thích về đa
hình và đưa ra ví dụ không?)
✅ Gợi ý trả lời:
"Polymorphism allows a single interface to be used for different types. There are two types: method
overloading and method overriding. In method overloading, multiple methods have the same name but
different parameters. In method overriding, a subclass provides a specific implementation of a method
that is already defined in the parent class."
💡 Example:
java
CopyEdit
class Animal {
void makeSound() {
[Link]("Some sound...");
}
}
class Dog extends Animal {
@Override
void makeSound() {
[Link]("Bark!");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog();
[Link](); // Output: Bark!
}
}
4. What is the difference between an abstract class and an interface? (Sự khác
nhau giữa abstract class và interface là gì?)
✅ Gợi ý trả lời:
Feature Abstract Class Interface
Can have both abstract and concrete Only abstract methods (before Java
Methods
methods 8)
Fields Can have instance variables Only constants (static & final)
Multiple Inheritance Cannot support multiple inheritance Can implement multiple interfaces
Constructor Can have constructors Cannot have constructors
💡 Example:
java
CopyEdit
abstract class Animal {
abstract void makeSound();
}
interface Pet {
void beFriendly();
}
5. What is method overloading and method overriding? (Method overloading và
method overriding là gì?)
✅ Gợi ý trả lời:
Method Overloading: Same method name, different parameters (Compile-time polymorphism).
Method Overriding: A subclass provides a new implementation of a method inherited from a
parent class (Runtime polymorphism).
💡 Example:
java
CopyEdit
class MathUtils {
int add(int a, int b) { return a + b; } // Overloaded method
int add(int a, int b, int c) { return a + b + c; }
}
class Parent {
void show() { [Link]("Parent class"); }
}
class Child extends Parent {
@Override
void show() { [Link]("Child class"); } // Overridden method
}
6. What is the difference between composition and inheritance? (Sự khác nhau
giữa composition và inheritance là gì?)
✅ Gợi ý trả lời:
"Inheritance represents an 'is-a' relationship, while composition represents a 'has-a' relationship.
Inheritance can lead to tight coupling, whereas composition provides better flexibility by allowing objects
to be composed of other objects."
💡 Example:
Inheritance (Dog is a type of Animal):
java
CopyEdit
class Animal { }
class Dog extends Animal { }
Composition (Car has a Engine):
java
CopyEdit
class Engine { }
class Car {
private Engine engine; // Car has an engine
}
7. What are access modifiers in Java? (Các access modifier trong Java là gì?)
✅ Gợi ý trả lời:
"Java has four access modifiers: private, default, protected, and public."
Modifier Scope Example
Private Within the same class only private int age;
Default Within the same package int age;
Protected Within the same package + subclasses protected int age;
Public Accessible everywhere public int age;
8. What is the difference between a class and an object? (Sự khác nhau giữa class
và object là gì?)
✅ Gợi ý trả lời:
"A class is a blueprint or template for creating objects, while an object is an instance of a class. A class
defines properties and behaviors, whereas an object holds actual data and executes behaviors."
💡 Example:
java
CopyEdit
class Car { // Class
String brand;
void drive() { [Link]("Driving..."); }
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car(); // Object
[Link] = "Toyota";
[Link]();
}
}
9. What is a constructor in Java? (Constructor trong Java là gì?)
✅ Gợi ý trả lời:
"A constructor is a special method in Java that is used to initialize objects. It has the same name as the
class and does not have a return type."
💡 Example:
java
CopyEdit
class Person {
String name;
Person(String n) { // Constructor
name = n;
}
}
10. What is the difference between static and instance methods? (Sự khác nhau
giữa static method và instance method là gì?)
✅ Gợi ý trả lời:
Static methods belong to the class and can be called without creating an object.
Instance methods belong to an object and require an instance to be called.
💡 Example:
java
CopyEdit
class MathUtils {
static int square(int x) { return x * x; } // Static method
int add(int a, int b) { return a + b; } // Instance method
}