- What's the difference between a linked list and an array?
- Implement a linked list. Why did you pick the method you did?
- Implement an algorithm to sort a linked list. Why did you pick the method you did? Now do it in O(n) time.
- Describe advantages and disadvantages of the various stock sorting algorithms.
- Implement an algorithm to reverse a linked list. Now do it without recursion.
- Implement an algorithm to insert a node into a circular linked list without traversing it.
- Implement an algorithm to sort an array. Why did you pick the method you did?
- Implement an algorithm to do wild card string matching.
- Implement strstr() (or some other string library function).
- Reverse a string. Optimize for speed. Optimize for space.
- Reverse the words in a sentence, i.e. "My name is Chris" becomes "Chris is name My." Optimize for speed. Optimize for space.
- Find a substring. Optimize for speed. Optimize for space.
- Compare two strings using O(n) time with constant space.
- Suppose you have an array of 1001 integers. The integers are in random order, but you know each of the integers is between 1 and 1000 (inclusive). In addition, each number appears only once in the array, except for one number, which occurs twice. Assume that you can access each element of the array only once. Describe an algorithm to find the repeated number. If you used auxiliary storage in your algorithm, can you find an algorithm that does not require it?
- Count the number of set bits in a number. Now optimize for speed. Now optimize for size.
- Multiple by 8 without using multiplication or addition. Now do the same with 7.
- Add numbers in base
*n*(not any of the popular ones like 10, 16, 8 or 2 -- I hear that Charles Simonyi, the inventor of Hungarian Notation, favors -2 when asking this question). - Write routines to read and write a bounded buffer.
- Write routines to manage a heap using an existing array.
- Implement an algorithm to take an array and return one with only unique elements in it.
- Implement an algorithm that takes two strings as input, and returns the intersection of the two, with each letter represented at most once. Now speed it up. Now test it.
- Implement an algorithm to print out all files below a given root node.
- Given that you are receiving samples from an instrument at a constant rate, and you have constant storage space, how would you design a storage algorithm that would allow me to get a representative readout of data, no matter when I looked at it? In other words, representative of the behavior of the system to date.
- How would you find a cycle in a linked list?
- Give me an algorithm to shuffle a deck of cards, given that the cards are stored in an array of ints.
- The following asm block performs a common math function, what is it?
`cwd xor ax, dx`

sub ax, dx - Imagine this scenario:

I/O completion ports are communictaions ports which take handles to files, sockets, or any other I/O. When a Read or Write is submitted to them, they cache the data (if necessary), and attempt to take the request to completion. Upon error or completion, they call a user-supplied function to let the users application know that that particular request has completed. They work asynchronously, and can process an unlimited number of simultaneous requests.

Design the implementation and thread models for I/O completion ports. Remember to take into account multi-processor machines. - Write a function that takes in a string parameter and checks to see whether or not it is an integer, and if it is then return the integer value.
- Write a function to print all of the permutations of a string.
- Implement malloc.
- Write a function to print the Fibonacci numbers.
- Write a function to copy two strings, A and B. The last few bytes of string A overlap the first few bytes of string B.
- How would you write qsort?
- How would you print out the data in a binary tree, level by level, starting at the top?

## Applications

- How can computer technology be integrated in an elevator system for a hundred story office building? How do you optimize for availability? How would variation of traffic over a typical work week or floor or time of day affect this?
- How would you implement copy-protection on a control which can be embedded in a document and duplicated readily via the Internet?
- Define a user interface for indenting selected text in a Word document. Consider selections ranging from a single sentence up through selections of several pages. Consider selections not currently visible or only partially visible. What are the states of the new UI controls? How will the user know what the controls are for and when to use them?
- How would you redesign an ATM?
- Suppose we wanted to run a microwave oven from the computer. What kind of software would you write to do this?
- What is the difference between an Ethernet Address and an IP address?
- How would you design a coffee-machine for an automobile.
- If you could add any feature to Microsoft Word, what would it be?
- How would you go about building a keyboard for 1-handed users?
- How would you build an alarm clock for deaf people?

## No comments:

## Post a Comment