# Work Experience
1. [Self_Introduction](#Self_Introduction)
2. [Why Google](#Why_Google)
3. [Work in TSMC](#Work_in_TSMC)
4. [Work in P-Square](#Work_in_PSquare)
# Storys
* TSMC
* [New PIP mechanism (Collaboration)](#New_PIP_Mech)
* [Back up files with scripts (Problem-Solving)](#BackUp_Files_With_Scripts)
* [.NET migration (Unethical behavior)](#NET_Migration)
* P-Square
* [Misclassified images(Challenging project)](#Misclassified_images)
* [Auto Labeling Application (Problem-Solving)](#Auto_Labeling_Application)
* School works
* [Messed up project (Zigbee)](#Messed_up_project)
* [Meichu Hackathon (Leadership)](#Meichu_Hackathon)
# Behavior Questions
1. [What are your strength](#What_are_your_strength)
2. [What are your weaknesses](#What_are_your_weaknesses)
3. [Work_Under_Pressure](#Work_Under_Pressure)
4. [Personal Conflict](#Personal_Conflict)
5. [Salary Expectation](#Salary_Expectation)
6. [Where in five years](#Where_in_five_years)
7. [Why_software_engineer](#Why_software_engineer)
8. [What type of work environment do you prefer?](#Prefer_Work_Environment)
9. [Keys_Collaboration](#Keys_Collaboration)
10. [How to learn a new skill](#Learn_New_Skill)
11. [Prioritize tasks](#Prioritize_tasks)
12. [A time went above and beyond](#Went_above_and_beyond)
13. [Hard_decision](#Hard_decision)
14. [Mistake I made](#mistake_I_made)
15. [Chanllenge project (tight deadline)](#Challenging_Project)
# [Questions to ask](#Questions)
## Self_Introduction
- I’m Tim and currently I’m a graduate student studying in the Master of Engineering program (which focuses on IoT systems) at UCLA! I’m interested in full-stack development and building IoT applications. I've built some IoT application in school and also during my time interning at a startup. After graduating from the university, I worked as a full-time software engineer doing full-stack development using Java for a year at Taiwan Semiconductor Manufacturing Company. The reason why I quit the job and study abroad is that I want to be advanced and explore more opportunities.
## Why_Google
* I actuallly though a lot about why Google before the interview.
* First and foremost: I look at it from a user-perspective. I use Google search engine every day to look up any information I want. Also, I can't live without youtube. I use it for relaxing and entertainment everyday.
* There's a few specific items that I really like: strong ownership, never stop learning, and always want to make things perfect. I believe the culture is one important factor to make Amazon a great company.
* Lastly:
* I feel like my techniqal skills along with my passion could not only bring benefits to Amazon but also impact the world by creating great products.
* I'd happy to expand on any of these items, all of them get me excited about the opportunity to join Amazon.
## Work_in_TSMC
I’m responsible for developing the web services for the manufacturing execution system which is used for controlling the manufacturing processes. As for the tech stack, we use Java as the primary programming language. Spring Boot as backend framework, and Angular as frontend framework, and also we use IBM DB2 and Oracle Database to store and retrieve data. And deploy our product to the kubernetes.
Besides developing the manufacturing execution system, I had also done several projects. Such as
* designing and implementing the new proprietary information protection mechanism
* using Kafka to enhance 20% of the system performance
* reducing 90% human effort on backing up files by writing scripts.
At the time, I was in a team consisting of five people. And in order to finish all kinds of requirements, we should always work with not only team members, but also cross-departmental partners. So I think that working in TSMC, I’ve learned a lot of full-stack development and how to design a system based on user-requirements. Also, I’ve learned how to work collaboratively with others.
## Work_in_PSquare
* At that time, I worked independently developing a Real-time people-flow tracking system. Basically, this system was based on object detection. It would keep streaming inside a big area, and send the images back to the server, and the server would do object detection to monitor how many people are there and keep track of their movements.
> Yolo v2 -> Tiny Yolo, improving system performance by seven times
> Raspberry pi 3 -> IP camera, connect it by IP address, save cost
## New_PIP_Mech
> Design brand new proprietary information protection mechanism for MES
* Situation:
* The company decided to design a brand new proprietary information protection mechanism.
* The company form a 10 people team with cross-departmental members
* Task:
* Implement REST APIs for the system to control everyone’s permission to access confidential information.
* Collaborate with others.
* Action:
* Beginning: Did research on the old mechanism, analyze the downside of it, and figure out why the mechanism didn’t work for now.
* Have meetings with team members to design the workflow and architecture
* Design and implement the web services
* Present our progress to CTO in weekly meeting
* Result:
* The project was successful.
* Met all requirements, and being more flexible
* Being nominated for the best project of the year
* Learned:
* Improved my technique skills of designing Web service
* Don’t be afraid of making mistakes, asking questions
* How to collaborate with cross-departmental members efficiently, such as make slides, charts
* Follow up Questions:
* How to collaborate:
* Build domain knowledge
* Express myself clearly
* Be open minded
* Do you want to know more details about it? I would love to share everything with you
## BackUp_Files_With_Scripts
* Problem:
* My manager asked me to backup the files that generated by different applications
* However, log files were generated in an unorganized way.
* Take a lot of time to find the files and restore them manually
* Action:
* Propose my manager with the solution that writing script
* Figure out where each application store its log files
* Write the script to automate the process
* Result:
* Save 90% of human effort doing trivial things.
* My manager was very happy with the result.
## NET_Migration
* Unethical behavior
* Problem:
* When working at TSMC, there's a big project that I need to finish in a short time. However, due to the reorganization, we were lack of resources.
* It's impossible to finish it before the deadline. So my manager suggest me to upload something fake to pretend that i finish the project. And I will upload the real one before somebody find out.
* Action:
* In my opinion, it would be unethical.
* I talked to my manager directly, tell him that it's somehow my fault that I couldn't finish it on time, and I showed my empathy by saying that I could tell how much pressure the higher level managers had put on you, so you had to make this tough decision.
* Here's my solution
* I explained to others that our team was going through a hard time now, so we need more time to do this project.
* I suggested that we divide the project into three phases
* The operation team can start testing while I'm also building the rest of the system.
* It's easy for everyone to track the progress
* Result:
* I was happy that everyone accept my solution. And eventually, I finish the project before the final deadline we set.
* Learn:
* It's important to be a person with integrity. Whenever facing something is unethical, we need to stand our ground and figure out how to solve the problem.
## Misclassified_images
* Problem:
* This is a problem when I was implementing the people flow tracking system at P-Square
* This is how it works, it would received a series of frames and the system would recognize everyone, and trace their path.
* When I was tracing the path of people, the path would be interrupted if the system didn't detect the person in a single frame within a sequence of frames.
* Action:
* At first, I thought that the reason why the person was deleted is because it was not being recognized. So if I train the model with higher accuracy, the problem would be solved.
* However, it turns out that the model is impossible to get 100% accuracy. So this method didn't work out.
* After that, I came up with the second solution, since it's impossible for a person to reach somewhere far away in a short time, so I can assume that for the same person, the position of him in consecutive images would be close. So what I did is to change the algorithm, I would only delete the person if the consecutive three images didn't recognize him.
* Result:
* The result was successful, it not only improve the model accuracy.
* Has higher fault tolerance. Since if we assume the error rate is 0.1, then the probability of three consecutive images are all fail to recognize the person would be 0.1 to the power of three
## Auto_Labeling_Application
* Problem:
* I was labeling images for training object detection model
* What I need to do is to find the target in the image and label it
* Takes a lot of time when dataset is very big
* Action:
* Write a program to make use of pre-trained model
* Label images automatically
* Propose CEO with the solution
* Result:
* Save 80% of time on data preprocessing.
* My manager was very satisfied with the result.
## Messed_up_project
* Problem
* A final project for Embedded System last quarter
* We decided to implemented it with Zigbee.
* However, we didn't do enough research on Zigbee before making the plan.
* And the difficulty is way beyond our expectation because the implementation would be very low-level
* so even the deadline is coming close, we still stuck at figuring out how to use Zigbee.
* Action
* We got to figure out how to do our porject in another way but achieving the same goal.
* So we changed the communication protocal to Wi-Fi
* Simulate the result using Zigbee
* Result
* I was worried about the project at the begining. Since we didn't follow our propsed method.
* However, it turns out the professor loves our project.
* He was happy that even we changed the plan, we still completed the project. And I got an A in the end.
* Learn
* Before doing a project, we have to dive deep to make sure our methods are feasible.
## Meichu_Hackathon
> Leadership style: **Democratic**
> I would say I'm a democratic leader who ask for input and considers feedback from my team before making a decision.
> Because it could make team members feel their voice is heard and their contributions matter.
* Problem
* When I was in my senior year, I formed a team with the people I trust and smart to participate meichu hackathon.
* The competition released several topics before it start.
* Action
* Before the competition:
* Held meetings to ask everyone vote for which topic they prefer and why
* Try to understand everyone's idea and to resolve the different opinions
* In the end, we as a team had the same goal to fight for
* During the competition:
* I put everyone on the position based on their strength. Such as someone is good at ML, then he'll do voice recognition.
* Every two hours, we would had a quick meeting to make sure everything was on schedule, if it's not, we would support each other if they need.
* Result
* We won the third place
* Most important of all, every team members contributed their best to this.
* And they said they are very happy to work with me.
## What_are_your_strength
* Passionate about coding, Responsible person, a great team player, eager-to learn, and love to help others.
* Take my work at TSMC for example, I was working in a small team which only had five people. However, the system we build is for all factories. It means that our work impacts a lot. So our work load is really heavy, everyone is so busy to teach me. I had to do research and projects mostly on my own. As a result, I have learned how to work efficiently and collaboratively with my colleague.
* And before I left TSMC, my manager told me that I really did a great job, saying that he was impressed that I’m always able to deliver good results in a short time. And wish me a better future.
## What_are_your_weaknesses
* Basically, we all have weaknesses. As for me, I would say that it’s hard for me to strike a balance between work and life.
* For example, I love coding and love to be a software engineer. When I was working at TSMC, even when I was exhausted after work, I still took courses online such as coursera and Udemy, even on weekends.
* So this is the part that I think I should improve. I should spend more time with my family and hanging out with my friends, so that I can relax and be reenergized for work.
## Work_Under_Pressure
* Situation
* That was the time I working at TSMC
* Due to the organizational restructuring, I became the senior engineer in the team although I had less than one year of experience
* I had to lead the project to merge two systems that had been ran seperately for more than ten years
* Whenever someone has any question, I become the one they are look for
* Task
* Things need to be done
* Code Merge
* Documentation
* Deploy methods
* As a senior, I had to figure out how all of these work
* Action
* Constantly held meetings and seeking other senior engineers to resolve problems when merging systems
* Report the result to my manager, and coach other new comers
* Result
* The project went successfully in early two phases.
* My manager was satisfied with the foundation I built for the project.
## Personal_Conflict
* Problem:
* Assigned to build a project with a senior engineer
* I was depending on his requirement document
* But he constantly wouldn’t be able to get it to me on time.
* Impact my ability to do my job in time
* Action:
* I respected him, so I took the concern straight to him to talk it through.
* I first showed my empathy and said that I know you had so much to work on right now, and I can tell you are working hard.
* Then I was direct about how he was affecting me.
* I said, I want to discuss the deadline we couldn’t meet at the first time. If you don’t give me the document on time, it delays the entire production process. How can we ensure that wouldn’t happen in the future
* Result:
* I was nervous about the conversation, but he opened up to me about how he has always tried to chase down the information for the document.
* So we came up with a solution that we had meeting with the customer directly, which could help us come up with the solution efficiently.
## Salary_Expectation
* Well, I have done some research about the average salary in California prior to the interview. It’s about 70,000 to 120,000 per year. On that basis, I would take 90,000 per year.
* Although I think it’s a fair salary range for me or maybe I could even get higher, I know that it’s our first interview, and you don’t know me well, so I’m looking forward to having more opportunities to prove my value.
## Where_in_five_years
* Before I answer this question, I would like to go through my prior experiences to talk about why I am here pursuing a master degree in UCLA. Before I got into one of the best universities in Taiwan, my academic performance was so bad. And before attending the university entrance exam, I realized that I could only succeed by studying hard. So I studied day and night for a year, and eventually got into NTHU, where I could never imagine. After getting into NTHU, I always feel that I’m not good enough, I didn’t belong here. So I worked so hard, and it turns out I could get high scores and have good academic performance compared to others. And just like I mentioned in the beginning, I quit the best company in Taiwan and came here to study. So what I want to say is that I could never imagine where I would be, but I know exactly one thing is that I would always be better, go to a better place. If there’s a better place and could make me grow, that is the place I would be in five year.
## Why_software_engineer
* The reason why I want to be a software engineer is simply because I am passionate about it. And I love to solve problems logically, systematically, analyze the problem and find out the root cause. Moreover, this is the job that gives me a sense of achievement. I believe people can only succeed when doing what they love.
## Prefer_Work_Environment
```
1. Emphasize flexibility
2. Say what you like about the culture
```
* Ex1:
* I've worked in a variety of environments. From high pressure to casual and from highly-collaborative to having to working on my own.
* When I was working as an intern at P-Square, so I basically working on the project independently since it's a startup company. On the other hand, when I was working at TSMC
* I adapt well to most.
* I'm not familiar with the environment is like here. SO could you please tell me a bit more about it?
* Ex2:
* From everything I've read about the company, I discovered that your organization would be fast paced, high-achieving, and innovative. I thrive in those kind of environments.
* Does that match up with the way you would characterize the environment
## Keys_Collaboration
1. Meet Your Deadlines. To earn your coworkers' goodwill, you have to be reliable. ...
1. Be Open-minded. ...
1. Appreciate Other People's Work Styles. ...
1. Adapt Quickly. ...
1. Avoid Office Politics. ...
1. Focus on the Team's Goals. ...
1. Celebrate Your Peers' Successes. ...
1. Be a True Team Player.
## Learn_New_Skill
1. First: Learn from basics
* Online resources
* Documentations
2. Second:
* Practice
4. Third:
* Validate that I'm on the right track
Example:
* Problem:
* When I first started writing product documentations, I found them hard to wrap my head around.
* Action:
* But I knew this was a valuable skill to have, so I spent a lot of time studying good product documentation and different styles for writing them
* Also, I read the previous documentation written by seniors.
* Result:
* At first it was hard work, but with continued practice it eventually became second nature.
## Prioritize_tasks
* To ensure everything I am responsible for gets completed on time and to the high quality. I use several steps for managing and prioritizing multiple, time sensitive tasks.
1. Start my week with a todo list of everything I must complete each day.
2. I would prioritize each task in order of priority based on company's business. My todo list is always flexible and I will revisit it often to keep it updated.
3. I always utilize a flexible and adaptable approach to my work. This means I can easily switch between priorities if needed and I am always prepared to stay behind late to get things down.
## Went_above_and_beyond
* Stituation:
* When I was working at TSMC, everyone in our team had to take turns to stay on call for one week.
* There's a time that my colleague called me at 2 am since the production process was stucked since the system was crashed, which was very serious.
* Action:
* I woke up at the midnight, and rushed to the company to help him out.
* I could tell that he was so nervous and didn't know what to do.
* First, I calmed him down by telling him that I got your back.
* After that, we looked at the log files and traced the code together.
* Result:
* We solved the problem, and he appreciated what I did for him. And we went for breakfast together in the end.
* Learn:
* I was glad that he called me, because it means that he regarded me as a trustworthy and reliable person.
* I know that it's his duty to solve the problem independently. However, I knew that he wouldn't call me if he could solve it on his own. Moreover, if I were him, I would also hope that someone could help me out in this kind of situation.
## Hard_decision
* Situation:
* It can look back at the time that I decided to quit the job at TSMC and came to united states to pursue my master degree.
* What I struggled with is that do I really need to go to united states to study my master degree, of course I might have a chance to explore more opportunities.
* But I loved what I had, I love my work, my living environment, and my country. Also, my family and my friends are all here.
* However, I feel like the world is so big, and I really want to explore the world when I'm still very young.
* So I told myself, even if I don't really fit in, I can come back, and at least I try.
* Action:
* I decided to step out of my confort zone.
* I keep telling myself that I need to trust myself. I'm always keeping a faith that I want and I will become outstanding.
* Result:
* Now, I'm still exploring the new environment. But everything is getting better and better.
* I believe I will success in this journey. And I know when I am old and look back to this decision, I will be proud of myself.
## mistake_I_made
* First and foremost, I don't think that there's any decision could be considered as a truly bad decision. Even if it seems to be a bad decision at that moment, I would always be positive, and strive to work things out. I believe that eventually I could grow and gain a lot.
* Situation:
* It's the time I need to choose my major when I entered college. I chose CS simply because I love to use my laptop to play games and watch videos.
* So I felt like studying CS means that I would have a lot of time using my laptop doing something fun.
* It turns out I did use my laptop a lot. However, I was coding all the time and it was so hard for me at the first semester.
* I felt so frustrated.
* Actions:
* I told myself to stay positive.
* At the next semester, I worked harder than before, and I started to build some applications which excites me.
* As time went, I started to love coding.
* Result:
* Now, I am so happy that I choose CS as my major. Coding is so fun, and I love it.
* Learn:
*
## Challenging_Project
* Problem:
* When working at TSMC, there's a big project that I need to finish in a short time. However, due to the reorganization, our team were lack of resources, so I had to finish all of it on my own.
* Moreover, I just joined the company no more than six months, I didn't have much domain knowledge.
* Action:
* First and foremost, I started to read documentations, online resources, and ask senior engineers questions to anaylze the project to understand it comprehensively.
* Secondly, I broke down the project into small pieces and devided them into three phases. So, the operation team could start testing as soon as I finished the phase one. As a result, we could speed up the process. Also, it would be easy for everyone to track the progress.
* Result:
* I completed the project on schedule, and my manager was surprised that I not only finish the project on time but also with high quality.
* Learn:
* I think I've learned how to manage my time wisely, tips to do big projects, and also work under high pressure.
## Questions
1. Can you explain the job in your own words
- see what requirement they focus on
2. What kind of additional responsibilities can be gained over time in this role?
3. What do you like most about the company?
4. What do you want this role to accomplish in the first 90 days?
5. How do you measure success for this role
6. What have been the biggest challenges for this role
7. Ask about the interviewer
8. I did a little research, and saw that you've been at the company for X years.
* How has your role evolved?
* How has the company evolved during your time here?
9. Why did you join the company and is the experience what you explain expected?
9. Ask about the team
- what are the team dynamics like?
- What're the most challenging part of the team?
- What kind of skills (programming language/domain knowledge) are necessary to this position?
- What is the work style/culture of the team?
- How does our work being assigned?
- Technical questions about the platform, programming languages etc.
- What's the career path or growth for the new comer of the team?
- How's the work life balance?
- What's the age structure/distribution of the team