JTG Frontend Engineer Interview Experience
Summary
I went through multiple rounds for a Frontend Engineer role at JTG, including assessments, coding, a machine coding project, and a personal technical interview, but was ultimately rejected after the third technical round.
Full Experience
JTG Frontend Engineer Interview Experience | College Assessment - Onsite - Machine Coding - PI
I recently appeared for the Frontend Engineer role at JTG (Josh Technology Group) through my college, and I thought I would share the complete interview experience .
Round 1: College Assessment
The first assessment was mainly focused on HTML, CSS, and JavaScript.
The paper consisted of:
- HTML/CSS/JavaScript MCQs
- JavaScript code snippets
- Debugging questions
- Questions where we had to identify and fix errors in JavaScript
- Some questions required the code to pass multiple test cases
The marking scheme was a little different.
Some questions had no negative marking, while some MCQs had negative marking. The JavaScript code snippets carried around +2 marks.
I was able to clear this round.
Round 2: DSA Assessment
The second assessment was completely different.
There were 2 DSA questions, and we had to solve them in JavaScript.
I was able to solve only one question, but that was enough to get shortlisted for the onsite process.
The main difficulty for me was not necessarily the DSA itself.
The problem was JavaScript.
I had been doing DSA almost entirely in C++, and although I had used JavaScript for web development and DOM manipulation, I had never seriously practiced DSA in JavaScript.
One question involved manipulating numbers and strings and constructing the required output array.
The second question involved backtracking, where we first had to parse/convert the input into the required array structure and then perform the backtracking operation.
The logic was manageable, but writing it in JavaScript under time pressure was difficult because I was constantly thinking about syntax and JavaScript-specific ways of doing things.
Still, I managed to get shortlisted for the onsite rounds.
Round 3: Onsite Coding Round
This was the first onsite round.
We were given two coding questions, and they were quite similar to the questions from the previous DSA assessment.
Fortunately, I remembered the approach to one of the questions from the previous round, so I was able to implement it relatively quickly.
I couldn't complete both questions, but after evaluating my approach and solution, I was shortlisted for the next round.
And this is where things became much more interesting.
Round 4: Machine Coding Round
Duration: 2.5 hours
This was probably the most interesting round of the entire process.
We were asked to build a Checkers game using:
- HTML
- CSS
- JavaScript
We had to implement the actual game logic rather than just create the UI.
Some of the required functionality included:
- Creating the board
- Placing the pieces
- Moving pieces
- Flipping/capturing pieces
- Maintaining the score
- Handling turns
- Detecting game-over conditions
- Implementing the overall game flow
There was an interviewer sitting in front of us throughout the round.
He was continuously asking things like:
"What's your approach?"
"How are you planning to structure this?"
"How will you handle this particular condition?"
I was able to implement some of the functionality, but I couldn't complete the entire game within the given time.
The interviewer also gave me around 30 minutes of additional time to finish some of the functionality.
I still couldn't complete everything.
At that point, I thought I was probably out.
But surprisingly, after leaving the round, I got the result that I had been shortlisted for the next round.
That was unexpected.
Round 5: Personal Technical Interview
This was the toughest round for me.
There were two interviewers, and the interview lasted around 3 hours.
The round was heavily focused on HTML, CSS, and JavaScript, but it wasn't just theoretical questioning.
They gave me a practical frontend task.
Task: Build a Chat Widget
I had to build a chat widget where I had to:
- Create a JSON file
- Fetch/read data from the JSON
- Display the messages in the chat window
- Add new messages dynamically
- Append newly entered messages to the chat
- Resize the chat window
- Implement drag-and-drop functionality
- Handle the UI interactions using JavaScript
While I was implementing the task, the interviewers were continuously asking questions about JavaScript, HTML, and CSS.
For example:
- CSS properties
- Flexbox
justify-content- HTML fundamentals
- JavaScript concepts
- DOM manipulation
- Event handling
- Basic frontend concepts
And this is where my preparation gap became very obvious.
I had used HTML, CSS, and JavaScript in projects, but I hadn't revised the fundamentals properly before the interview.
There were several questions where I either couldn't answer or wasn't confident.
The worse part was that I confidently gave incorrect answers to a few basic questions.
That hurt because once you give an incorrect answer confidently, the interviewer naturally starts digging deeper into that topic.
The interview kept going for almost three hours.
At the end, they also gave me a graph-based problem related to the logic of a project.
I was able to explain the approach and the logic behind how I would solve it, but implementing the complete solution in JavaScript was again difficult for me.
Once again, my biggest problem wasn't really understanding the algorithm.
It was writing it comfortably in JavaScript.
I had spent years doing DSA in C++, so switching to JavaScript for DSA under interview pressure was a genuine weakness.
Result
Unfortunately, I was rejected after this round.
There were still two rounds remaining in the overall process:
- Another personal/technical interview
- HR round
One of my friends was able to clear the remaining rounds and got the offer.
My Biggest Takeaway
Looking back, I don't think my biggest problem was DSA.
My biggest problem was not being equally comfortable with JavaScript fundamentals.
I had worked with JavaScript mainly from a web development perspective. I could build things, work with APIs, manipulate the DOM, etc.
But this interview required something different.
They expected me to be comfortable with:
HTML + CSS + JavaScript fundamentals + DOM + frontend implementation + DSA in JavaScript
And I wasn't equally strong in all of them.
The interview made me realize something important:
Knowing how to build projects with a technology is not the same as knowing the technology deeply enough for an interview.
I could build frontend features, but when the interviewer suddenly asked me a basic CSS or JavaScript question, I sometimes had to stop and think.
And when DSA was given in JavaScript, the syntax itself became an unnecessary obstacle.
If I had properly revised HTML, CSS, and JavaScript fundamentals and practiced DSA in JavaScript beforehand, I genuinely think the experience would have been very different.
Overall Experience
Overall, the process was quite intense.
The progression was roughly:
College MCQ/Frontend Assessment ↓ DSA Assessment in JavaScript ↓ Onsite Coding ↓ 2.5 Hour Machine Coding: Checkers Game ↓ 3 Hour Personal Technical Interview: Chat Widget + Frontend Questions + Graph Problem ↓ Personal Interview 2 ↓ HR
I couldn't make it through the third technical/personal round, but the process itself gave me a very clear picture of what I need to improve.
If you're preparing for a Frontend Engineer/Product Engineer role, don't only prepare frameworks like React.
Make sure your fundamentals are solid:
- HTML
- CSS
- JavaScript
- DOM
- Events
- Flexbox/Grid
- Async JavaScript
- API handling
- JavaScript coding
- DSA in JavaScript
- Machine coding
- Problem-solving
Because during an interview, you don't get to choose which part of your knowledge the interviewer tests.
That's my complete JTG Frontend Engineer interview experience.
Hope this helps someone preparing for the process.
Interview Questions (2)
Checkers Game Implementation
Build a Checkers game using HTML, CSS, and JavaScript. Required functionality includes creating the board, placing pieces, moving pieces, flipping/capturing pieces, maintaining the score, handling turns, detecting game-over conditions, and implementing the overall game flow.
Chat Widget Frontend Task
Build a chat widget that: creates a JSON file, fetches/reads data from the JSON, displays messages in a chat window, adds new messages dynamically, appends newly entered messages to the chat, resizes the chat window, implements drag-and-drop functionality, and handles UI interactions using JavaScript.