Arrow functions
Classes
Modules
Promises
Template strings
Destrcuturing object, array
Spread and rest operator
Let & const keywords
For–of iterator
Map + Set + WeakMap + WeakSet
Generators
Symbols
Proxies
Improved support for Unicode
Tail call optimisation
Subclassing built-ins
We have a function that uses var and a traditional function expression; how would you rewrite it using let/const and an arrow function?
If you need to concatenate several strings and embed variables, what ES6 syntax would you use and why?
Show me how you would import a named export and a default export from an ES6 module in a small script.
After converting a prototype‑based object to an ES6 class, a method that used to be inherited is now undefined—what could have gone wrong?
Your team switched a callback chain to use Promise.then, but an error isn’t being caught; can you walk through why that might happen?
You replaced a for loop with a for…of loop on a large array and noticed a slowdown; what factors would you investigate?
Design a module loading strategy for a front‑end application of 200+ components using ES6 import/export versus a bundler like Webpack; what trade‑offs do you consider?
We need to migrate a legacy codebase that heavily uses callbacks to async/await; how would you approach the refactor while preserving error handling and test coverage?
When cloning a deep object in a performance‑critical path, would you use the spread operator, Object.assign, or a utility library? Explain the impact on memory and speed.
Our organization has dozens of services written in CommonJS; we want to move to ES6 modules across the board. How would you plan the migration to minimize breakage and support both module systems during the transition?
Discuss the long‑term maintenance implications of adopting ES6 features like Symbol and Proxy in a public API library that must support older runtimes.
How would you evaluate the benefits of native ES6 tree‑shaking versus a custom build pipeline when scaling a monorepo of UI components?