Two interviews

Few weeks ago, I took two tech-interviews in two start-ups for my summer-internship. In China, we are used to share the experiences of tech-interviews to benefit others. Because we could find out what does enterprise cares and it’s also a good way to improve ourselves. So, I would like to share these two small interviews with you.

Interview of MyTraffic

During the X-Forum, I had the chance to be the contact student of a start-up: MyTraffic (http://www.mytraffic.fr/). It’s a start-up who uses big data to provide advices for property business. The team is very nice and they gave me a chance to take an interview after finishing some coding exercises. I prepared a lot about machine learning because it’s strongly related to big data and I had some experience before. I even took the online course “DAT210x Programming with Python for Data Science” of Microsoft in edX to learn the python package “scikit-learn”. It’s really an excellent course who is free and self-paced and it’s worth finishing his exercises. However, the interview, who is also my first interview in my life, gave me a small surprise. It was a 100% tech-interview who contained a co-coding practice, some algorithm questions and nothing about big data/machine learning.

At first, Pierre-Victor comments on my code of two exercises that I wrote before. He talked a little about unit testing but I never heard it before. Now, if I haven’t misunderstood, unit testing is to test whether the functions that we write work well. I wrote frequently some simple codes to test my function too but I delete them quickly once it works because those codes aren’t pretty and I’d like to keep my code clean. In fact, I realized that with the unit testing system, it can be a pretty job and I don’t have to delete them if I write those tests carefully and clearly. Also, I need to pay more attention for the time/space complexity when writing codes.

Then, we did a co-coding practice, which is to write a tic-tac-toe game in Python by turns. We changed the role every five minutes. But we didn’t finish it in thirty minutes since I wrote too slow.

After the co-coding practice, they gave me two algorithm questions and I had to solve then on a whiteboard.

The first one is:

Given a series of number: n_1, n_2, n_3, … We don’t know how many numbers there are and we receive those number one by one. We need to output a set S who contains m numbers such that the possibility that n_k is in S is the same for all k = 1, 2, 3, …

It took a well for me to really understand the problem and finally with the help I found the solution:

  1. The length of the series is bigger than m, so for the first m numbers, we just put them into S, S = {n_1, …, n_m}.
  2. For k = m+1, m+2, …
    1. With the possibility of 1-m/k: we don’t change S
    2. With the possibility of m/k: we take out a number from S randomly and put n_k into S.

  1. If there are only m numbers, S = {n_1, …, n_m} is correct.
  2. If for n_1, …, n_k, the set S is correct, which means that each number has the same chance m/k to be inside. For k+1, n_{k+1} has a chance of 1-m/(k+1) of not being included in S, each number in S has a chance of m/(k+1)*(1/m) = 1/(k+1) to be taken out from S, so n_1, …, n_k has a chance of m/k*(1-1/(k+1)) = m/(k+1) to be inside S.

It’s not a difficult question but when I must think it on the whiteboard, it becomes different. Actually, for problems like this, it’s better to think about some easy cases such as m=1, then we can solve the original one.

Another problem is:

Given a network of streets (a graph) and a starting point (a vertice), output an approximate area (some vertices) that we can arrive from the starting point by giving a distance.

It seems that there were some other questions, but I couldn’t remember anymore.

Anyway, from my first tech-interview, I found that I really need more practice. Frankly, it’s always a regret for me to never receive a formal CS education. From those MOOCs, I can learn the theory but I haven’t enough time to practice. Fortunately, I have chosen some CS courses at X and I believe that it will help me a lot since there are so many small programming problems and projects. And … at last, I didn’t succeed. Need to practice more !

Interview of Keluro

Keluro (http://keluro.com/) is a start-up who develops an add-in to facilitate the management of emails. I found this start-up in the website jobteaser and Benoit contacted me quickly in two days.

I was interviewed by Skype and we used English during the whole interview. Thankfully, I can still use English to communicate without big problems! Then Benoît asked me several questions like:

  1. What’s the difference between C++ and JAVA?
    He posed this question because I wrote C++ and JAVA in my CV but it has been a long time that I didn’t write C++. So, I couldn’t even answer this question.
  2. Some basic questions of JAVA like heritage, interface.
    I know a little about this because we learned that during the Tronc Commun. But I was not so familiar with this since I had no CS course during the first period this year. During the Tronc Commun, we had no projects so we didn’t really have the chance to try all the structures.
  3. The time complexity of sorting and some algorithms of sorting.
    It’s simple. Maybe he found that I know so little that he could only ask some easy questions like this.

Then, I was asked to write a small program to guess a number in Windows PowerShell ISE. It’s a totally new language for me but it’s real interesting. For me, I’m always good at learning new things quickly but not so good at memorizing those knowledge points unless I practice them often enough. Thus, with the help of google and stackoverflow, it’s not so difficult to finish this quickly.

The code is:

To run this code, you need to run Windows PowerShell ISE as administrator and run the command “Set-ExecutionPolicy RemoteSigned” and click YES to enable the powershell. Then create a file of .ps1 and you can finally run it by F5.

At last, I mentioned that I know Git and GitHub a little and Benoît gave me several useful advices like:

  1. Make those repositories in the GitHub public, even though they are only small projects of courses.
    That’s why I begin to arrange my GitHub and write my blog again. Perhaps my articles are naïve, but they are also a proof of progress. And without these, no one can find out if you are skilled or not.
  2. Keep trying and learning new things, do not strict yourself in a small domain.
    It changed my mind. Because I used to insist on find a job in the domain of simulation since it used to be my major. However, we should never deny some possibilities without having a try. That’s why I’d like to continue to learn MAP and INF at the same time:Being skilled in these two domaines will give me more choice in the future. And I will keep learning some hot domaines like Big Data/Machine Learning/Deep Learnign/HPC, etc.

I appreciate this interview a lot because it enlarged my mind and I learned a lot. Fortunately, it’s possible to work with Keluro in the summer of 2017.

At last

Frankly, it’s really hard (much more difficult than imagined) to find an internship so short and I was upset enough when everyone said only “Your profile is interesting but the duration is too short” or just sent me an auto-email without even an excuse. But the network of AX touch me a lot. Almost every time I send emails to ask some ancient polytechniciens if there are any possibilities to have a short internship in their company, they are so nice that they transfer my CV and give me many suggestions. We should always use all the possible resources since we lose nothing by sending some emails.

BUT! Sadly, I was totally disorientated at the beginning. The school asked us to find an internship in some enterprises to discover how it works and it’s strictly forbidden to work in a research center or do some research. And I sent at least twenty CVs to CEA who is a research center. I even got a close contact with a team who could offer me a short internship. But I couldn’t take it. It’s OK. At least, I know that I’m capable of finding a job if I continue to study in the domain of PDE/Simulation since it’s not a popular domain and I was afraid of being jobless from time to time.

 

Voilà, c’est tout.

 

I hope my little experiences can inspire you more or less and everyone could find an ideal internship.