Creative Commons License
This work is licensed under a Creative Commons Attribution - Noncommercial - No Derivative Works 3.0 United States License.



















Technorati blog authority

My thoughts on best practices in software architecture and development as a whole (with an emphasis on Java/J2EE).

Tuesday, January 09, 2007

Some Developer Interview Questions

Seeing as my "Favorite Java developer interview questions" entry was such a hit (read "controversial") I thought I'd follow-up with some more of questions I like to ask. I don't think these are nearly as contentious (I hope!) :-)

These however are more generic in nature - not specific to Java or any language/platform. Some may be for more senior developers than others (but I've had kids out of school be able to answer them too)

And once more - I'm not providing answers - hey just use Google ;-)

Basic OO Concepts
1) Define "Polymorphism"
2) Define "Encapsulation"
3) Define "coupling"? Why do we want "loose coupling" in our systems?
4) What is "cohesion"? Why do we want "high levels of cohesion" in the modules of our systems?

Code scalability / efficiency
1) In terms of Order notation, what is the best and worst complexity for "Bubble Sort"?
2) Now "Quick Sort"
3) Now "Heap Sort"

Puzzle Questions (yes I'm starting to ask a few of these - but very software related)
1) You have an array of 10 billion objects, how would you search it most efficiently?
2) How would you implement an LRU Cache in your favorite language?

Miscellaneous
1) What process do you follow for performance tuning of an application?
2) What is "refactoring"? (Note: I'm shocked how few people know this.)
3) Name for me your top 5 practices to deliver high-quality applications on time and on budget.

Don't worry I'm not giving away my "game" - if you get past each of these there's a myriad more drill-down questions to verify you really know it. Some are also pretty "open" questions.

Labels: , ,

5 Comments:

Anonymous Anonymous said...

What is refactoring?
Oooh, oooh I know this one - Refactoring is a fancy name for renaming variables in a program. It is used to sell books, software dev tools, IDEs, etc. It is also used alot by Java people who want to appear to be high flaluntin' and productive but are unfortunately just wasting time - however not wasting time as effectively as the "Aspect Orientated* Programming" people are.

* Yes, I know.

1/09/2007 9:18 PM

 
Anonymous Anonymous said...

OK one more:
3) Name for me your top 5 practices to deliver high-quality applications on time and on budget.

1) Fire all IT/IS/Dev management
2) Live in a fantasy world where someone actually delivers usable specs and doesn't change them more than once a month.
3) Actually have a budget greater than zero.
4) Actually have a schedule with weekends and holidays off for the developers.
5) Don't use any Java, esp any Enterprise anything.

1/09/2007 9:23 PM

 
Blogger Ben said...

I wonder if the majority of quality developers remember the best and worst complexity for various sorts in terms of Order notation. I'll admit I'm relatively new to the profession and probably naive to most of the recruiting process from the recruiter's standpoint, but I think it would be good to try to discover who are the problem solvers and who are the solution "memorize-ers." Do you think these questions accomplish this?

1/12/2007 12:32 AM

 
Anonymous Anonymous said...

Those might be good questions for 2nd year students, but not for somewhat good developers :)

1/12/2007 3:27 AM

 
Anonymous Andreas said...

Well on this site I think the questions and answers are for freshers as well as experienced professionals

http://www.java-interview.com

1/22/2007 5:31 PM

 

Post a Comment

Links to this post:

Create a Link

<< Home