HomeAboutSolutionsTechnologyCareersNews & EventsContact Us
Why Work at ITA Software

Search for Jobs:  
 

Java Software Engineer (Internet Booking Engine)

ITA Software seeks experienced software engineers to build the next generation of airline web sites. Our IBE (Internet Booking Engine) will allow airlines to quickly deploy and integrate with our QPX low-fare search engine as well as their existing reservation system.

Responsibilities:

• Integrate with existing reservation systems.
• Help build modular Web 2.0 front-ends that will be used by different airlines.
• Identify and analyze requirements for an IBE.

Qualifications:

Experience with several or all of the following:

• Building airline or online travel agency web sites.
• Building or integrating with booking engines.
• Building or integrating with airline reservation systems.
• Java/J2SE/J2EE (preferred) or .NET.
• JavaScript, Ajax, DHTML, CSS, XML.
• Web frameworks, Spring, ORMs like Hibernate.
• Tomcat, other application servers.
• Eclipse or IntelliJ, Maven 2, Subversion.

Special Knowledge/Skills Required:

• Experience in implementing large, working software systems as a software engineer in the travel industry.
• Demonstrate exceptional programming skills and be willing to code full time; i.e., candidate will take responsibility for implementing finished products based on designs developed.
• Should be highly self-directed, a strong individual contributor, and a strong team player.


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".

 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



 Palindromic Pangram
A palindrome is a sequence of words like "lid off a daffodil" or "shallot ayatollahs" that uses the same letters reading backwards as forwards. The words need not form a meaningful or grammatical sentence.

A palindromic pangram is a multi-word palindrome that includes all 26 letters of the alphabet. Find the shortest sequence of words that is both a pangram and a palindrome. Use this dictionary: WORD.LST (1.66MB).


  Sling Blade Runner
"How long a chain of overlapping movie titles, like Sling Blade Runner, can you find?"

Use the following listing of movie titles: MOVIES.LST. Multi-word overlaps, as in "License to Kill a Mockingbird," are allowed. The same title may not be used more than once in a solution. Heuristic solutions that may not always produce the greatest number of titles will be accepted: seek a reasonable tradeoff of efficiency and optimality.
 

Data provided by MovieLens at the University of Minnesota.



 The O'Hare Affair

Objective You want to meet a friend at O'Hare airport at noon and return home the same day. Given a date and an origin airport, find the pair of nonstop flights that gets you to Chicago and home again on that date, minimizing your total time away from home, subject to the constraint that you are at O'Hare at noon.

Details Your program, which must be written in Java, will work by scraping our http://matrix.itasoftware.com website. Create an account on that site called "candidate_YourName" for your program to use. (Please include your name and email address in your registration in case we need to contact you.) Your program should accept two command-line inputs as follows:

   java -jar OHareAffair.jar YYYY-MM-DD airportCode
The program should log in to matrix.itasoftware.com with your candidate_YourName account and pose a round-trip query between the given airportCode and O'Hare (ORD), limited to nonstop flights only, using BOS as the sales city, with appropriate date and time constraints. The program should then scan the resulting solution set for solutions that meet the objective specified above. No more than 15 http requests should be made of matrix.itasoftware.com per invocation. Finally, details of the three shortest solutions (breaking ties arbitrarily) should be written out in human-readable form to the console.

For example, for a traveler from Baltimore on July 4th, your program might be invoked as follows:

   java -jar OHareAffair.jar 2006-07-04 BWI
Sample output:
   Travelling round-trip from BWI to ORD on 2006-07-04:

Trip length: 6:21
Outbound: American Airlines Flight AA3991 (10:03a-11:04a)
Return: United Airlines Flight UA1236 (1:30p-4:24p)

Trip length: 6:39
Outbound: United Airlines Flight UA641 (9:45a-10:47a)
Return: United Airlines Flight UA1236 (1:30p-4:24p)

Trip length: 6:54
Outbound: American Airlines Flight AA3991 (10:03a-11:04a)
Return: American Airlines Flight AA4009 (2:09p-4:57p)

Strive to make your code clean and robust, and to report errors cleanly. Be sure to include your source, any necessary libraries, and instructions on how to run it.



  Word Numbers
 "If the integers from 1 to 999,999,999 are written as words, sorted alphabetically, and concatenated, what is the 51 billionth letter?" 

To be precise: if the integers from 1 to 999,999,999 are expressed in words (omitting spaces, 'and', and punctuation[1]), and sorted alphabetically so that the first six integers are

  • eight
  • eighteen
  • eighteenmillion
  • eighteenmillioneight
  • eighteenmillioneighteen
  • eighteenmillioneighteenthousand
and the last is
  • twothousandtwohundredtwo
then reading top to bottom, left to right, the 28th letter completes the spelling of the integer "eighteenmillion".

The 51 billionth letter also completes the spelling of an integer. Which one, and what is the sum of all the integers to that point?

[1] For example, 911,610,034 is written "ninehundredelevenmillionsixhundredtenthousandthirtyfour"; 500,000,000 is written "fivehundredmillion"; 1,709 is written "onethousandsevenhundrednine".



 

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