Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

We are continually revamping our front end developer test that we do in-house after a candidate has passed an online test. The online test has questions such as:

  • How does a for loop start?
  • What is the correct way to write a JavaScript array?
  • Write the css selector for the 3rd list item within an ordered list with the id "myList"
  • For var shoppingList = ["milk", "dumplings", "bread"]; - how would you return dumplings into a variable named groceryItem?
  • FizzBuzz

So we cover the basics, and try to get an insight into their knowledge.

But, in house, we really want to test their problem solving skills, their logic approach, etc. And I don't think we've found a good way to do that for front end developers. For UI guys, it's easier - we give them a design challenge and a white board and see if they ask for more information, how they approach the problem, etc.

But we haven't found a way to replicate this approach with web developers (for the record, I am one of the web developers on the team)

Thoughts on how to approach?

share|improve this question
1  
For starters, what are "good" problem solving skills and logic approaches? Maybe defining these, at least what you are looking for in some abstract way, would be a start. Then you can consider methods to test for them. BTW I'm not trying to be snarky :D –  Jason Holland Aug 16 '12 at 15:07
    
So you know what to ask UI developers (UI another form of front-end), and don't know what to ask your web-frontend developers? Don't you expect your web developers also to solve a design challenge at the white board and ask for more information? –  Doc Brown Aug 16 '12 at 15:11
    
@DocBrown - well, asking a UI/IA how to conceptualize organzing data is slightly different than a front-end web developer. So I'm trying to figure out what question to pose to get the same sort of q & A –  Jason Aug 16 '12 at 15:29
    
That's all you ask for a front-end developer to know? –  Evan Plaice Aug 16 '12 at 18:05
1  
For the online testing I can suggest tests4geeks.com/test/html-css-javascript. It has 60 questions in HTML, CSS and JavaScript. For the in-house testing you could ask the programer to develop the folowing scenario. You have the html-page. Page has the list of CARS and the left panel with filters (model, engine, year, etc). When you change any option, the list refreshes automatically. There is no any server requests, we have initial list of cars as array of JavaScript objects. –  Joseph Jul 12 '13 at 7:47
show 2 more comments

2 Answers

up vote 8 down vote accepted

Switch it up, get the interviewee talking about past experience...

What will really help separate the wheat from the chaff is questions that drill deeper and require context to answer. Past experience is the best context but even theoretical answers show at the minimum some level of understanding.

Ask about process/tools:

What toolchain do you use to troubleshoot designs?

Using alert() as a print statement is all good but the turnaround for debugging is slow and it won't provide any help when it comes to making AJAX calls. Many experienced developers leverage tools like Firebug and Google Developer Tools because they show a much more in-depth analysis of what may be causing the problem.

I haven't used Firebug in quite a while but the Developer Tools built into Chrome allow you to inspect any element on the page by right-clicking on it which saves a ton of time that would be spent searching the source. It highlights elements on the page when you mouseover elements in the code.

How do you assess and improve page-loading performance?

Extremely important, especially since google added page load times to their ranking metrics. Being able to analyze load times and pinpoint potential bottlenecks is extremely important. There is no single hard/fast rule, there are about 100 and more experienced designers will be aware of many.

What program do you prefer to write code?

More experienced developers prefer more control over the source so they will probably use an enhanced plaintext editor (ex Notepad++) whereas a more green developer may still be dependent on the structure and documentation provided by a larger environment (ex Dreamweaver).

Ask questions about design

Would you use a table-based, relative, or absolute based layout structure?

A person who would say table probably has outdated knowledge of design. Relative and absolute are both good on their own for specific uses but mixing them both can be even better. A person who can articulate why with detail probably has a lot of experience dealing with more difficult design decisions.

How would you implement a rollover effect on an image button?

This is a very low level question. The 'right' answer is to use a css hover attribute but somebody who has weak design knowledge will prefer to implement a dual show/hide function in Javascript.

What are sprites and why would you use them?

Sprites can be a pain to implement initially but they can drastically cut down on the number of HTTP requests required to load a page. Somebody with solid knowledge of how HTML pages are loaded/assembled should be able to go into great detail about this topic.

Ask questions about APIs

Have you ever used an API?

As HTML and Javascript become more powerful, there will be a push to do more and more work on the client. It makes sense because it cuts down on cost on the server-side. Anybody who has done any sort of significant front-end development has most likely worked with an API. Whether it's Google Analytics, Twitter, Disqus, or just AJAX. I would consider knowledge of how to leverage API's to be vital to front-end development.

Have you ever designed a client-side API, what did it accomplish?

Yes, there are purely client-side APIs all over. jQuery, Prototype, and Underscore are the big 3 but there are many thousands of smaller API libraries and/or plugins that serve a specific purpose. If you're talking to an experienced dev, they may have grown beyond the 'look for a library' to the 'scratch an itch and write it yourself' stage. There are good reasons to choose one that has already been written, and there are good reasons to write your own, it all depends on the context.

Have you worked with AJAX, if so what format was the response and how was it handled?

Getting into more advanced territory but somebody who knows their stuff will be able to elaborate.

A AJAX request won't respond, how do you find the problem?

Usually, falls along the lines of checking the Javascript console to see if an error (usually 500) was returned and/or checking the HTTP header of the received packet.

JSONP, what is it and why is it useful?

See if they understand what cross-site-scripting protection is and how to get around it in a 'safe' manner.

Client-Side or Server-Side questions

Validation, do it on the front-end or back-end?

Kind of a trick question but the answer should be both. Verify that the fields are not empty and match the constraints. They should also be further sanitized and sanity-checked on the server.

What is an example of something that can't be done on the front-end?

Shows a better understanding of the limitations. For instance, email can't be done on the client because it requires a SMTP/POP/IMAP server to send/receive messages.

What is a REST API and why is it useful?

Shows deeper knowledge of HTML. Many people, especially those that don't understand them, talk about REST APIs like they're rocket science. Somebody who has worked with one should be able to present some simple examples of usage.


One biggie that I didn't cover, and probably shouldn't be limited to one question, is the issue of how to improve performance in situations where you're either traversing or modifying the DOM.

I could probably keep going all day but that should provide a good start. There is just so much ground to cover on the client-side alone. Not to mention that front-end developers also need to know enough to interact with designers, back-end developers, and possibly a multitude of external APIs.

share|improve this answer
    
These are great questions, and we do actually ask several of these to get a sense if they are BS or not. I guess I like the idea of a whiteboard question, but not sure if that's feasible. –  Jason Aug 17 '12 at 14:44
    
@Jason In theory, whiteboard questions are a good baseline but in practice they don't really assess problem solving ability. The issue is, a person could read all of the programming books in the world and answer an unlimited number of whiteboard questions but still have absolutely no idea how to take a requirements list and design/implement it in code. –  Evan Plaice Aug 17 '12 at 20:30
    
(cont) If you were a company like Google where their developers do an unusual amount of work with advanced data structures, algorithm optimization, performance metrics, etc; then testing their baseline theoretical knowledge becomes more important. Javascript, and web development in general is 'messy'. The language itself isn't difficult but the amount of domain-specific knowledge required to step up from rollover effects to webapps takes a lot of experience and trial/failure to acquire. –  Evan Plaice Aug 17 '12 at 20:37
    
If you're really interested about how some of the larger companies approach interviews (including whiteboard questions) take a look at glassdoor.com –  Evan Plaice Aug 17 '12 at 20:46
add comment

Some examples

  • Provide bugged code, and ask for explanation and solution.
  • General trouble shooting, for example, front end devs need to know about networking protocols, dream up a scenario.
  • Always space for a crazy question like " How many camels are in Egypt", and just see how they reason it out.
  • Take some similar code, and ask to compare, and reasons for their solution

If you are looking for insights on 'problem solving skills', you need to be a little abstract, take the candidate out of their comfort zone, and really make them think.

Good luck!

share|improve this answer
    
yeah, that's what we are having issue with - dreaming up the right scenario. I do like the idea of a bat sh*t crazy question. –  Jason Aug 16 '12 at 16:32
    
"How many camels are in Egypt" This number fluctuates a lot, because roughly one camel is killed for meat every ten minutes :) –  dasblinkenlight Aug 16 '12 at 17:15
    
ha! Yes, however unfair it may seem, candidates should be aware of this type of question. If a candidate blanket gives up, you know where you stand. For scenarios, look at your day to day problems/bugs and adapt something from there? Or think of new features in your products that you could develop and some possible problems you might face. –  lwm Aug 16 '12 at 19:27
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.