Interview for Applicants

This research requires that every applicant be interviewed by two or three current members.

Why does this team interview applicants?

Any organization exists for a purpose. The organization can succeed if the members can work together toward the common goals. The organization fails if the members do not understand the purpose of the organization or cannot work together. Interviews are one of the methods to help determine whether people interested joining the organization is ready to work together with existing members toward the common goals.

A research group is fundamentally different from a classroom. A research group aims to solve research problems that can help humanity. A classroom is usually an inclusive environment: most instructors allow auditors. In contrast, a research team is a “privileged” environment and only selected members can participate. Many reasons make research team restrictive, for example,

  • The members in the team use the facilities that are purchased using research fund.

  • The members must have ability to understand and improve state-of-the-art solutions.

  • The members are inventing a new solution that may lead to a patent. Before this patent is filed and granted, the members must protect the intellectual properties.

  • The members are writing a research paper and everyone must be qualified to contribute to the content.

If you like sports, you need to ask yourself a simple qustion: “Am I ready to join a professional team?” This research team is professional because the team solves research problems that nobody in the world has solved yet. If you are not ready to contribute, you will not enjoy the experience and current team members cannot work with you.

This is a research team. You come to solve research problem. You do not come to learn. If you want to learn, go to take courses or read books.This team does not accept anyone that wants to join and learn, without contributions to solving research problems. This team accepts only the people that wants to solve research problems.The purpose of interviews is to help applicants and current membersevaluate whether the applicants are ready to contribute.

What is an interview?

An interview is a two-way communication: An organization wants to determine whether an applicant should join the organization. Meanwhile, this applicant also evaluates whether this organization is worth the time and efforts. An interview usually evaluates three aspects:(1)Personality, honesty, and integrity (2)Communication skills, (3)Technical skills.

If an applicant is not ready to join the group, it is possible that this person can join later and contribute.This research team holds honesty and integrity as the highest requirements.If an applicant is not honest, this team will never accept the applicant. Communication and technical skills can be acquired. Honesty and integrity cannot be compromised.

Understand this Team and Expectations

This research team’s mission is tocreate leaders.

This research probject’s mission is to discover, present, and analyze real-time data from worldwide sources.

Before an interview, please make sure you understand the differences between students and researchers. If you want to be a student, not a researcher, do not join this team. Don’t waste your time.

Please read the sample interview questions.

If you are unable to answer any questions, you are not ready to join this group yet. Please come back later. Joining a group before you are ready means you are going to waste time.

This is the grading guide for new members. One of the most important differences between “student thinking” and “real world” is that

No organization in the world would ask you to join and learn.

You join an organization to contribute and solve problems.

If you cannot solve problems, the organization does not need you.

An organization would invite you to join because the members in the organization believe that you would be able to contribute to the organization. A research group needs to solve problems.  If your only purpose to join a research group is to learn, you will soon be ask to leave.

You will probably learn many technical skills so that you can contribute. However, always remember thatyour purpose in this research group is not to learn. Yourpurpose is to contribute.

Please watch the videos in Research Advice.


One of the most important difference between doing class homework and research is the need of “team thinking”. You are part of a team and your must contribute to the team. Many students make significant progress in their computers but they do not share what they have done with the team. As a result, whatever they have done is restricted to themselves.

What does it mean sharing work with the team? At the minimum, each member should document contributions

Document Your Work

You need to clearly document everything you want to do, you have done, and the results. One of the most common mistakes when students start doing research is that “student thinking”: as long as I have learned, I don’t need to document. This is wrong.

You are responsible explaining to the other group members that you are doing. Your document must provide enough details so thatother people can reproduce your work.

Checklistof skills needed for new members.

Set up Development Environment

It is recommended that you create a Linux virtual machine for the development environment. A virtual machine allows you to experiment different settings (such as different versions of software packages) without affecting your real machine. You have several options for creating virtual machines. One of them isVirtualbox. It supports Windows, Mac, and Linux.

Learn git

A new member needs to learn many tools for communication and collaboration. One of the most important is git and the GitHub platform.

  1. Please create an account in github. Your account should include your first name and last name (no exception).

  2. Upload your photograph to github.

  3. Do not create any funny namethat is different from your real name. This is a large team and nobody has time connecting a funny account name with the real person.



George, add info on distributed workflows.

Please understand how to use branches and merge correctly. There are three types of branches

  1. Master branch. It is used to release software. It should be the most stable version.

  2. Development branch: It should contain everything in the master branch and additional features. It should be usually stable. This branch serves as the staging area for integration tests. This branch should not be too far ahead of the master branch. After a (or a few) feature is added and tested, this branch and the master branch should merge and the new feature (or features) should be released.

  3. Feature branches: These branches are created to adding new features. Each feature branch should have a short life-span: a branch is created for a feature, the feature is tested, and then the branch is merged into the development branch.

Please understand that the purposes of the branches are to stage changes into the master branch. Each branch should last only a few days. A common problem among students is that they do not merge quickly. As time passes, the differences among branches become greater and the chances of merge conflict increase. If a branch is not merged within two weeks, the branch may have too many conflicts and cannot be merged. As a result, the branch has to be abandoned and all efforts making that branch is lost.

Learn Python

You can find many tutorials online. This isan example. If you want practice problems, Consider to solvethese problems _using Python. If you want to understand objects, please watchmy lectures for ECE 30862(called ECE 462 earlier).

Learn OpenCV (for Image Team)

If you are in the image team, please learnOpenCV.

This is a public document.

This document is provided to people that intend to join Dr. Yung-Hsiang Lu’s research group.

A candidate is expected to read this document before an interview.

Sample Interview Questions

  1. Why is the document written?

A. The purpose of this article is to help the students that are interested joining Dr. Yung-Hsiang Lu’s research group.

You have already learned one important lesson from the first two sentences: before you do something, identify the reasons why you want to do it.

An interview is not a “test”. Instead, an interview is an opportunity for people (interviewers and interviewees) to know each other. If a student does not know the answer toanyquestion in this document, it is advisable taking relevant courses or reading relevant books before contacting Dr. Lu.

Before you join Dr. Lu’s group, ask yourself why you want to join the group.

Some students want to join a group but their background does not match the research topics investigated by this group. Mismatch does not mean anything negative to the candidate’s knowledge, talent, or skills. A great baseball player may be terrible in cooking. An inspiring speaker can be terrible playing chess. Different people have different talents. This document serves as a reference for students to evaluate whether Dr. Lu’s group would be a good match.


You should never lie in an interview.

Interviews before joining a research group

Why does an organization have an interview before accept a new member? An obvious answer is “to ensure the qualifications of the new member”. This is only partially correct. In reality, interviews are bidirectional:

  1. The organization wants to know whether the candidate would succeed in the organization.

  2. The candidate wants to know whether the organization would be a good fit.

The organization’s representatives (i.e., interviewers) should appreciate the candidate’s (i.e., interviewee) interests and time. The candidate should also appreciate the interviewers’ effort and time. Some people are new to workplace and treat interviews as a hostile encounter; the reality is the opposite. The interviewers and the interviewee are in fact collaborative because they have the same goal: finding the right match of the candidate and the organization. Interviewers determine whether the candidate has the right knowledge and skills for the organization. The candidate determine whether this organization would be the right place for build a career.

An interview would be a good indication what types of problems are the organization’s top priorities. In many cases,  the organization has resources (such as salary) that are desirable to the candidate. The candidate, however, must resist the temptation of accepting an offer for the sole reason of financial support. Joining a wrong organization can significantly hurt one’s career development.

It is also important to know the people before joining a group. Each organization has its unique culture and it is important for the candidate to understand the expectations. It is usually difficult changing an organization’s culture. Instead, a new comer almost always has to adjust to match the organization’s culture.

Dr. Lu’s research group includes people from different countries and fluent English is needed for communication. If you wish not to speak English, this group would not be a good fit.

It is always advisable to know the organization as much as possiblebeforeeven initiating communication. Many people send the same email to hundreds of people and hope one of them gets lucky. This is unlikely to pay off. Before contacting a professor, it is better to know this professor’srecentwork. Read some papers published by this professor and imagine whether this type of project would be exciting. Please notice the word “recent”. Due to many reasons, professors’ projects may change. What a professor did ten years ago may not correctly reflect this professor’s recent work. It is also helpful to know what courses the professor teaches. These courses often serve as the baseline of the professor’s research projects. Before contacting a professor, it is better to know the materials in these courses.

Even though most students join research groups to learn and learning is likely part of the experience, “learning” should not be the main purpose of any research project. Research groups are looking for people that cansolve research problems. A person that “learns a lot” without any contribution to solving problems is not helpful to the group and, thus, is undesirable to the group. Before joining a group, it is important to understand the differences.

Interview is not an oral exam

Many students think interviews are oral exams—interviewers ask questions and interviewees answer the questions. This is incorrect. An interview is interactive. An interviewee should also ask questions back. To ask meaningful questions, an interviewee should study the characteristics of the group in advance. Some students think interview questions are “fill in the blank” and provide short answers, without much explanation. Such an interviewee is “passive”: responding to questions without deeper thought. Such an attitude would be considered negative. It is advisable to dig deeper by providing more insightful information. It is perfectly reasonable for an interviewee to ask back “Why do you ask me this question?”

Do not intend to prepare an interview by memorization. Good interviewers do not ask memorization questions. Instead, they ask questions that require thinking. It is acceptable to say, “I don’t know.” and then ask the interviewer to provide more information and guidance toward the answer. A common mistake by students is to provide lengthy explanation without answering the questions. Some students can take several minutes without giving any definite answer. Why? They are afraid giving wrong answers. This is a bad attitude. It is better to answer the question and then explain the reason of the answer. Interviewers want answersbeforeexplanation. For a “Yes-No” question, answer “Yes” or “No” first and then give the explanation.

Honesty is extremely important.An interviewee should never lie.If an interviewee does not know the answer, it is acceptable to say, “I don’t know the answer.” The interviewee should not pretend to know the answer and say meaningless things. After admitting not knowing the answer, an interviewee can try to answer the question through reasoning. “I don’t know the answer but I think it should be …because…” The “because” part is very important.

Joining Yung-Hsiang Lu’s research group

Dr. Lu’s research is computer systems. He does not conduct research in the following topics: device physics, laser, optics, electric motor, hybrid vehicles, renewable energy, mix-signal circuits, and many other topics. Reading his recent papers (at least the titles) is a good way to understand his research topics. Students in his group should have good programming skills. The following are sample questions for interviews to join his research group.

These interview questions emphasize understanding, thinking, and creativity,not memorization. “Why” is much more important than “what” and “how”.  If you do not know the answers, explain how you would find the answers.

Communication and Team Interaction


Communication and interaction is more important than any technical skill. If you cannot communicate, it does not matter what programming languages or algorithms you know.

Do you understand that participation in discussion is extremely important in a research project?

When you do not understand the content of a discussion, do you ask questions or keep quiet? If you prefer silence, you are not ready to join a research project.

How do you respond to discussion and critique?

Do you think using jargons and acronyms to ensure that nobody can understand you would make people believe that you are knowledge, smart, and superior?

How would you respond when someone tells you that you have made a mistake?

When you disagree with someone, what would you do?

When someone disagrees with you, what would you do?

What would you do when you cannot finish a task that is assigned to you?

What would you do when you finish a task early?

What would you do if a team member cannot finish an assigned task?

How would you inform team members your progress or problems you encounter?

What would you do if you think an assigned task is not worth doing, or should be done in a different way?

Have you participated in a project in which members’ responsibilities were adjusted as needs arose?

Past Experience and Evidence

Show evidence of your past projects. What did you do? Is it an individual project or a team project? What are your contributions?

How long would you stay in this project. It is strongly encouraged that each person stays in this team for at least two semesters.

Research Projects

Please explain which of Dr.Lu’s research projects interests you the most. Why? How would you fit in this project?

Explain why you want to join this project. How much do you know about this project? How would you contribute to the project?

Who would benefit from the success of this project? Why? How?

What knowledge and skills do you have? Why do you think you can contribute to the project?

If you could redesign the project from the beginning, what differences would you make?

Given the current state of the project, what are the most important improvements needed by the project?

What factors are most likely to cause the project to fail? How would you prevent the failure?

Project Management and Team

Describe the tools, procedures, and methodologies you use for project management

Have you worked in a team project? How big was the team?

Can you describe the ideal characteristics of team members?

Did you have experience working with a difficult team member? Why is this member difficult? What did you (or anyone else in the team) do to manage the situation?

How would you handle the situation when a team member is intelligent, highly-motivated, has solid technical skills but does something that is not the team’s priority?

When a team member writes a report that does not provide sufficient details for you to work together, what would you do? How would you prevent this from happening?

Logic Thinking

Alice is younger than Bob. Bob is younger than Cathy. Thus, Alice is definitely younger than Cathy.

Alice and Bob are friends. Bob and Cathy are friends. Thus, Alice and Cathy are definitely friends.

It has been observed that owners of luxurious vehicles are richer than average people. Thus, if a person wants to become rich, this person should purchase a luxurious vehicle.

Alice says, “If an event is observed, it is definitely possible.” Bob says, “The opposite is also true. If an event is never observed, it is definitely impossible.” Which one is correct? Alice? Bob? Both? Neither?

A pharmaceutical company wants to understand the effects of a new medicine. The researchers give this new medicine to lab animals andnothing else. Within six days, all lab animals are dead. The researchers conclude that the medicine is toxic and should never be used for treatment. Do you agree with this conclusion? Explain your answer.

It is expected that every student in his group has the programming skills described in his book “Intermediate C Programming” (CRC Press, ISBN 9781-4987-11630). Knowledge about the following topics would be helpful: data structures, discrete mathematics, algorithms, computer architecture, operating systems, and networks.

Algorithms and Discrete Mathematics

Briefly describe binary search.

How is binary search done in a sorted array? How is binary search done in a binary search tree?

What is the best case (in terms of time or the number of operations) when doing binary search in a sorted array? What is the worst case when doing binary search in a sorted array?

What is the best case when doing binary search in a binary search tree? What is the worst case when doing binary search in a binary search tree?

In a graph with positive weights for the edges, describe an algorithm to find the shortest path between two vertices. Hint: “Dijistra’s algorithm” is not an acceptable answer. An acceptable answer must describe how the algorithm works.

Suppose you have an algorithm that finds the shortest paths in a graph of positive weights for edges. Would the algorithm find the longest paths, without cycles, in a graph of positive weights for edges if you replace “>” by “<=” or “>” by “>=”? Explain the reason.

Continue from the previous question. Describe an algorithm to find the longest path between two vertices without any cycle. Why is it important to emphasize that cycles are not allowed? Hint: Changing < in the algorithm for shortest paths to > wouldnotwork. Please explain the reason.

Why is quicksort quick?

Data structures

Binary tree is a widely used data structure. Why is “binary” sufficient? Is trinary tree better? In what ways? Why do most books not emphasize trinary tree?

Describe two ways in a computer program to store a graph. Explain the advantage and disadvantage of these two ways.

Describe two sorting algorithms. Explain the advantage and disadvantage of these two algorithms.

You need to design sorting algorithms for two different scenarios.

  1. The machine has a very large amount of memory (with uniform access time) and all data can fit into the memory.

  2. The amount of data exceeds the memory capacity and thus only part of the data can fit in memory. The rest of the data must reside on much slower disks.

Would the sorting algorithms be different for these two scenarios? How?

Describe the most important difference between a linked list and a binary tree. Why is this the most important?

What are the differences between a list and an associate array? When would you use one or the other?

How would you implement an associative array?

Two binary tree have the same shape if they have the same numbers of nodes on the left and the right sides at each level. For n distinct numbers, there are n! different permutations. If these numbers form binary search trees, how many different shapes will there be? Is that n!?

How would you store a very large array whose most elements are zero?

How would you store a very large matrix whose most elements are zero?  What matrix operations would be easy in this data structure? What operations would be more difficult? Why?

Programming (independent of language)

What is stack memory? How is it used?

What is heap memory? How is it used?

When would you use recursion? You can describe general principles or examples. When is recursion better than for (or while) for solving problems? Hint: the Fibonacci sequence, f(n) = f(n-1) + f(n-2), is not a good example of recursion. Please read Section 13.6 in “Intermediate C Programming”.

What is memory leak? Why is it a problem?

What is call by value? What is call by reference?

What is unit test? What is integration test?

What version control tool(s) do you use? What is the purpose of version control?

Explain how you debug programs.

C Programming

int  * iptr;  /* what is the size of iptr? */
char * cptr;  /* what is the size of cptr? */

char x = 'm';
int * iptr = &x;

What is wrong with this two lines? What problems could this cause?

void f(void)

What would happen when f() is called?

Object-Oriented Programming (independent of language)

What is encapsulation? Why is it important?

What is inheritance? How can it be used?

What is polymorphism? How is it used?

What are the main differences between a class and a structure in C (or a record in Pascal)?


Briefly explain the difference between TCP and UDP.

If you need to write a pair of programs to send and receive files, what network protocol would you use? Options include (but are not limited to) TCP, UDP, HTTP, SSL, Wifi. Explain your answer.

What is the fastest network (in terms bytes per second) today? What is the data rate?

What is the data rate (in terms of bytes of second) if a cargo ship carries 100,000 of hard disks cruising at 36 km/h?


If a candidate knows C++ or Java, the candidate should answer the following questions.


Explain the purpose of virtual.

What is a copy constructor? In what condition can the default copy constructor be used? In what condition must a programmer write a different copy constructor? Hint: understand the difference between shallow and deep copy.

Is every valid C program also a valid C++ program? Explain your answer. Hint: Many people answer this question without thinking. Consider the keywords in C and in C++.

Explain the difference of call by value and call by reference for C++ programs.


What are the differences between a class and an interface?

Explain two meanings (there are more than two) of the word final in Java programs.

What are the differences between int and Integer?

In Java, List is an interface and ArrayList is a class. What does this mean?

Machine Learning

Briefly explain deep learning.  Why is it called “deep”?

Why probability is essential in machine learning?

What is the difference between supervised learning and reinforcement learning?

What are the limitations of support vector machines?