Tell me about your last project

本文探讨了在软件工程师面试中被问及上一个项目时的有效回答策略。建议从解决问题的角度出发,简洁地介绍项目背景和个人贡献,并关注面试官的需求反馈。

I am a software engineer, I get confused what to answer, where to start, when I am asked this question: "Tell me about your last project?"

I usually start with the problem description, then stating the solution as the project. Project architecture, one line intro about all the modules. By this time the interviewer looses interest or very desperate to finish quickly just wants me to jump straight to my module.

Listening 2-3 sentences they guess and ask me 2-3 direct technical questions before wrapping up. I find it difficult to answer these questions as, they had not allowed me to fully explain the modules. So I feel they might assume me as a person who has insufficient knowledge about the project or my module.

What's the best way to explain a big project within few minutes. And how would I know what they are looking for? ( Should I just limit my explanation limited to their requirement?)

share improve this question
 
4 
Are you selling your project or yourself? If you are selling your project, it might make sense to introduce all the modules. If you are selling yourself, it probably makes sense to jump straight into your module. –  emory May 28 '13 at 22:47

4 Answers

up vote 43 down vote accepted

Yes, you should just limit your explanation to their requirement. As an interviewer, I am asking this question not to get the full picture of the project, but simply to understand enough to ask you follow-up questions. That's the real point of this question: to see whether you can explain the "why did you do x instead of y?". It's in those follow-up questions that you get to show that you really understood the full project. If you try to show all your understanding up-front, you will get bored looks, as you have already encountered. Also, explaining it up-front only shows that you've been able to memorize a script, not that you really understood the project.

Be especially careful of this with phone interviews, as you will not be able to read their body language. I've performed lots of phone interviews where I asked a simple question and got a 5-minute monologue which I then had to try to interrupt tactfully. At a bare minimum, you should pause at spots and ask something like "would you like to hear more detail on that, or does that give you the basics of what you wanted to know?"

share improve this answer
 
1 
Welcome to The Workplace and nice answer! –  enderland  May 28 '13 at 22:32

Keep it short and sweet by trying to stick to the following points:

Planning implementation and achieving results

Describe the project, activity or event which you have worked on and taken through to a conclusion. Include your objective, what you did, any changes you made or assisted in implementing plans and state how you measured your success. 

Influencing, communication and teamwork

Describe how you have achieved a goal through influencing the actions and opinions of others (perhaps in a team context). What were the circumstances? What did you do to make a difference? How do you know the result was satisfactory? 

Analysis, problem solving and creative thinking

Describe a difficult problem that you have solved during this project. State how you decided which the critical issues were. Say what you did and what your solution was. What other approaches could you have taken? 

share improve this answer
 

"Tell me about your last project?"

I usually start with the problem description, then stating the solution as the project. Project architecture, one line intro about all the modules. By this time the interviewer looses interest [...].

Try this: 

  1. Short sentence on what problem your last project was solving

  2. If the architecture (or anything else) gave you bigger responsibilities or challenges that you overcame, mention them briefly here. As an interviewer, I wouldn't care that your project had six modules or what they were (I am not an interviewer).

  3. Speak about your activity/responsibility in the last project.

E.g.: My last project was adding a reporting module for an in-house data management system. I was in charge of loading all the wibbles and generating wibble-reports from the non-expired ones, in real time.

share improve this answer
Chapter 3: Introduction to Objects and Classes The Object-Oriented Paradigm Course: CS101: Java Language Programming Instructor: [Instructor Name] Date: September 22, 2025 Practical Session Objective Lab Goal: Refactor to an Object-Oriented Design Our goal is to stop using loose, primitive variables to represent our contact and instead create a proper Contact object. This is a foundational step in building professional software. Prerequisites: Java JDK 11 or higher installed. An IDE like IntelliJ IDEA or VS Code ready. Your MyContactManager project from the last lab. Final Result Preview: The console output will look exactly the same as before, but the underlying code structure will be vastly superior, organized, and ready for future expansion. Step 1: Create the Contact Class Blueprint First, we need to create the blueprint for what a "Contact" is in our application. 1. Goal: Create a new Contact.java file and define the state of a contact. 2. Instructions: 1. In your IDE's project explorer, right-click on your source folder and create a new Java Class. 2. Name the file Contact . This will generate Contact.java . 3. Inside the Contact class, declare the instance variables that every contact will have. These are the same variables that are currently cluttering up your main method. 3. Code Block (for Contact.java ): --- Contact Details --- Name: John Doe Age: 42 Phone: 555-1234 1 2 3 44. Expected Result: You now have two files in your project: MyContactManager.java and Contact.java . The code should compile without errors. Step 2: Instantiate a Contact Object Now that we have the blueprint, let's go back to our main application and create an actual contact from it. 1. Goal: In MyContactManager.java , replace the old primitive variables with a single Contact object. 2. Instructions: 1. Open MyContactManager.java . 2. Delete all the old variable declarations for the contact ( String firstName = "Jane"; , int age = 32; , etc.). 3. In their place, declare and instantiate a new Contact object. 3. Code Block (in main method of MyContactManager.java ): 4. Expected Result: Your main method is now much cleaner. Your code will no longer compile because the parts that used the old variables are now broken. This is good! We'll fix it next. Step 3: Set the Object's State Our contact1 object exists, but its instance variables are all empty ( null or 0 ). Let's fill them with data using dot notation. 1. Goal: Assign values to the instance variables of our new contact1 object. public class Contact { // Instance variables to hold the state of a single contact String firstName; String lastName; int age; String phoneNumber; boolean isFriend; } 1 2 3 4 5 6 7 8 public static void main(String[] args) { // Delete the old variables: // String firstName = "Jane"; (DELETE) // String lastName = "Doe"; (DELETE) // int age = 32; (DELETE) // ...and so on. // Create an object from our blueprint Contact contact1 = new Contact(); // Now we have a single variable, 'contact1', that holds all // the information about our contact. } 1 2 3 4 5 6 7 8 9 10 11 12 132. Instructions: 1. After the line Contact contact1 = new Contact(); , use the dot operator to access each instance variable and assign it a value. 3. Code Block (in main method of MyContactManager.java ): 4. Expected Result: The contact1 object in memory now holds all the data for John Doe. The code still won't compile because the System.out.println statements are broken. Step 4: Get the Object's State Finally, let's fix our print statements to read the data back from the object, again using dot notation. 1. Goal: Update the System.out.println statements to use the object's fields. 2. Instructions: 1. Find your old println statements that are showing compile errors. 2. Prefix each old variable name with contact1. to tell Java to get the value from the object. 3. Code Block (in main method of MyContactManager.java ): 4. Expected Result: All compile errors should now be gone! Your application is fully refactored. // ... after creating the contact object Contact contact1 = new Contact(); // Use dot notation to set the object's state contact1.firstName = "John"; contact1.lastName = "Doe"; contact1.age = 42; contact1.phoneNumber = "555-1234"; contact1.isFriend = false; 1 2 3 4 5 6 7 8 9 // ... after setting the object's state System.out.println("\n--- Contact Details ---"); // OLD: System.out.println("Name: " + firstName + " " + lastName); // NEW: System.out.println("Name: " + contact1.firstName + " " + contact1.lastName); // OLD: System.out.println("Age: " + age); // NEW: System.out.println("Age: " + contact1.age); // OLD: System.out.println("Phone: " + phoneNumber); // NEW: System.out.println("Phone: " + contact1.phoneNumber); 1 2 3 4 5 6 7 8 9 10 11 12 13 14Final Code and Verification Let's look at the final, refactored MyContactManager.java and verify that it works. 1. Goal: Run the application and confirm the output is correct. 2. Code Block (Complete MyContactManager.java ): 3. Expected Output: Success! The output is the same, but our code structure is infinitely better. Optional Challenge Task For Those Who Finish Early... 🚀 If you've completed the refactoring, this challenge will solidify your understanding of objects. Challenge: Create a Second, Independent Object 1. In your main method, create a second Contact object called contact2 . 2. Set the state for contact2 with completely different data (e.g., "Jane Smith", age 35, etc.). 3. Add println statements to display the details for contact2 after displaying the details for contact1 . public class MyContactManager { public static void main(String[] args) { // 1. Create an object (an instance) from the Contact class blueprint Contact contact1 = new Contact(); // 2. Set the state of the object using dot notation contact1.firstName = "John"; contact1.lastName = "Doe"; contact1.age = 42; contact1.phoneNumber = "555-1234"; contact1.isFriend = false; // 3. Get the state of the object using dot notation System.out.println("--- Contact Details ---"); System.out.println("Name: " + contact1.firstName + " " + contact1.lastName); System.out.println("Age: " + contact1.age); System.out.println("Phone: " + contact1.phoneNumber); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 --- Contact Details --- Name: John Doe Age: 42 Phone: 555-1234 1 2 3 4This will prove that contact1 and contact2 are two separate objects in memory, each with its own independent state, even though they were built from the same class blueprint. Q&A and Wrap-up Questions? Today's Most Important Lesson Organizing code into classes that model real-world concepts is the single most powerful strategy for managing complexity in software. We took a chaotic collection of variables and transformed it into a clean, intuitive structure. A Contact is now a "thing" in our program, just as it is in the real world. This is the foundation upon which all large-scale, professional applications are built. What's Next? Up Next: Protecting Our Objects Right now, our code has a major flaw. Anyone using our Contact class can do this: contact1.age = -99; contact1.phoneNumber = "this is not a phone number"; This is dangerous and leads to bugs! An object should be in control of its own data. Next Lecture: Chapter 4: Deeper Dive into Classes - Encapsulation We'll learn about encapsulation, a core OOP principle for data hiding and protection. We'll introduce private variables and public getter/setter methods to create robust, bug-resistant objects. 以上问题的答案是什么
09-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值