Skip to content

Interview Preparation

Introduction

So, my name is Daniel, I did my studies on computer science. I have a PhD on the topic of Digital Geometry and Optimization and some published papers in this domain. I quit academia after the defense of my PhD and I started working as Software Engineer at my current company.

In my current position, I am part of the Natural Language Understanding team, which is responsible to decode speech into actions. I worked on several geolocalization domains that are used worldwide in millions of cars to help drivers and passengers to navigate to places and addresses.

Last year I moved to a new team and we are currently working on a solution to take calls on behalf of business.

Previous projects

At my current company we create voice interfaces for products. Several of our clients are auto makers and we create voice products to their cars. Among the requirements the driver should be able to control the windows, the climatization and the radio by voice. Another big component is the search and navigation to addresses or places of interest. I worked for a couple of years in the latter.

To put it simply, when the driver says: "Go to Paris"", the navigation system should start and give directions to Paris.

But we can have much more complex search queries because the system accept filters.

"Search for a place where I can eat some spaghetti of a good quality, I do not pay too much and there is free parking available".

My main task was to decode the user's utterance into actions.

Among the challenges, I can tell:

  • Integration with custom data providers: TomTom, Yelp, Here.
  • Conditioning.
  • Ambiguity handling.

Conditioning is the process of generating all the natural language expressions that could be mapped to a place or to an address. We want that "Go to Louvre" be recognized as "Go to the museée du Louvre".

Therefore, conditioning enables the system to recognize a much higher number of instructions. On the other hand, it also increases the number of false positives.

It is very common that we allow matching a place name without articles, prepositions and the category to which it belongs to: Therefore: "Café de l'église" and "Église" could be mapped to the same POI "Café de l'église".

Therefore, we have to consider several heuristics to help us with that: - Requires context: Requires saying the category. - Distance: Give a higher weight to a closer POI.

Other examples: - Rue du Mesnil / Rue Octave du Mesnil - Restaurant Paris / Restaurant à Paris

Other topics

  • Embedded version.
  • Deployed in several languages.
  • CI solution with a suite of tests that must succeed before merging.
  • Live-testing: The final application is tested in its ultimate form.

Datadog question

  • What team are you part of?
  • What was the most challenging task you have done while working at Datadog?
  • How do you keep updated in our field? Does datadog encourages you to take some time to improve yourself?

  • Datadog agent (collect metrics on containers)

  • Datadog central dashboard.
  • Does datadog is a log processor? Where the metrics come from? Does datadog obtain them via container monitoring or from log reading?

  • 3rd generation event store

  • Husk deep dive
  • Efficient compaction
  • Faulty deployment
  • Anomaly detection

First Technical Interview

  • Prepare an introductory speech highlighting the main points of your career so far.

  • Be prepared to talk about a big project you collaborated. Be ready to give a big picture of the system but also detailed explanations for the part you were working.

I am thinking to talk about Local Places Queries, the ingestion of data provider data, conditioning and challenges on Natural Language Understanding.

Use the STAR method (Situation, Task, Action, Result).

I can also talk about one personal project.

Be ready to be asked about volume, testing and security.

  • The given problem is not a straightforward leetcode problem. It is expected that you need to ask several clarifying questions in order to get a full grasp of the problem to be solved.

Think about:

  • Edge cases
  • How to test the solution
  • What is the fastest way to get with a working solution
  • How to optimize it?
  • What are the space and time complexities?

  • It is expected that you master the language you choose the code. The keyword here is consistency. But it is a good thing to be up to date with the language best practices, including style.

  • At the end, do an effort to ask questions about the company itself. Be honestly interested in the question you ask.