[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Offtopic: How to Design Programming Tests




   X-Authentication-Warning: fast.cs.utah.edu: majordom set sender to owner-plt-scheme@flux.cs.utah.edu using -f
   Date: Thu, 1 Feb 2001 13:32:47 -0800 (PST)
   From: Noel Welsh <noelwelsh@yahoo.com>
   Content-Type: text/plain; charset=us-ascii
   Sender: owner-plt-scheme@fast.cs.utah.edu
   Precedence: bulk

   Hi all,

   I've been given the task at work of designing our Java
   test for potential programmers.  Given the recent
   discussions on this list about CS education, I thought
   many of you would have opinions about what a good
   programmer should know, and hence what a good test
   should contain.  My current proposed outline for the
   test is:

   Q1.  Java nuts & bolts.  .equals() vs ==, objects,
   classes & inhertance, packages, dispatch

good point. 

   Q2.  Write a linked list to spec.  Ability to follow
   specs and use exceptions.  Possibly defining inner
   classes.  This is mainly to prove they actually know
   Java (you'd be surprised).

write an XML tree to spec. shows them that trees matter. 

   Q3.  Sockets and servers.  How to send and receive
   messages over sockets.  The architecture of the
   typical multi-threaded server (main server thread
   dispatches to many handler threads).  The use of
   thread & database pools to improve performance and
   control load.  

stress testing first? 

   Q4.  Threads.  Code the producer/consumer. Give
   reasons for (responsiveness, blocking IO) and against
   threading (synchronisation overhead)

hmph ... 

   Q5.  Resource management.  Memory management and
   leaks.  Handling other resources - finalization and
   close.

good and why doesn't this suffice? why can a consumer not kill a run-away
applet? 

   Q6.  Design.  Given some specs do a high level design
   of a system - the major classes and interactions.

draw a class diagram and explain why diagrams are confusing :-) 

   Q7.  Random questions to assess their depth - what is
   a regular expression?  non-blocking (asynchronous) IO?
    a lexical closure/first-call function?

1. what's a context-free grammar and why does this matter for XML? 

2. what's CPS and why is it relevant to writing CGI scripts or servlets? 

3. what is a set, set union, set intersection, set inequation and why does
   this matter for understanding the flow of values in a program or which
   exceptions can be raised. 

-- Matthias