Taro Logo

Senior Front End Developer Interview Experience

October 1, 2017
Negative ExperienceGot Offer

Process

The interview process involved the following stages:

  • Applied online.
  • Had a 30-minute chat with a manager who was very arrogant and rude.
  • Then had another 30-minute chat with a tech lead who was a nice person.
  • Subsequently, I had a phone screen with a senior engineer who was astoundingly arrogant and picky with his own code style preferences. They asked two super easy questions and one tricky question, which seemed designed as a trap to confuse candidates (it included hoisting, immediate functions, etc.).

In general, I spoke with three individuals and felt they were generally arrogant. There might be a pattern.

I decided to stop the interview from my side, even though I was asked to proceed to a final round.

Questions

Serialize IDs from a nested tree of items

javascript const data = [ { id: 1, items: [{ id: 4, items: [{id: 5}, {id: 6, items: [{id: 8}]}]}]}, { id: 2, items: [{ id: 7}]}, { id: 3 }, { id: 9, items: [{id: 10, items: [{id: 12}]}, {id: 11}] } ];

// Should return [1, 2, 3, 9, 4, 7, 10, 11, 5, 6, 12, 8]

Outer join two arrays

javascript const a = [ { id: 3, name: 'Matt' }, { id: 4, name: 'Greg' }, { id: 1, name: 'David' }, { id: 2, name: 'John' } ] const b = [ { id: 7, position: 'Outlier' }, { id: 2, position: 'Leader' }, { id: 3, position: 'Captain' }, { id: 6, position: 'Rogue' }, { id: 4, position: 'VP' }, { id: 5, position: 'Pawn'} ]

Should create the following joined array:

javascript [ { id: 1, name: 'David', position: null }, { id: 2, name: 'John', position: 'Leader' }, { id: 3, name: 'Matt', position: 'Captain' }, { id: 4, name: 'Greg', position: 'VP' }, { id: 5, position: 'Pawn', name: null }, { id: 6, position: 'Rogue', name: null }, { id: 7, position: 'Outlier', name: null } ]

Give me the output console for the following piece of code:

javascript var foo = 'foo'; function bar() { setTimeout(() => { console.log(foo); }, 0); console.log(foo); console.log(bar()); console.log(foo); var foo = 'bar'; function bar() { foo = 'bartwo'; } console.log(foo); } bar(); console.log(foo);

Console Output Explanation:

  • console.log(foo); (inside setTimeout): foo will be 'bar' because setTimeout callbacks execute after the current execution context finishes, and by then foo has been reassigned to 'bar'.
  • console.log(foo); (immediately within bar): foo will be 'foo' as it's the initial value before any reassignments within bar.
  • console.log(bar());: This will execute the inner bar function. The inner bar sets foo to 'bartwo'. The bar() call itself returns null. So, this line logs null.
  • console.log(foo); (after inner bar call): foo will be 'bartwo' because the inner bar function modified it.
  • console.log(foo); (at the end of bar): foo will be 'bar' because the var foo = 'bar' declaration inside bar's scope (due to hoisting) takes precedence over the foo = 'bartwo' assignment before the function redeclaration.
  • console.log(foo); (global scope, after bar()): foo will be 'foo' as the global foo was not affected by the scope of the bar function.

Corrected Console Output:

foo undefined bartwo bar foo

Was this helpful?

Interview Statistics

The following metrics were computed from 2 interview experiences for the Apple Senior Front End Developer role in United States.

Success Rate

0%
Pass Rate

Apple's interview process for their Senior Front End Developer roles in the United States is extremely selective, failing the vast majority of engineers.

Experience Rating

Positive0%
Neutral0%
Negative100%

Candidates reported having very negative feelings for Apple's Senior Front End Developer interview process in United States.

Apple Work Experiences