HomeAboutSolutionsTechnologyCareersNews & EventsContact Us
Why Work at ITA Software

Search for Jobs:  
 

Java Software Engineer - GUI for Innovative Data-Integration Website

Are you that rare person who enjoys both optimizing algorithms and making a dynamic website look beautiful? Would you like to help build the initial public deployment of a cool new web service? Are you interested in learning more about machine learning, data integration, and the Semantic Web? If so, we have the perfect job for you.

Responsibilities:

• Build complex web application pages, from the web interface to the middleware
• Collaborate closely with designers in taking a design from idea to a reality

Qualifications:

We use the following technologies:
• Java 6
• Struts, JSP/JSTL
• DHTML, CSS, JavaScript, Ajax, jQuery, JSON
• Tomcat, Eclipse, Subversion, Bugzilla

Special Knowledge/Skills Required:

• A passion for implementing excellent and creative user interfaces
• Experience working on first-generation products
• Knowledge about the distinctions between browsers
• Exceptional programming and computer science skills
• Strong work ethic, self-directed nature, strong team player.
• Experience with agile or iterative development


How to Apply
If you are interested in this position, please solve one of the puzzles below and send your solution with your resume to us via this link.


Puzzles:

Please select and solve one of the puzzles below to give us an idea of your problem-solving ability and coding style. Unless otherwise specified, you may use any freely-available language you like. Puzzles submitted in C++, Lisp, Python, Java or Perl will be reviewed most promptly, because those are the languages we use every day; if you choose another language, it may take us longer. No pseudo-code, please! In your submission email, along with your source code, please include your program's final answer; a brief (1-2 paragraph) description of your approach and any trade-offs you made (say, for generality, speed, or ease of implementation); and instructions on how to test your program. In order to ensure that your puzzle solution does not get caught in our mail filters, you should zip the source code file(s) and name the archive "Programming_Puzzle_Submission-NameofthePuzzleyouSolved" e.g. "Programming_Puzzle_Submission-RollYourOwnChatServer.zip".

  Optimal Ghost
In the game of Ghost, two players take turns building up an English word from left to right. Each player adds one letter per turn. The goal is to not complete the spelling of a word: if you add a letter that completes a word (of 4+ letters), or if you add a letter that produces a string that cannot be extended into a word, you lose. (Bluffing plays and "challenges" may be ignored for the purpose of this puzzle.)

Write a program that allows a user to play Ghost against the computer.

The computer should play optimally given the following dictionary: WORD.LST. Allow the human to play first. If the computer thinks it will win, it should play randomly among all its winning moves; if the computer thinks it will lose, it should play so as to extend the game as long as possible (choosing randomly among choices that force the maximal game length).

Your program should be written as a Java web application that provides a basic GUI for a human to play against the optimal computer player from inside the Firefox browser. The web page should access a server using JavaScript's XMLHttpRequest object, and display the results using DOM manipulation.

Please submit your source code, configuration instructions, and any comments on your approach. Please also include a WAR file that we can test against Tomcat 5.5.x on Sun's J2SE 6.0. Finally, in your submission email, answer this question: if the human starts the game with 'n', and the computer plays according to the strategy above, what unique word will complete the human's victory? 
 


 Instant Search

Write a Java web application which provides "instant search" over properties listed in the National Register of Historic Places. Rather than waiting for the user to press a submit button, your application will dynamically update search results as input is typed. We provide the file nrhp.xml.gz, which contains selected information from the register's database.

Database
The key component of your server-side application is an efficient, in-memory data structure for looking up properties (written in pure Java). A good solution may take several minutes to load, but can answer a query in well under 0.1 ms on a modern PC. (Note that a sequential search of all properties is probably too slow!) An input matches a property if it is found at any position within that property's names, address, or city+state. Matches are case-insensitive, and consider only the characters A-Z and 0-9, e.g. the input "mainst" matches "200 S Main St" and "red" matches "Lakeshore Dr." Note that the server's JVM will be configured with 1024M maximum heap space. Please conform to the interfaces specified in nrhp.jar when creating your database.

Servlet
Your servlet should accept an input string as the request parameter to a GET request. Results should include the information for a pre-configured number of properties (e.g. 10), the total number of matches which exist in the database, and the time taken by your search algorithm. Your servlet should be stateless, ie. not depend on any per-user session information. Paginate your additional results as a bonus!

Client Your web page should access the servlet using JavaScript's XMLHttpRequest object. As the user types, your interface should repeatedly refine the list of search results without refreshing the page.

Please submit a WAR file, configuration instructions, your source code, and any comments on your approach. Your application will be tested with Tomcat on Sun's 64-bit J2SE and a recent version of Firefox.

Resources XMLHttpRequest, StAX, Apache Tomcat, Mozilla Firefox, Eclipse



 

Don't see the perfect job for you?  Sign up for our RSS feed.

 

 

 

 

 
  Contact Us


See all jobs
 

 

Home    |    About    |    Products    |    Technology    |    Careers    |    News & Events    |    Contact

Copyright 2008 - ITA Software    |    Site Map   |    Privacy Policy    |    Acknowledgements   |   Terms of Use