##JavaScript specific Questions
- Which JavaScript libraries have you used?
- How is JavaScript different from Java?
- What are undefined and undeclared variables?
- What is an expression?
- What is a statement?
- Give an example of a function declaration
- Give an example of a function expression
- Explain what the DOM is and some best practices for interacting with it.
- What is a closure, and how/why would you use one?
- What's a typical use case for anonymous functions?
- Explain the "JavaScript module pattern" and when you'd use it.
- How do you organize your code? (AMD, module pattern, classical inheritance)
- What's the difference between host objects and native objects?
- Explain Function.prototype.bind?
- When do you optimize your code?
- Can you explain how inheritance works in JavaScript?
- When would you use document.write()?
- What's the difference between feature detection, feature inference, and using the UA string?
- Explain AJAX in as much detail as possible
- Explain how JSONP works?
- Have you ever used JavaScript templating, and if so, what/how?
- Explain "hoisting".
- What is FOUC? How do you avoid FOUC?
- Describe event bubbling.
- What's the difference between an "attribute" and a "property"?
- Why is extending host objects not a good idea?
- Difference between document load event and document ready event?
- What is the difference between == and ===?
- Explain how you would get a query string parameter from the browser window's URL.
- Explain event delegation.
- Describe inheritance patterns in JavaScript.
- Describe a strategy for memoization (avoiding calculation repetition) in JavaScript.
- What's the best way to handle lots of arguments passed to a function?
- Have you used the Canvas element and if so what did you use it for?
- How do you debug errors in your code?
- Do you validate your code and if so what tools do you use?
- Show us how you would get the internal class of a native object, specifically an Array (e.g.
typeof [1, 2, 3]
results in 'object' which is incorrect, we want to get the actual class value which should be 'Array'). - Write a quick events library that abstracts the basic 'add' and 'remove' event listeners so they work across multiple browsers (specifically needs to work with Internet Explorer)
- Write a quick function which lets an object inherit the methods and properties from another object (you can use either an inheritance pattern or a composite pattern).
- Write a quick function which demonstrates the 'module pattern' (this pattern keeps variables and methods private and can also provide an API to allow another user to access the internal methods via 'privileged' methods).
- Write a quick function which allows the user to specify an element and to add a class to that element (being careful not to overwrite the existing classes or adding the same class twice).
- Write a quick function that truncates a String of text which is over 30 characters long (e.g. if the String of text is over 30 characters then the text is shortened to 30 characters and a '...' placed at the end to show the text has been shortened)
- What are some best practices when using a framework such as jQuery?
- What's wrong with the following jQuery code? (extra points for pointing out other issues with the HTML - inc. best practices and performance):
##General Questions
- Are you on twitter? If so who do you follow? and is there any one of interest following you!
- Are you on GitHub? If so can you show us some of your repositories and tell us a bit about why you've mentioned them specifically?
- What (if any) Version Control systems have you used? Also, which one do you prefer and why?
- What development tools do you use (e.g. IDE's such as Eclipse, or more CLI like vim)?
- What is your development environment? (e.g. do you work with Mac or Windows? do you use an IDE or basic text editor?)
- Can you describe your workflow when you create a web page?
- What is a design pattern?
- Briefly explain creatively what Object Oriented programming is.
- You need to make your site as quick as possible to load, what are some of the things you can do to help page performance?
- You need to build an online auction system that works like eBay. How would you plan and structure your code? What important aspects would you need to consider?
- You need to build the next big social networking web application. It's going to be used by millions of users. How would you plan and structure your code? What important aspects would you need to consider?
- How would you work with a group of developers on the same code base?
- Working on a website with a high volume of users, how would you push new features to the live site without disrupting the website or current users?
- What is progressive enhancement and graceful degradation?
- Explain what "Semantic HTML" means.
- What does "minification" do?
- Why is it better to serve site assets from multiple domains?
- If you have 8 different stylesheets for a given design, how would you integrate them into the site?
- What tools do you use to test your code's performance?
- If you could master one technology this year, what would it be?
- Name 3 ways to decrease page load?
- What tools do you use to analyse website performance?
- What does a doctype do?
- What's the difference between standards mode and quirks mode?
- What are the limitations when serving XHTML pages? Are there any problems with serving pages as application/xhtml+xml?
- What are data- attributes good for?
- What are the content models in HTML4 and are they different in HTML5?
- What is HTML5?
- Describe the difference between cookies, sessionStorage and localStorage.
##CSS Specific Questions
- Describe what a "reset" CSS file does and whether you think they are useful or not.
- How do you structure your CSS?
- Explain CSS sprites.
- What are the differences between the IE box model and the W3C box model?
- What are your favourite image replacement techniques and which do you use and when?
- CSS property hacks, conditionally included .css files, or... something else?
- How do you serve certain CSS features to older browsers who do not support them?
- What technique do you use to hide content?
- Have you ever used a grid system, and if so, which one and what are your thoughts on grid systems in general?
- Have you used media queries or implemented a mobile specific layout/CSS?
- How do you optimize your webpages for print?
- What are some rules for writing efficient CSS?
- Do you use CSS preprocessors? If so, describe what you like and dislike about the CSS preprocessors you have used.
- How would you implement a web design comp that uses non-standard fonts?
- What's the coolest thing you've ever coded, what are you most proud of?
- Do you have any side projects? What kind?