发信人: cuptea (cuptea), 信区: JobHunting
标 题: 最近的一个面试题,两小时内完成,属于什么难度
发信站: BBS 未名空间站 (Mon Dec 29 22:36:44 2014, 美东)
题目有点长,求大牛赐一个漂亮点的解法
面试要求可以在eclipse等工具下完成,可以上网用google等
ProgA
System Dependencies
Components of computer systems often have dependencies--other components
that must be installed before they will function properly. These
dependencies are frequently shared by multiple components. For example, both
the TELNET client program and the FTP client program require that the TCP/
IP networking software be installed before they can operate. If you install
TCP/IP and the TELNET client program, and later decide to add the FTP client
program, you do not need to reinstall TCP/IP.
For some components it would not be a problem if the components on which
they depended were reinstalled; it would just waste some resources. But for
others, like TCP/IP, some component configuration may be destroyed if the
component was reinstalled.
It is useful to be able to remove components that are no longer needed. When
this is done, components that only support the removed component may also
be removed, freeing up disk space, memory, and other resources. But a
supporting component, not explicitly installed, may be removed only if all
components which depend on it are also removed. For example, removing the
FTP client program and TCP/IP would mean the TELNET client program, which
was not removed, would no longer operate. Likewise, removing TCP/IP by
itself would cause the failure of both the TELNET and the FTP client
programs. Also if we installed TCP/IP to support our own development, then
installed the TELNET client (which depends on TCP/IP) and then still later
removed the TELNET client, we would not want TCP/IP to be removed.
We want a program to automate the process of adding and removing components.
To do this we will maintain a record of installed components and component
dependencies. A component can be installed explicitly in response to a
command (unless it is already installed), or implicitly if it is needed for
some other component being installed. Likewise, a component, not explicitly
installed, can be explicitly removed in response to a command (if it is not
needed to support other components) or implicitly removed if it is no longer
needed to support another component.
Input
The input will contain a sequence of commands (as described below), each on
a separate line containing no more than eighty characters. Item names are
case sensitive, and each is no longer than ten characters. The command names
(DEPEND, INSTALL, REMOVE and LIST) always appear in uppercase starting in
column one, and item names are separated from the command name and each
other by one or more spaces. All appropriate DEPEND commands will appear
before the occurrence of any INSTALL dependencies. The end of the input is
marked by a line containing only the word END.
Command Syntax Interpretation/Response
DEPEND item1 item2 [item3 ...] item1 depends on item2 (and item1 depends
on item3 ...)
INSTALL item1 install item1 and those on which it depends
REMOVE item1 remove item1, and those on whch it depends, if possible
LIST list the names of all currently-installed components
Output
Echo each line of input. Follow each echoed INSTALL or REMOVE line with the
actions taken in response, making certain that the actions are given in the
proper order. Also identify exceptional conditions (see Expected Output,
below, for examples of all cases). For the LIST command, display the names
of the currently installed components. No output, except the echo, is
produced for a DEPEND command or the line containing END. There will be at
most one dependency list per item.
Sample Input
DEPEND TELNET TCPIP NETCARD
DEPEND TCPIP NETCARD
DEPEND DNS TCPIP NETCARD
DEPEND BROWSER TCPIP HTML
INSTALL NETCARD
INSTALL TELNET
INSTALL foo
REMOVE NETCARD
INSTALL BROWSER
INSTALL DNS
LIST
REMOVE TELNET
REMOVE NETCARD
REMOVE DNS
REMOVE NETCARD
INSTALL NETCARD
REMOVE TCPIP
REMOVE BROWSER
REMOVE TCPIP
LIST
END
Output for the Sample Output
DEPEND TELNET TCPIP NETCARD
DEPEND TCPIP NETCARD
DEPEND DNS TCPIP NETCARD
DEPEND BROWSER TCPIP HTML
INSTALL NETCARD
Installing NETCARD
INSTALL TELNET
Installing TCPIP
Installing TELNET
INSTALL foo
Installing foo
REMOVE NETCARD
NETCARD is still needed.
INSTALL BROWSER
Installing HTML
Installing BROWSER
INSTALL DNS
Installing DNS
LIST
HTML
BROWSER
DNS
NETCARD
foo
TCPIP
TELNET
REMOVE TELNET
Removing TELNET
REMOVE NETCARD
NETCARD is still needed.
REMOVE DNS
Removing DNS
REMOVE NETCARD
NETCARD is still needed.
INSTALL NETCARD
NETCARD is already installed.
REMOVE TCPIP
TCPIP is still needed.
REMOVE BROWSER
Removing BROWSER
Removing HTML
Removing TCPIP
REMOVE TCPIP
TCPIP is not installed.
LIST
NETCARD
foo
END
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 104.]
Monday, December 29, 2014
最近的一个面试题,两小时内完成,属于什么难度
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment